2

AudioTrackAndroidでPCMWAVサウンドファイルを再生するために使用しています(こちらも参照)。ストリーミングモード、ワーカースレッド。を解放して解放できるように、サウンドの終わりをどのように検出するのか疑問に思っていますAudioTrack。通話はwrite()ブロックされているようですが、提供されたデータの再生が完了するまでブロックされますか?よくわかりません。

それは私ですか、それともこのクラスのドキュメントはひどく不十分ですか?の素敵な非公式ガイドへのリンクがあれば、AudioTrackぜひご覧ください。

4

1 に答える 1

11

私の経験でAudioTrack.write()は、データがHWのオーディオバッファに書き込まれるまで、呼び出しはブロックされます。

したがって、write()終了後、オーディオの再生が保証されます。基本的にはうまくいきます。

オーディオの終わりをより正確に検出するには、とを使用AudioTrack.setNotificationMarkerPosition()AudioTrack.setPlaybackPositionUpdateListener()ます。(バイトではなく)オーディオサンプルをカウントすることに注意setNotificationMarkerPosition()してください。したがって、オーディオが16ビットサンプルの場合、位置はdataSize/2になります。

私のプロジェクトには例があります: https ://github.com/mine260309/android-sexypsf-player/blob/psf2/src/com/mine/psf/sexypsf/MineSexyPsfPlayer.java

于 2012-09-11T07:14:24.900 に答える