問題タブ [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.
android - Spotify の MediaBrowserService に接続できますか?
私は音声アシスタントを書いていますが、Spotify で検索結果を起動できるようにしたいと考えています。Spotify や他のアプリに接続する方法を理解するために、 Google の Media Controller Test アプリで遊んでいます。これは次のように説明されています。
アプリ間のメディア コントロールをテストするために、MediaBrowserService に接続する単純な MediaController を作成します。
このアプリは、ユニバーサル Android ミュージック プレーヤー サンプル、またはメディア API を実装するその他のアプリで動作します。
アプリを実行すると、Spotify が を提供していると識別されますMediaBrowserService
が、アプリを介して Spotify に接続しようとするとエラーが発生します。
接続コードは次のとおりです。
具体的には、 を呼び出した直後にmBrowser.connect()
、コールバックのonConnectionFailed()
メソッドが呼び出されます。
MediaBrowserService
これは、Spotify がホワイトリストに登録されていないアプリからのリクエストを拒否し(ここで説明されているように)、個々のアプリの作成者が Spotify の に接続する方法がないことをMediaBrowserService
意味しますか、それとも他の方法で接続できますか? FWIW、Google Playミュージックもアプリを介した接続を拒否します.
また、インテントを起動して Spotify を検索して再生できるようにしましたが、うまくいきませんでした。
android - ExoPlayer と PlayerControlView を使用した MediaBrowserService - UI (PlayerControlView) からプレーヤー インスタンスにアクセスする方法は?
私は現在、ビデオとオーディオ機能を備えたアプリの一部に取り組んでおり、最近コードベースのリファクタリングを開始しました。目標は、統合MediaSession/ MediaController
とMediaBrowserService/ MediaBrowser
フレームワークです。
より具体的には、ビデオ コンポーネントとオーディオ コンポーネントの両方にPlayerViewを使用ExoPlayer
します。これには、次のプレーヤー インスタンスへの参照が必要です。PlayerControlView
PlayerControlView
ただし、Android 開発者の投稿と のドキュメントでMediaBrowserService
は、プレーヤー インスタンスはサービスに含まれている必要があります。さらに、クライアント サイト (MediaBrowser および MediaController) がconnect()
メソッドとMediaBrowserConnectionCallbackを介して対話してサービスを提供する唯一の方法です。これにより、プレーヤーのインスタンスを PlayerControlView に渡す (またはその逆) ことができなくなります。
MediaSessionCompat.Callbackなどのさまざまなコールバックを使用してみましたが、SimpleExoPlayerもPlayerControlViewも Parcelable ではありません。
従来のサービスでは、 を使用Binder
してサービス内で宣言したメソッドにアクセスし、次のようなことを行います。
ただし、これはMediaBrowserService/ MediaBrowser
フレームワークでは不可能のようです。この質問への回答を確認しました。これは、[sendCommand] を使用してカスタム メソッドを呼び出す方法であることを示しています。ただし、パラメーターが Parcelable である必要もあります。
要約すると、私の質問は、フレームワークの下でPlayerControlView
インスタンスにアクセスするSimpleExoPlayer
方法、またはその逆の方法があるかどうかMediaBrowserService
です。
回答やコメントをお寄せいただきありがとうございます。