問題タブ [mediabrowserservicecompat]

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 に答える
2462 参照

android - MediaMetadataCompat Extras

サポート ライブラリの MediaMetadataCompat でエクストラを使用する方法はありますか?

MediaMetadata を使用してエクストラを設定できますが、compat では設定できません。

0 投票する
0 に答える
776 参照

java - API26 の MediaBrowserServiceCompat

MediaBrowserServiceCompat を使用してバックグラウンド ミュージック プレーヤー用の Android アプリの開発を開始したところ、Android エミュレータ API 26 でこの例外が発生しました (API 24 ではクラッシュしません)。何か見逃したのでしょうか、それとも API 26 のバグに遭遇したのでしょうか? ありがとうございました

MainActivity.java

MyService.java

0 投票する
0 に答える
463 参照

android - MediaControllerCompat の onPlayFromMediaId() メソッドの奇妙な動作

私は を拡張するサービスを使用しており、 を含むオーバーライドされたメソッドMediaBrowserServiceCompatもあります。MediaSessionCompat.Callback()onPlayFromMediaId()

recyclerview アイテムをクリックすると、recyclerview を持つフラグメントから内部で、次のコードが呼び出されます。mediaId画像のように、値を持っているだけでなく、メソッドsongBundleに渡されていることも明らかです。onPlayFromMediaId()

ここに画像の説明を入力

奇妙なことに、メソッドがオーバーライドされる Service クラス内では、魔法のように空になる間、playFromMediaId()文字列変数の値のみを受け取ります。(注- parcelable の配置と取得に使用されるキーも同じです。parcelableは、インターフェイスを実装する POJOです。)mediaIdsongBundlesongsVOParcelable

ここに画像の説明を入力

これとは別に、私が気付いたもう 1 つの興味深い点は、onPlayFromMediaId()実行後に後で呼び出されたフラグメントに戻り、他のすべての変数を除いmediaIdてすべての変数の値を確認することです。

ここに画像の説明を入力 ここに画像の説明を入力

RecyclerAdapter クラス

TLDR-onPlayFromMediaId(String, Bundle)バンドルが空で渡される間、文字列変数のみを渡します。

参照 -このチュートリアル

0 投票する
3 に答える
1389 参照

java - MediaBrowserCompat.connect() は、onConnected または MediaBrowserCompat.ConnectionCallback メソッドを呼び出しません。

を使用してアクティビティをMediaBrowserServiceCompatサービスに接続しようとしていMediaBrowserCompatます。これは私の活動です:

メソッドの 1 つが呼び出されることを期待するかもしれませんがConnectionCallback、これは logcat が出力するものです (サービスから呼び出されたログを含む)。

私のサービスで次のように呼び出すsetSessionToken(mediaSession.getSessionToken()) と、クラッシュしNullPointerExceptionます。

私のマニフェスト<action android:name="android.media.browse.MediaBrowserService"/>に、サービスに必要なものを追加しました。

私は何か間違ったことをしていますか、それとも appcompat(v7:25.3.1) の単なるバグですか?

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 回サブスクライブされた後にコンテンツを更新する問題を処理していないようです

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