AndroidのAudioTrack
クラスを使用して生のサウンドデータを再生しようとしていますが、write
メソッドを使用していますが、書き込みメソッドが返されて実際のサウンドが再生されるまでそれは、単純な私たちは、次のpseduコードとしてAudioRecord
クラスを使用してみましょう作る:Android AudioTrack再生時の再生時間
//init AudioTrack
//init AudioRecord
while(true){
byte [] buffer = new byte[1000];
int read = audioRecord(buffer,0,1000);
audioTrack.write(buffer,0,read);
}
私はread/sample rate
秒ですが、実際の音がした後に再生し、約0.5秒の余分れる遅延を得ることを期待、私は本当ににオーディオを必要とします最小レイテンシで演奏されるので、誰が何が起こっているのかについての説明を持っており、利用可能な解決策があるかどうか、あるいはこれはa rdwareの問題?
それは言う:「OpenSL ESであるため、OpenSL ESを呼び出して非のDalvikアプリケーションスレッドがネイティブC APIを持っていないのDalvik関連OpenSL ESを使用しても、オーディオ待ち時間が短縮され、スケジューリングの優先度が高くなりません。一般的に提供しています。 – ammcom
Java VM(現代のAndroidバージョンではARTと呼ばれます)のオーバーヘッドは重要です。低レイテンシを達成するには、音声コールバックが250 Hzの周波数で確実に呼び出される必要があります。そのため、コールバックは4ms未満の時間予算しかないので、1マイクロ秒ごとにカウントします.JNIやGC。 –