5

ユーザーのiPhoneミュージックライブラリから音楽を再生する音楽アプリを設計していますが、どのオーディオプレーヤー(AVAudioPlayer、AVPlayer、またはMPMusicPlayer)を使用するのが適切かを判断するのに問題があります。

私のアプリは次のことを行う必要があります。

  • iPhoneミュージックライブラリから音楽を再生する
  • デバイス/システムの音量とは別にアプリの音楽の音量を制御する
  • アプリがバックグラウンドに移動しても、アプリの音楽を再生し続ける
  • 曲が次の曲に変わったとき、または終了したときにイベントをキャッチする

私の調査によると、上記の3つのオーディオプレーヤーはそれぞれ、私のアプリに必要なタスクの一部を実行しているようですが、すべてを実行しているわけではありません。AVPlayerは、その音量がデバイス/システムの音量に依存していることを除いて、最も接近しているようです。

これを達成するための推奨事項や回避策はありますか?私はかなり長い間これについて頭を悩ませてきたので、どんな助けでもいただければ幸いです。

4

1 に答える 1

1

編集

MPMusicPlayerController クラスは、 経由でインスタンスを取得する場合、実際にはバックグラウンド オーディオの再生をサポートしていません+ applicationMusicPlayer。したがって、最良の選択肢は、単純に MPMusicPlayer を使用して iPod ミュージック ライブラリを照会することです。ユーザーが曲を選択すると、その結果MPMediaItemのアセット URL を照会して AVPlayer の+playerWithURLにフィードすることができるため、再生パラメーターを完全に制御できます。

--

MPMusicPlayerController をお勧めします。

  1. MPMusicPlayerController は、iTunes ライブラリ内のオーディオ ファイルの再生に関する低レベルの詳細を処理します。
  2. クラス メソッド-applicationMusicPlayerを使用して、iPod シングルトンのローカル コピーを取得できます。そこから、アプリケーションのプロパティを設定することで音量を制御できvolumeます。
  3. MPMusicPlayerController にはバックグラウンド オーディオ サポートが既に組み込まれていると思います。そうでない場合は、アプリのオーディオ セッション コンテキストを変更して動作させることができます ( http://www.sagorin.org/2011/11/29/iosPlaying background audioを参照) 。 -playing-audio-in-background-audio/ )
  4. 選択した任意のオブジェクトを、アプリケーション固有のMPMusicPlayerControllerオブジェクトの KVO オブザーバーとして設定できます。nowPlayingItemこれにより、プロパティが変更されるたびに通知を受けることができます。

うまくいけば、この高レベルの説明で十分です。さらに説明が必要な場合はお知らせください。

于 2012-07-03T16:25:36.857 に答える