【发布时间】:2015-07-14 21:27:16
【问题描述】:
我们最近向我们的应用添加了一个 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。
【问题讨论】:
-
也许你可以看看UniversalMusicPlayer
-
是的,我看过那个示例应用程序。不幸的是,它不包含 Wear 应用程序,只有手持应用程序。我可以在与 MediaBrowserService 相同的应用程序中找到在 Android 中使用 MediaBrowser 的示例。但我找不到任何关于 Wear 正在做什么的例子。从外面打电话。
-
我认为您无法通过带有 MediaBrowser 的穿戴应用程序来控制您的手机应用程序。请注意,原生运行 Wear 应用程序意味着在另一个 Android 系统上运行 Wear 应用程序。也许你可以看看 iHeart 是如何做到的。他们有一个本机应用程序,该应用程序在手机上启动意图以使用特定播放列表启动他们的应用程序,并让用户使用系统控件控制播放。
标签: android wear-os android-auto