私はMIDIファイルから得られるタイミングデータがあるシナリオを持っています。 MIDIノートを再生する必要があるときは、UDP経由でコマンドを送信する必要があります。基本的には、「ノートAを再生し、125ms待って、ノートBを再生し、300ms待って、メモCを再生する」という指示があり、「ノートXを再生する」たびにUDPでデータを送信する必要があります。私はTimerTaskとシステム時間をチェックし、どれくらいの時間が経過したかを計算し、それに基づいてノートを再生するかどうかを決めるループを持つ単純なスレッドを使って試しましたが、どちらの方法もタイミングの問題を抱えているようです。 TimerTaskは指定された間隔(ドキュメントに記載されている)で正確に実行されないので、エラーメッセージが表示されます。スレッドはうまく動作しますが、それは他のスレッドが優先されているので、時々発生することがあります。Androidアプリで正確なタイミングでデータを送信するにはどうすればよいですか?
より正確なタイミングでこのデータを送信するより良い方法はありますか?オーディオを再生するために使用されるJavaのClipインターフェイスのようなものがありますか?
ご協力いただきありがとうございます。
したがって、オーディオを再生するアプリケーションは適切な時間を保ちますか? Androidアプリがファイルから曲を再生するとき、これらのタイプの問題はありません。私はあなたが上記のものではないと言っているわけではありません、私はあなたが言及した問題にもかかわらず、オーディオ再生がどのように達成されるか知りたいです – jteezy14
タイミングデータではありません。ファイルデータをメモリに書き込みます。次に、データがどこにあるかをサウンドカードに伝え、サウンドカードはメモリを読み取り、それを出力します。これはもちろん簡素化です(完全な答えにはDMAやバッファリサイクルなどが含まれます)が、実際の音楽を再生するには別のハードウェアに渡します。 –