最近、MediaBrowserService をアプリに追加しました。これにより、Android Auto がデバイス上のアプリを介してオーディオ コンテンツを検出して再生できるようになります。これは期待どおりに機能します。
デフォルトでは、Wear は「Now Playing」通知を取得して表示し、基本的な再生/一時停止機能を提供し、MediaBrowserService と明確に通信する「Browse」アクションを提供します。
私は実際の 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 を使用して時計と電話の間でデータを通信する例はたくさんあります。Wear はデフォルトで MediaBrowserService を使用するため、MediaBrowserService を再利用したいと考えていました。これはオプションではないようです。Wear アプリがハンドヘルド アプリからデータを要求するようにするには、GoogleApiClient と WearableListenerService を使用する必要があります。