我们最近在我们的应用中添加了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。
答案 0 :(得分:1)
现在我的问题的答案是"否"。据推测,可以在同一个Wear应用程序中使用MediaBrowser和MediaBrowserService(或者可能在两个Wear应用程序之间),但是您无法在Wear设备上使用MediaBrowser来查找并连接到已连接的手机/平板电脑上的MediaBrowserService。手机/平板电脑上的Android Wear应用程序将使用MediaBrowser与手机/平板电脑上的MediaBrowserServices通话;但是,该数据通过正常的磨损数据层传递给Wear设备上的通知。