問題タブ [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.
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 データベースから曲を削除したりすると、リストが自動的に更新されます。
このようなものをどのように実装することをお勧めしますか? ご提案いただきありがとうございます。
java - MediaBrowserCompat.ConnectionCallback.onConnected() が connect() の後に呼び出されていない
MediaControllerCompat
Android 用のプレーヤー アプリを作成しており、任意の UI クラスからアクセスしたいと考えています。この目的のために、MediaBrowserCompat
クラスを使用します。それを my に接続して、既に my に設定されている を取得しようとしていMediaBrowserServiceCompat
ます。MediaControllerCompat
MediaSessionCompat.Token
Service
MediaBrowserCompat.connect() が onConnected または MediaBrowserCompat.ConnectionCallback メソッド ソリューションを呼び出さないことを試しましたが、役に立ちませんでした。
TortoiseActivity.java
Service.java
SmallPlayerFragment.java
その結果、 NullPointer を取得します
取得しようとするときMediaControllerCompat.TrasportControls
。MediaControllerCompat
間違いなくヌルです。Callback の onConnected() にブレークポイントを設定しましたが、スレッドは中断しません。したがって、コールバックが呼び出されていないと結論付けることができます。
android - Android メディア ボタン イベントのキャッチ
いくつかのメディアを再生するためにフォアグラウンド サービスを起動するアプリがあり、スマート ウォッチ/ヘッドフォンのメディア ボタンで制御し、メディアスタイル通知などから制御できるようにしたいと考えています。
ただし、メディアボタンを一貫して機能させることはできません。ログを見ると、MediaSession と再生を最後に開始したにもかかわらず、他のアプリに送信されることがよくあります。
しかし、Active(true) を設定したメディア セッションがあり、メディア コールバックが定義されているにもかかわらず、それを機能させることはできませんか?
マニフェスト:
コード(パッケージに注意してください。Android 10では、連携してMediaStyleを提供するパッケージの正しい組み合わせを見つけるのは困難でした)...
build.gradle
私はしばらくこれに固執していたので、どんな助けでも大歓迎です。
ログ:
また、音声の許可エラーが表示されますが、これが関連しているかどうかはわかりません: