Android Auto - 语音 - 无法执行“在 [y] 上播放 [x]”

2023-11-25

我在使用“在 [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(使用前将#替换为@)

Android Auto - 语音 - 无法执行“在 [y] 上播放 [x]” 的相关文章

随机推荐

  • 用于检查多个值的 jQuery 'if' 条件

    在下面的代码中 是否有更好的方法使用 jQuery 检查条件 if test1 val first value test2 val second value test3 val third value test4 val fourth va
  • “条件调用”在 amd64 上的性能

    当考虑代码关键部分中的条件函数调用时 我发现 gcc 和 clang 都会围绕该调用进行分支 例如 对于以下 诚然微不足道的 代码 int32 t attribute noinline negate int32 t num return n
  • 将 SpriteKit 视图集成到 xib 视图中

    我有一个已经使用 xib 文件创建的视图 现在我想向此视图添加一些小元素 这些元素将使用 SpriteKit 中的一些物理动画 所以现在我需要一个 SKView 是否可以添加 SKView 作为与我的 xib 视图相对应的视图的子视图 我尝
  • Fortran 2018+ 中过时的 DO 循环

    我正在使用可能是在最新版本的 gfortran 之前编写的源代码 我知道 DO END DO 和 CONTINUE 的方式已更改 因此不能共享循环终止 有一个方便的链接here 问题是 我不知道该页面上的解释到底告诉我要做什么 如果我在新脚
  • Tomcat 7 tomcat-users manager-script /deploy 示例

    我正在尝试让管理器 部署在新安装的 Tomcat 7 0 34 上工作 但是当我尝试通过执行 PUT 进行部署时 我不断收到 403http localhost 8080 manager deploy 我还没有在 Tomcat 7 中使用它
  • Angular - POST 上传的文件

    我在用着Angular 打字稿将文件与 JSON 数据一起发送到服务器 下面是我的代码 import Component View NgFor FORM DIRECTIVES FormBuilder ControlGroup from an
  • Python:在“exec”环境中奇怪的“NameError:名称...未定义”

    我有信心至少对 Python 的作用域系统有一些基本的了解 现在我收到一个错误 不幸的是到目前为止我什至无法编写一个好的代码片段来进行复制 我尝试在一个新的小项目中重现它 但一切都按我的预期进行 我只能描述我所做的事情 希望有人能发现一种模
  • 是否可以在运行时将参数传递给 python 生成的 exe?

    我正在尝试文件 I O 我有一个小型练习程序 运行时会创建一个文本文件 我用 pyinstaller 打包它 这样双击 exe 就会创建一个新文件夹 并在其中放置一个带有 hello world 的文本文件 十分简单 然后我开始想知道mai
  • 如何使用 Boost Asio 减少编译时间

    Boost Asio 是一个很棒的库 但它有一个巨大的缺点 编译时间极慢 一个HTTP协议的简单实现 真的很简单 大约1k行代码 在GCC 4 4下编译需要大约13 5s 我尝试使用 PCH 但它并没有太多地改善编译时间 大约仅 1 秒 那
  • azure api-apps、logic-apps、web-apps 和 azure function 之间的区别

    azure API 应用程序 逻辑应用程序 Web 应用程序和 azure 函数之间有什么区别 这对开发者来说有什么不同 逻辑应用程序 逻辑应用提供了一种在云中简化和实施可扩展集成和工作流程的方法 它提供了一个可视化设计器 可以将流程建模并
  • 将选项传递给 ES6 模块导入

    是否可以将选项传递给 ES6 导入 这句话怎么翻译 var x require module someoptions to ES6 没有办法用一个单一的方法来做到这一点import声明 它不允许调用 所以你不会直接调用它 但你基本上可以做与
  • 在 Postgres 中聚合多个字段时填充缺失的行

    我每天使用 Postgres 汇总一组产品的销售额 不仅需要知道何时发生销售 还需要知道何时不发生销售以进行进一步处理 SELECT sd date COUNT sd sale id AS sales sd product FROM sal
  • 在 OpenCV 中写入 AVI 文件

    网上有示例 Learn OpenCv O reilly 中给出了代码 经过多次尝试后 out avi 文件写入了 0 字节 我想知道我哪里出错了 以下是我使用的代码 int main int argc char argv CvCapture
  • 在 XML 中找不到未封闭的元素

    我有一个很大的 XML 文件 18MB 显然其中有一个标签未关闭 我知道这一点是因为当我运行 W3C 标记验证工具 validator w3 org 时 出现以下错误 You may have neglected to close an e
  • 透明 ARGB 十六进制值

    中的颜色this表全部不透明 我猜的价值A被设定为FF 透明度的代码是什么 例如这个颜色FFF0F8FF AliceBlue 为透明代码如 F0F8FF 以下是 到十六进制值的表格 Example 对于 85 的白色 您可以使用 D9FFF
  • 如何使用 jquery 同位素按日期排序(新)

    请原谅我 因为我对 JS 有点新手 只知道足够的操作 对于那些熟悉同位素的人来说 http isotope metafizzy co docs sorting html 我在页面顶部有一个按日期排序的按钮 同位素找到元素 span clas
  • Javascript 非阻塞脚本,为什么不简单地将所有脚本放在 标记之前?

    为了避免 javascript 阻塞网页渲染 我们是否可以将所有 JS 文件 代码放在关闭之前加载 执行 tag 所有的 JS 文件和代码只有在整个页面渲染完成后才会下载并执行 所以需要像这篇文章中建议的技巧吗 非阻塞技术加载JS文件 他基
  • Yup 模式中的可选字段验证

    我在用着react hook form with yup用于我的表单验证并希望某些字段是可选的 空 按照他们的文档 我正在使用nullable and optional 但它仍在得到验证 export const updateAddress
  • 如何在单击按钮时从一个视图控制器导航到另一个视图控制器?

    我是 iOS 应用程序开发新手 请帮助我如何从一开始view controller到另一个view controller单击按钮时 按照以下步骤 让按钮选择器为 button addTarget select action selector
  • Android Auto - 语音 - 无法执行“在 [y] 上播放 [x]”

    我在使用 在 app 上播放 歌曲 命令时遇到问题 具体来说 Android Auto 无法识别 应用程序 我收到一条音频语音消息 不知道如何帮助在应用程序上播放歌曲 因此 语音识别工作正常 正如我所说的歌曲和应用程序一样 但是与应用程序的