問題タブ [android-mediasession]

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 投票する
3 に答える
2422 参照

android - MediaBrowserService サブスクリプション コンテンツの更新

TL;DR:アクティビティを作成し、(サブスクリプションを介して) メディア ブラウザー サービスに結合することに成功しました。このメディア ブラウザ サービスは、実行を継続し、バックグラウンドで音楽を再生できます。アプリが再びフォアグラウンドになったとき、または SwipeRefreshLayout イベント中に、ある段階でコンテンツを更新できるようにしたいと考えています。

実装したい次の機能があります。

  1. MediaBrowserServiceCompat サービスを開始します。
  2. アクティビティから、メディア ブラウザー サービスに接続してサブスクライブします。
  3. アプリを閉じている間も、サービスの実行と音楽の再生を継続できるようにします。
  4. 後の段階で、または SwipeRefreshLayout イベントで、サービスに再接続してサブスクライブし、新しいコンテンツを取得します。

私が受け取っている問題は、MediaBrowserService 内で (サブスクリプションが作成された後)、 onLoadChildren() メソッドから sendResult() を 1 回しか呼び出せないため、次に同じルートを使用してメディア ブラウザ サービスにサブスクライブしようとするときです。の場合、sendResult() が 2 回目に呼び出されると、次の例外が発生します。

次のメソッドを呼び出して、メディア ブラウザーに接続および切断します (ここでも、最初の接続ではすべてがスムーズに実行されますが、2 番目の接続では、サブスクリプションを介してコンテンツを更新する方法がわかりません)。

アクティビティがバックスタックに保持されている場合でもサブスクリプションが再作成されるように、onDestroy() の代わりに onPause() でサブスクリプションを解除して切断します。

アクティビティとサービスのそれぞれで、スワイプの更新に使用される実際の方法:

アクティビティ

サービス

その他の研究:

Github の Google Samples コードも参照しました...

上記のレポはどちらも、メディア ブラウザ サービスが作成され、アクティビティが少なくとも 1 回サブスクライブされた後にコンテンツを更新する問題を処理していないようです

関連する可能性のある問題: