2017-02-02 4 views
0

クライアント/サーバーアーキテクチャを使用して私の最初のオーディオアプリケーション(音楽プレーヤー)を作った:https://developer.android.com/guide/topics/media-apps/audio-app/building-a-mediabrowserservice.htmlオーディオアプリケーション(クライアント/サーバー設計)、onLoadChildren()メソッドが必要ですか?

私は1つの曲だけでテストしました。私は、MediaServiceクラスのMediaPlayerインスタンスのソース(Uri)をハードコードされた方法でテスト用に設定しました。

それは、通常、この曲を果たして通知し、ロック画面、再生/一時停止ボタンもOK作品でそれについての情報を表示します。

しかし、今私は、プレイリストを作成する必要があります。 これを実行するベストプラクティスは何ですか? MyAudioクラスのインスタンスListを作成し、すべてのMyAudioインスタンス(ユーザーがデバイスストレージからフォルダを選択したとき)のタイトル、アーティスト、ソースなどのフィールドを設定してから、onSkipToNextで使用するだけです「MediaPlayer」のonSkipToPreviousMediaSessionCallback,onCompletionである。

は、クライアント/サーバ・アーキテクチャの例からonLoadChildren()方法で行List<MediaItem> mediaItems = new ArrayList<>();があります。

これは必要ですか?または、これらのメソッド(getRoot())は、他のアプリに自分のMediaServiceを使用して音楽/プレイリストのリストを取得する機会を与えるだけでした。 私がこれをしないと、私はこれらの方法に気にしないことができますか?

答えて

1

MediaItem Sを使用しての全体のポイントはthis MediaBrowserService blog postで説明したように、それはあなたのMediaBrowserServiceCompatとあなたのUIの間でプレーするために利用可能なオブジェクトのリストを渡すために事前に構築されたメカニズムを与えることである - それは、あなた自身のMyAudioクラスをビルドする場合2人の間でそれをどのようなきれいな方法でも渡すことははるかに困難です。

もちろん、現在再生中のもの(選択するアイテムのリストではない)の固定再生リストしかない場合は、おそらくMediaSessionのキューAPIを使用する方が適しています。つまり、setQueue()getQueue()です。

+0

ええ、私は 'MediaItem'のリストを取得するときにUIを更新するには、' onLoadChildren'を使用することができますね、しかし最初に私は(私は歌ソースと文字列のリストを持っている場合など)どこかに自分の音楽を追加する必要があります.'MediaBrowser' UIから音楽を追加するライブラリーが必要です。この音楽を 'onLoadChildren'の' MediaItem'のリストに設定してUIを再度更新してください(ユーザーがアプリを終了した場合) – user25

+0

一般的にメディアアプリはユーザーは自分の音楽ソースを手動で選択する必要があります(ストリーミングサービスは既にそのコンテンツを知っています。ローカル再生は通常、[MediaStore.Audio](https://developer.android.com/reference/android/provider/MediaStore)から直接読み込みます。 Audio.html)など)。もちろん、[sendCommandメソッド](https://developer.android.com/reference/android/support/v4/media/session/MediaControllerCompat.html)からカスタムコマンド(「このソースを追加」など)を送信することもできます。 #sendCommand(java.lang.Stringで、%20android.os.Bundle、%20android.os.ResultReceiver)) – ianhanniballake

+0

特定のフォルダのメディアストアとブラウザの音楽に方法があるように思われる、[OK]を、私はのみ使用することをどうにかしようとするでしょうサービス、その中のmediastore、onLoadChildrenでUIを構築する – user25

関連する問題