問題タブ [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 投票する
1 に答える
284 参照

android - MediaBrowserServiceCompat で Room からアイテムをロードする

私は、Android アーキテクチャ コンポーネントを使用してオーディオ アプリに取り組んでいます。拡張するサービスMediaBrowserServiceCompatと、フラグメントを使用していMediaBrowserCompatます。

onLoadChildren()サービスのメソッドで曲をハードコーディングすると、すべてがうまく機能します。onLoadChildren()しかし、自分の曲を Room データベースに保存しており、それらをメソッドにロードしたいと考えています。これは私が苦労しているところです。

曲をロードしようとした方法は2つあります。

1) SongsDAO:

サービス:

このようにすると、ルームクエリがメインスレッドで実行されたというエラーが発生します。考えられる方法の 1 つは、おそらくメソッドを AsyncTask にカプセル化することですが、もっと良い方法があると思います。

2) ソングDAO:

サービス:

このように、LiveData の曲をどのように処理するかはわかりません。LifecycleOwner (observe メソッドの最初のパラメーター) として使用できるものがないため、それらはループで反復できず、おそらく監視もされません。

このユース ケースを解決するためのベスト プラクティスは見つかりませんでした。アプリ内のすべての曲を含む SPOT (Single Point of Truth) クラスが必要です。その後、サービスで使用して、アプリの UI (RecyclerView) や他のアプリ (Android Auto) にデータを提供できます。アプリのどこからでもこれらの曲にアクセスできるようにしたいと考えています。新しい曲を追加したり、Room データベースから曲を削除したりすると、リストが自動的に更新されます。

このようなものをどのように実装することをお勧めしますか? ご提案いただきありがとうございます。

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

java - MediaBrowserCompat.ConnectionCallback.onConnected() が connect() の後に呼び出されていない

MediaControllerCompatAndroid 用のプレーヤー アプリを作成しており、任意の UI クラスからアクセスしたいと考えています。この目的のために、MediaBrowserCompatクラスを使用します。それを my に接続して、既に my に設定されている を取得しようとしていMediaBrowserServiceCompatます。MediaControllerCompatMediaSessionCompat.TokenService

MediaBrowserCompat.connect() が onConnected または MediaBrowserCompat.ConnectionCallback メソッド ソリューションを呼び出さないことを試しましたが、役に立ちませんでした。

TortoiseActivity.java

Service.java

SmallPlayerFragment.java

その結果、 NullPointer を取得します

取得しようとするときMediaControllerCompat.TrasportControlsMediaControllerCompat間違いなくヌルです。Callback の onConnected() にブレークポイントを設定しましたが、スレッドは中断しません。したがって、コールバックが呼び出されていないと結論付けることができます。

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

android - Android メディア ボタン イベントのキャッチ

いくつかのメディアを再生するためにフォアグラウンド サービスを起動するアプリがあり、スマート ウォッチ/ヘッドフォンのメディア ボタンで制御し、メディアスタイル通知などから制御できるようにしたいと考えています。

ただし、メディアボタンを一貫して機能させることはできません。ログを見ると、MediaSession と再生を最後に開始したにもかかわらず、他のアプリに送信されることがよくあります。

しかし、Active(true) を設定したメディア セッションがあり、メディア コールバックが定義されているにもかかわらず、それを機能させることはできませんか?

マニフェスト:

コード(パッケージに注意してください。Android 10では、連携してMediaStyleを提供するパッケージの正しい組み合わせを見つけるのは困難でした)...

build.gradle

私はしばらくこれに固執していたので、どんな助けでも大歓迎です。

ログ:

また、音声の許可エラーが表示されますが、これが関連しているかどうかはわかりません: