問題タブ [mediabrowserservice]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
700 参照

android - Spotify の MediaBrowserService に接続できますか?

私は音声アシスタントを書いていますが、Spotify で検索結果を起動できるようにしたいと考えています。Spotify や他のアプリに接続する方法を理解するために、 Google の Media Controller Test アプリで遊んでいます。これは次のように説明されています。

アプリ間のメディア コントロールをテストするために、MediaBrowserService に接続する単純な MediaController を作成します。

このアプリは、ユニバーサル Android ミュージック プレーヤー サンプル、またはメディア API を実装するその他のアプリで動作します。

アプリを実行すると、Spotify が を提供していると識別されますMediaBrowserServiceが、アプリを介して Spotify に接続しようとするとエラーが発生します。

エラーを含む Android スクリーンショット:

接続コードは次のとおりです。

具体的には、 を呼び出した直後にmBrowser.connect()、コールバックのonConnectionFailed()メソッドが呼び出されます。

MediaBrowserServiceこれは、Spotify がホワイトリストに登録されていないアプリからのリクエストを拒否し(ここで説明されているように)、個々のアプリの作成者が Spotify の に接続する方法がないことをMediaBrowserService意味しますか、それとも他の方法で接続できますか? FWIW、Google Playミュージックもアプリを介した接続を拒否します.

また、インテントを起動して Spotify を検索して再生できるようにしましたが、うまくいきませんでした。

0 投票する
1 に答える
914 参照

android - ExoPlayer と PlayerControlView を使用した MediaBrowserService - UI (PlayerControlView) からプレーヤー インスタンスにアクセスする方法は?

私は現在、ビデオとオーディオ機能を備えたアプリの一部に取り組んでおり、最近コードベースのリファクタリングを開始しました。目標は、統合MediaSession/ MediaControllerMediaBrowserService/ MediaBrowserフレームワークです。

より具体的には、ビデオ コンポーネントとオーディオ コンポーネントの両方にPlayerViewを使用ExoPlayerします。これには、次のプレーヤー インスタンスへの参照が必要です。PlayerControlViewPlayerControlView

ただし、Android 開発者の投稿と のドキュメントMediaBrowserServiceは、プレーヤー インスタンスはサービスに含まれている必要があります。さらに、クライアント サイト (MediaBrowser および MediaController) がconnect()メソッドとMediaBrowserConnectionCallbackを介して対話してサービスを提供する唯一の方法です。これにより、プレーヤーのインスタンスを PlayerControlView に渡す (またはその逆) ことができなくなります。

MediaSessionCompat.Callbackなどのさまざまなコールバックを使用してみましたが、SimpleExoPlayerPlayerControlViewも Parcelable ではありません。

従来のサービスでは、 を使用Binderしてサービス内で宣言したメソッドにアクセスし、次のようなことを行います。

ただし、これはMediaBrowserService/ MediaBrowserフレームワークでは不可能のようです。この質問への回答を確認しました。これは、[sendCommand] を使用してカスタム メソッドを呼び出す方法であることを示しています。ただし、パラメーターが Parcelable である必要もあります。

要約すると、私の質問は、フレームワークの下でPlayerControlViewインスタンスにアクセスするSimpleExoPlayer方法、またはその逆の方法があるかどうかMediaBrowserServiceです。

回答やコメントをお寄せいただきありがとうございます。