他のプログラムの実行中に、オペレーティングシステムが中断することなくオーディオを継続的に再生するにはどうすればよいのか疑問に思っていました。
集中的なプログラムを実行すると、音楽が1秒間停止することがありますが、場合によっては数回停止することもあります。
しかし、一般的に私は集中的なゲームをプレイしながら音楽を聴くことができます。オペレーティングシステムは、(ほとんど)中断することなく、どのようにそれを再生することができますか?
他のプログラムの実行中に、オペレーティングシステムが中断することなくオーディオを継続的に再生するにはどうすればよいのか疑問に思っていました。
集中的なプログラムを実行すると、音楽が1秒間停止することがありますが、場合によっては数回停止することもあります。
しかし、一般的に私は集中的なゲームをプレイしながら音楽を聴くことができます。オペレーティングシステムは、(ほとんど)中断することなく、どのようにそれを再生することができますか?
オーディオはハードウェアによって再生されます。OS を含むソフトウェアは、「バッファ」と呼ばれるオーディオのチャンクを半定期的にハードウェアに転送する役割を果たします。最後のチャンクがなくなる前にハードウェアが次のチャンクを受信する限り、再生は継続します。
私のトークスライドにこれの図があります:
http://blog.bjornroche.com/2011/11/slides-from-fundamentals-of-audio.html
オーディオ スレッドに高い優先度を与えます。
Android SDK は、通常のアプリケーションがこの (より高い) 優先度に変更できないことを示しています: http://developer.android.com/reference/android/os/Process.html#THREAD_PRIORITY_AUDIO