録音されたサンプルを使用して音楽を再生する Android アプリを作成しています (SoundPool を使用)。現在の時間 (realTimeElapsed) に応じて再生する必要があるサンプルをチェックする Player があります。プレーヤーは、1 ミリ秒に設定したタイマーで更新されます。ほとんどの場合、これで問題なく動作しますが、約 100 ミリ秒の遅延が発生することがあります。
タイマーの優先度を上げる方法が見つかりませんでした。これらの遅延を解消する別の方法はありますか?
同時に openGL を使用してシーンをレンダリングしていますが、すべての描画を無効にすると同じ遅延が発生します。
ありがとう
編集:
私は TraceView でそれを分析しました: オーディオ スレッド (Thread-16) はミリ秒ごとに実行されます。しかし、t=2580 で約 200ms のブレークがあります。この期間中、スレッドはスリープ状態ではなく、メソッド SoundPool.play で中断されます。このような遅延があるたびに、オーディオ スレッドが中断されます。これらの中断を防ぐ方法はありませんか?
GL スレッド (オーディオ スレッドに割り込む) の優先度を THREAD_PRIORITY_LOWEST に設定しました。
画像を右クリックし、「画像を表示」またはそれに近いものを選択して、画像をフル解像度で表示します。