我在使用“在 [app] 上播放 [歌曲]”命令时遇到问题;具体来说,Android Auto 无法识别“应用程序”。
我收到一条音频语音消息:
“不知道如何帮助在应用程序上播放歌曲”
因此,语音识别工作正常(正如我所说的歌曲和应用程序一样),但是与应用程序的匹配不起作用,或者对于 Auto 而言,我的应用程序可以处理此问题并不明显。
在模拟器中,搜索通过“搜索”菜单选项进行,因此我假设我的意图过滤器是正确的。
我的清单有以下内容:
<!-- - - - - - - - - - - - - - - - - - - - - -->
<!-- Auto -->
<!-- - - - - - - - - - - - - - - - - - - - - -->
<meta-data android:name="com.google.android.gms.car.application" android:resource="@xml/automotive_app_desc"/>
<meta-data android:name="com.google.android.gms.car.notification.SmallIcon" android:resource="@drawable/brand_icon_white" />
<service android:name=".library.service.auto.MyMediaBrowserService"
android:exported="true">
<intent-filter>
<action android:name="android.media.browse.MediaBrowserService"/>
</intent-filter>
</service>
我尝试将以下内容放入我的服务声明或活动中,如下所示YouTube 开发字节但似乎都不起作用:
<action android:name="android.media.action.MEDIA_PLAY_FROM_SEARCH" />
<category android:name="android.intent.category.DEFAULT" />
我希望它位于服务中,因为没有与服务相关的活动。我想确切地知道这应该在哪里。
我可能错过了一些东西或者误解了一些东西。一个问题可能是应用程序的名称中包含一个数字(例如 1up)。
只需声明一个intent-filter
for MEDIA_PLAY_FROM_SEARCH在活动声明中。 Android Auto 并不强制实际处理意图,因为 Android Auto 会调用MediaSession.Callback.onPlayFromSearch
。清单中的声明用于将您的应用程序标记为可响应媒体语音命令。但是,您可能希望正确处理它,因为其他非汽车环境(例如 Google Now)将通过该意图提交语音搜索。
处理意图的最佳方法是调用MediaController.TransportControls.playFromSearch
,因此无论语音搜索是如何触发的,您都可以以一致的方式处理它。
请参阅此片段uAmp AndroidManifest.xml:
<!-- Main activity for music browsing on phone -->
<activity
android:name=".ui.MusicPlayerActivity"
android:label="@string/app_name">
[...]
<!-- Use this intent filter to get voice searches, like "Play The Beatles" -->
<intent-filter>
<action android:name="android.media.action.MEDIA_PLAY_FROM_SEARCH" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
And 就是这样意图被处理:
@Override
protected void onMediaControllerConnected() {
if (mVoiceSearchParams != null) {
String query = mVoiceSearchParams.getString(SearchManager.QUERY);
getMediaController().getTransportControls().playFromSearch(query, mVoiceSearchParams);
mVoiceSearchParams = null;
}
getBrowseFragment().onConnected();
}
需要注意的是:您需要使用意图过滤器来发布您的应用程序,并且
等待几天,将其标记为“Play [x]”并为其建立索引on
[y]" 查询类型。它不是即时的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)