OpenFrameworks を使用して iOS 用のジェネレーティブ ミュージック システムを設計する場合、次の場合に、ユーザーがアプリケーションによって生成された音楽を聴くことができるモードを提供する必要があります。
- デバイスがロックされています
- ユーザーが別のアプリケーションを使用している
BLOOM や目覚まし時計などの一部のアプリケーションは、そのように機能し、この機能を有効/無効にするスイッチをユーザーに提案します。
そのためのヒントはありますか?
OpenFrameworks を使用して iOS 用のジェネレーティブ ミュージック システムを設計する場合、次の場合に、ユーザーがアプリケーションによって生成された音楽を聴くことができるモードを提供する必要があります。
BLOOM や目覚まし時計などの一部のアプリケーションは、そのように機能し、この機能を有効/無効にするスイッチをユーザーに提案します。
そのためのヒントはありますか?
バックグラウンドオーディオの再生
オーディオを継続的に再生または録音するアプリ(アプリがバックグラウンドで実行されている場合でも)は、バックグラウンドでこれらのタスクを実行するために登録できます。Xcodeプロジェクトの[機能]タブの[バックグラウンドモード]セクションからオーディオサポートを有効にします。(アプリのInfo.plistファイルのオーディオ値にUIBackgroundModesキーを含めることで、このサポートを有効にすることもできます。)バックグラウンドでオーディオコンテンツを再生するアプリは、無音ではなく可聴コンテンツを再生する必要があります。
Appleリファレンス「バックグラウンドオーディオの再生と録音」
この機能を有効/無効にするために、オーディオセッションのアクティブ化と非アクティブ化を見つけました。自分で試したことはありませんが、必要なもののようです。
plistファイルにいくつかの変更を加える必要があります。
すなわち1)アプリがオーディオを再生するように必要なバックグラウンドモードを設定します
2)アプリケーションがバックグラウンドで実行されないをNOに設定します。
NSError *setCategoryErr = nil;
NSError *activationErr = nil;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error:&setCategoryErr];
[[AVAudioSession sharedInstance] setActive:YES error:&activationErr];
次に、AppDelegateでこれらの多くのコードを記述する必要があります
これで、電話の画面がロックされているときやバックグラウンドになっているときに、オーディオを簡単に実行できます。
このチュートリアルを見てください。バックグラウンドサービスの例がいくつかあります
また、次のコードを使用できます。
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayback error:NULL];
AVAudioSession *backgroundMusic = [AVAudioSession sharedInstance];
[backgroundMusic setCategory:AVAudioSessionCategoryPlayback error:NULL];