iRSSの日記

はてなダイアリーiRSSの日記の続き

iOSで音楽系のアプリを作るときのメモ

オーディオセッションAPI

iOSは、オーディオ動作をアプリケーションレベル、アプリケーション間レベル、およびデバイスレ ベルで、 オーディオセッションという概念を使って処理します。

  • iPodの音楽を流しながら、自分のアプリで効果音をいれる
  • 着信/サイレントスイッチを無視 して再生する
  • iPodオーディオは停止して、音楽を再生する

とか。

セッションを使うには
  • AVAudioSession Class (Objective-C) ハイレベル
  • Audio Session Services (C言語) ローレベル

の2系統のAPIがある
通常はAVAudioSession Classをつかって、必要になったら、Audio Session Servicesをつかえばよく、2つのAPIを混在して使っても大丈夫。

5つの基本手順
  1. セッションをセットアップする
  2. カテゴリを選ぶ
    • 例えば、画面がロックされても再生を続行する場合に使うときはAVAudioSessionCategoryPlaybackを使う。
  3. セッションをアクティブにする
  4. 割り込みをハンドリングする
    • 電話、ロック、アラーム、全面のアプリ等
  5. 出力先の変化をハンドリングする
    • ヘッドホン、内蔵スピーカー等

※バックグラウンドでの再生が続けさせるためには、Info.plistでUIBackgroundModes keyをaudioにする必要がある。

AVAudioSessionDelegate
  • (void)beginInterruption

Phone call, clock alarm, foreground app
等が原因で、すでに、セッションは停止している。
UIを変更して、停止してるようにみせる。





参考資料

WWDC2011 videos & slides
  • 413_audio_session_management_for_ios.pdf - セッションに関する最新情報 2010の「Audio Development for iPhone OS, Part 1」のバージョンアップ版
  • 405_exploring_av_foundation.pdf - iOS5
  • 415_working_with_media_in_av_foundation.pdf - ビデオの編集、書き出し等について