1

我们最近在我们的应用程序中添加了一个 MediaBrowserService,它允许 Android Auto 通过我们在设备上的应用程序发现和播放音频内容。这按预期工作。

默认情况下,Wear 会拾取并显示我们的“正在播放”通知,提供基本的播放/暂停功能,并提供与我们的 MediaBrowserService 明确通信的“浏览”操作。

我正在向我们的主应用程序添加一个实际的 Wear 子应用程序,我想像 Wear OS 一样调用我们自己的 MediaBrowserService。

但是,当我调用 mediaBrowser.connect() 时,ConnectionCallback onConnectionFailed 总是会触发。连接永远不会成功。在主应用程序上进行调试时,我从来没有看到我们的 MediaBrowserService 有调用。

这是相关的代码。是否可以以这种方式使用 MediaBrowser 来复制 Wear 本身的功能?不幸的是,ConnectionCallback 没有提供任何信息来帮助解释连接尝试失败的原因。

MediaBrowser.ConnectionCallback callback = new MediaBrowser.ConnectionCallback() {
            @Override
            public void onConnected()
            {
                super.onConnected();
            }

            @Override
            public void onConnectionFailed()
            {
                super.onConnectionFailed();
            }
        };


MediaBrowser mediaBrowser = new MediaBrowser(this, new ComponentName("main.app.package.name", "full.package.name.of.our.mediabrowserservice"), callback, null);
mediaBrowser.connect();

更新

当我在我们的应用程序中播放音频并且手表上出现音频通知时,我可以看到我们的 MediaBrowserService 启动并且调用“onGetRoot”的包是

com.google.android.wearable.app

我假设这是 Wear OS 本身,但这似乎是设备上 Android Wear 应用程序的包名称。不知何故,它正在请求数据并将数据中继到手表,也许 MediaBrowser 根本无法从手表上的实际 Wear 应用程序中运行?

我看到很多使用 GoogleApiClient 在手表和手机之间传递数据的示例。我希望重用我们的 MediaBrowserService,因为 Wear 默认使用它。看来这不是一个选项,如果我想从手持应用程序获取 Wear 应用程序请求数据,我必须使用 GoogleApiClient 和 WearableListenerService。

4

1 回答 1

1

现在我的问题的答案是“不”。大概可以在同一个 Wear 应用程序中(或可能在两个 Wear 应用程序之间)使用 MediaBrowser 和 MediaBrowserService,但您不能在 Wear 设备上使用 MediaBrowser 来查找并连接到连接的手机/平板电脑上的 MediaBrowserService。手机/平板电脑上的 Android Wear 应用程序将使用 MediaBrowser 与手机/平板电脑上的 MediaBrowserServices 对话;但是,该数据通过正常的 Wear 数据层传递给 Wear 设备上的通知。

于 2015-07-14T13:05:00.310 回答