标签: android-auto

Android自动Google Play拒绝

由于以下原因,Google一直拒绝我的应用:"在审核期间,我们发现如果在插入Android Auto体验时设备上播放音频,则音乐将继续通过汽车扬声器播放而无需用户意图.我们将此视为司机分心,并不适合Android Auto应用程序."

我认为我已经采取了相应的步骤来解决这个问题,请按照此处的文档进行操作:https://developer.android.com/training/auto/audio/index.html#isconnected

然而,出于同样的原因,他们再次拒绝了我.

在我的MediaBrowserServiceCompat StreamService类中,我添加了以下代码:

private IntentFilter androidAutoConnectionIntentFilter = new IntentFilter("com.google.android.gms.car.media.STATUS");
private AndroidAutoConnectionStatusReceiver androidAutoConnectionStatusReceiver = new AndroidAutoConnectionStatusReceiver();
Run Code Online (Sandbox Code Playgroud)

在onCreate()中,我添加了:

registerReceiver(androidAutoConnectionStatusReceiver, androidAutoConnectionIntentFilter);
Run Code Online (Sandbox Code Playgroud)

并将此类添加到服务中:

private class AndroidAutoConnectionStatusReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            System.out.println("*** ANDROID AUTO CONNECTED: " + intent);
            String status = intent.getStringExtra("media_connection_status");
            boolean isConnectedToCar = "media_connected".equals(status);
            if (isConnectedToCar) {
                // android auto connected so stop playback
                Intent stopIntent = new Intent(context, StreamService.class);
                stopIntent.setAction(StreamService.ACTION_PLAYER_STOP);
                context.startService(stopIntent);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

知道我如何更新我的应用程序以解决这种拒绝?

android android-auto

15
推荐指数
0
解决办法
671
查看次数

实现 Android Auto 语音命令支持

我正在使用媒体播放器回调方法为 Android Auto 实现语音命令。我无法让 Auto 识别出我要求在我的应用程序上播放标题:“Play [x] on MyApp”。我知道这个命令发布后需要几天时间才能工作,但我仍然可以说“Play [x]”媒体会话已经在运行,它应该使用onPrepareFromSearchonPlayFromSearch方法来搜索和播放内容。

当我说“Play [x] on MyApp”我得到回应时“I looked for [x] on MyApp on Google Play Music but it either isn’t available or it can’t be played right now”。当我说“Play [x]”我的媒体服务正在运行时,它通常会将我重定向到 Google Play 音乐。

我可以使用语音命令暂停、恢复、向前跳和向后跳,我看到那些被记录但当我尝试执行语音搜索时既不调用onPrepareFromSearch也不onPlayFromSearch调用。

我尝试过的事情:

  • <intent-filter>MEDIA_PLAY_FROM_SEARCH我的应用程序中的活动添加了一个for以标记我的应用程序可用于搜索媒体
  • 实施onPrepareFromSearchonPlayFromSearch在我的MediaSessionCompat.Callback
  • 添加ACTION_PLAY_FROM_SEARCHACTION_PREPARE_FROM_SEARCH作为支持的操作。
  • 设置媒体会话标志FLAG_HANDLES_MEDIA_BUTTONSFLAG_HANDLES_TRANSPORT_CONTROLS
  • 根据此处的文档添加了对 Android …

android android-auto google-assistant-sdk

15
推荐指数
0
解决办法
719
查看次数

Android自动通知未显示

我正试图通过Android Auto显示通知.通知确实显示在我的手机上.但是,它没有在Android Auto模拟器上显示.这是一个媒体应用程序.

automotvie_app_desc.xml:

<automotiveApp>
    <uses name="media"/>
</automotiveApp>
Run Code Online (Sandbox Code Playgroud)

这段代码在我的MediaBrowserService班上:

private Notification postNotification(AutoNotificationHelper.Type type) {
    Log.d(TAG, "Post Notification");
    Notification notification = AutoNotificationHelper.createMenuErrorNotification(
            getApplicationContext(), type, mSession);

    if (notification != null) {
        mNotificationManager.notify(TAG, NOTIFICATION_ID, notification);
    }
    return notification;
}
Run Code Online (Sandbox Code Playgroud)

这是创建通知的位置:

static Notification createMenuErrorNotification(Context context, Type type,
                                                MediaSessionCompat mediaSession) {

    MediaControllerCompat controller = mediaSession.getController();
    MediaMetadataCompat mMetadata = controller.getMetadata();
    PlaybackStateCompat mPlaybackState = controller.getPlaybackState();

    if (mMetadata == null) {
        Log.e(TAG, "MetaData is null");
    }

    if (mPlaybackState == null) {
        Log.e(TAG, …
Run Code Online (Sandbox Code Playgroud)

android android-notifications android-auto

12
推荐指数
1
解决办法
1074
查看次数

如何通过引用Android Auto MediaBrowser在MediaBrowserServiceCompat中设置EXTRA_PAGE和EXTRA_PAGE_SIZE?

我有一个Android Auto应用程序.我想利用分页在应用程序内浏览.您似乎可以通过获取对MediaBrowserCompat的引用并在.subscribe()中传递这些常量来设置EXTRA_PAGE和EXTRA_PAGE_SIZE.但是,我无法弄清楚如何获取Android Auto Audio用于调用.subscribe()的MediaBrowserCompat的引用.

对于一些应该简单的事情来说,这似乎太复杂了,我只是在思考这些事情吗?

pagination android-auto mediabrowserservice mediabrowserservicecompat mediabrowser

11
推荐指数
1
解决办法
395
查看次数

从源代码构建Android Automotive

TL; DR

从源代码构建Android Automotive之后,我该怎么做

  1. 运行汽车模拟器?
  2. 将CarService及相关软件包"安装"到设备上?

细节

我正在尝试从源代码构建Android Automotive.我可以使用以下命令成功构建它:

$ repo init -u https://android.googlesource.com/platform/manifest -b android-8.0.0_r11 $ source build/envsetup.sh $ lunch car_emu_x86_64-userdebug $ make -j8 V=1 &>> make.log

我的问题是如何运行模拟器?在谷歌搜索并浏览一些stackoverflow帖子后,我遇到了这个:

首先,我在命令行中设置一个env变量(模拟器使用它来确定要启动的模拟器)

export ANDROID_PRODUCT_OUT=/path/to/build_root

接下来,我创建了一个文件car-emulator.sh并将其放入其中(构建在Ubuntu机器上完成)

#!/usr/bin/env bash

ANDROID_BUILD_OUT=/path/to/build_root/out
PREBUILT=/path/to/build_root/prebuilts
EMULATOR_OUT=${ANDROID_BUILD_OUT}/target/product/car-x86_64

${PREBUILT}/android-emulator/linux-x86_64/emulator \
    -sysdir ${EMULATOR_OUT} \
    -system ${EMULATOR_OUT}/system.img \
    -ramdisk ${EMULATOR_OUT}/ramdisk.img \
    -data ${EMULATOR_OUT}/userdata.img \
    -kernel ${PREBUILT}/qemu-kernel/x86_64/kernel-qemu \
    -scale 0.7 \
    -memory 512 \
    -partition-size 1024
Run Code Online (Sandbox Code Playgroud)

我还尝试将相关的(darwin-x86_64)文件从构建机器下载到我的Mac笔记本电脑并尝试在那里运行.模拟器启动但立即崩溃,带有巨大的本机堆栈跟踪.

我的问题的下一部分是如何在设备上安装此图像?我看到CarService.apk已生成.在设备上安装此APK是否足够?或者CarService和相关软件包是否应该成为需要完整闪存的系统映像的一部分?

android-source android-auto

11
推荐指数
1
解决办法
4114
查看次数

Android Auto Desktop Head Unit (DHU) 在启动时显示黑屏

我正在尝试连接到桌面主机 (DHU) 以进行 Android Auto 测试,并在启动时一直出现黑屏。当我单击并右键单击它时,我可以看到红色和绿色的触摸人工制品。

带有黑色屏幕和红色和绿色触摸伪影的 DHU

我已按照此处的所有说明进行操作:https : //developer.android.com/training/cars/testing

我没有收到控制台错误,并且我确保 Android Auto 应用程序启用了开发人员模式并且主机服务器正在运行。我也尝试过不同的 tcp 端口。

我在 Pixel 3 上使用装有 Android 10 的 Mac 进行连接的电话部分,所有内容都有最新更新。我还尝试了另一个带有 Marshmallow 6.0.1 的物理设备。手机上的 Android Auto 应用程序版本为 5.5.602944-release。

这是我第一次使用 DHU,我尝试清除缓存并重置手机上 Android Auto 应用程序上的所有内容。

当我打开 Android Auto 应用程序并从终端启动 DHU 时,我确实注意到手机上的 Android Auto 应用程序关闭(我认为这不应该发生 - 但我可能错了)。

android android-emulator android-auto

10
推荐指数
1
解决办法
2338
查看次数

当我们尝试测试功能时,该应用没有出现在 Android Auto 屏幕中

我在 Playstore 上有一个音频播放器应用程序,想添加对 AndroidAuto 的支持。进行必要的更改后,当我将新的 apk 上传到 Playstore 时,它​​被拒绝并收到了以下来自 Play 的电子邮件

当他们说应用程序没有出现在屏幕上时,这是什么意思?我在清单中有所有必需的条目,使我的服务可以浏览。我不明白缺少什么。

我能够在真正的 android 设备上测试该应用程序,并且它可以正常运行。

---------- 来自 google play 的电子邮件 ----------

应用状态:您的应用尚未被 Android Auto 接受,并且更新未在 Google Play 上发布。

APK 版本的资格问题: 当我们尝试测试功能时,该应用没有出现在自动屏幕中

考虑用于 Android Auto:

  • 对您的应用程序进行必要的更改。
  • 增加升级后的 APK 的版本号。
  • 提交您的应用以供再次审核。

或者,如果您想从 Android Auto 中排除您的应用:

  • 从您的 APK 代码中删除 Android Auto 清单条目。
  • 登录您的 Play 管理中心并上传新的 APK。
  • 单击提交更新。

有关应用如何符合 Android Auto 资格的更多详细信息,您可以查看 Android Auto 应用质量指南。

如果您认为我们做出的此决定有误,请向我们的团队提交其他信息,我们将再次审核您的应用。

感谢您支持 Google Play,

Google Play 团队

android google-play android-auto mediabrowserservice android-automotive

9
推荐指数
0
解决办法
723
查看次数

如何在Android自动应用中阅读车辆传感器?

是否有可能在Android自动应用程序中读取车辆信息,如速度,行驶距离,燃料详情?
我已经检查了https://developer.android.com/training/auto
他们没有提及任何相关内容.Android auto是否有任何接口/ API来获取车辆相关信息.

android android-auto

8
推荐指数
1
解决办法
2934
查看次数

使用Gradle Build Flavors进行Android自动设置

我有一个项目,我正在尝试添加Android Auto支持.我已将以下代码添加到我的清单中,如Auto文档中所示:

<application
    ....
    <meta-data android:name="com.google.android.gms.car.application"
        android:resource="@xml/automotive_app_desc"/>
    ....
    <service
        android:name="com.me.auto.MyMediaBrowserService"
        android:exported="false">
        <intent-filter>
            <action android:name="android.media.browse.MediaBrowserService" />
        </intent-filter>
    </service>
    ....
</applicaiton>
Run Code Online (Sandbox Code Playgroud)

我也在使用我的gradle.build文件中定义的不同构建风格:

defaultConfig {
    applicationId "com.me"
    minSdkVersion 16
    //noinspection OldTargetApi
    targetSdkVersion 22
    versionCode 1
    versionName "1.0"
}

productFlavors {

    regular {
        applicationId "com.me"
    }
    different {
        applicationId "com.meother"
    }
}
Run Code Online (Sandbox Code Playgroud)

当我使用'常规'风格构建和安装时,android auto不起作用.但是,当我使用"不同"的味道构建和安装时,一切都很好.如果我然后将常规更改为applicaitonId'com.menew'之类的其他内容,那么Auto再次运行良好.

applicationId构建风格如何制作或破坏Android Auto功能?

android gradle android-auto

8
推荐指数
1
解决办法
289
查看次数

无法在 Android Auto Media App 上获取语音命令

我有一个具有自动功能的 Android 应用程序已被商店拒绝,因为:

“您的应用不支持所有必需的语音命令。例如,您的应用不包含用于操作“android.media.action.MEDIA_PLAY_FROM_SEARCH”的 Intent 过滤器。”

所以我希望至少让应用程序响应“在 X 应用程序上播放音乐”,但通过查看文档我无法让它工作。我将此添加到我的主要活动中(这不是启动器活动,它通过活页夹控制服务)

<intent-filter>
  <action android:name="android.media.action.MEDIA_PLAY_FROM_SEARCH" />
  <category android:name="android.intent.category.DEFAULT" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)

触发 aMediaBrowserServiceCompat以这种方式初始化:清单:

<service
            android:name=".Services.RadioService"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="android.media.browse.MediaBrowserService" />
            </intent-filter>
        </service>
Run Code Online (Sandbox Code Playgroud)

部分代码:

   @Override
    public void onCreate() {
        super.onCreate();
        audioManager = (AudioManager) getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
        mSession = new MediaSessionCompat(this, "RService");
        mSession.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS | MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS
                | MediaSessionCompat.FLAG_HANDLES_QUEUE_COMMANDS);
        mSession.setCallback(mCallback);
        mSessionConnector = new MediaSessionConnector(mSession);
        setSessionToken(mSession.getSessionToken());
        setMediaBrowser();
        initializeReceiver();
        C_F_App.createNotificationChannelPlayer(getApplicationContext());
        rNController = new RadioNotificationController(this, mSession, getApplicationContext());
    }

final MediaSessionCompat.Callback mCallback =
            new MediaSessionCompat.Callback() {
                @Override
                public void onPlayFromMediaId(String mediaId, …
Run Code Online (Sandbox Code Playgroud)

android android-auto

8
推荐指数
1
解决办法
1382
查看次数