次の定義でAudioTrackを作成しています。audioTrack.stopはオーディオの再生を停止しません
audioTrack = new AudioTrack(
AudioManager.STREAM_MUSIC,
44100,
AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_16BIT,
buffer.length * 2,
AudioTrack.MODE_STATIC);
audioTrack.write(buffer, 0, buffer.length);
audioTrack.setPositionNotificationPeriod(500);
audioTrack.setNotificationMarkerPosition(buffer.length);
progressListener = new PlaybackProgress(buffer.length);
audioTrack.setPlaybackPositionUpdateListener(progressListener);
audioTrackが終了すると、オーディオを停止してヘッドの位置をリセットするために、以下が呼び出されます。
上記のコードは、Android 5.1で完全に正常に動作します。しかし、私は4.4.4で問題があります。 audioTrack.stop()は呼び出されますが、オーディオは停止しません。これは、reloadStaticDataがオーディオを開始位置に巻き戻し、オーディオを再生するためです。 5.1を使用すると、正しく停止してバッファを再生の開始に戻し、再生ボタンを押すと最初から再生されます。
Android 4.4.4でこの問題をどのように解決できますか?
実は、私はすでに、audioTrack.pauseを試してみましたが、フラッシュ、事は私達がトラックを巻き戻し、次のプレイの準備ができて、それを維持するためにreloadStaticDataを呼び出しています。ここで、pauseとflushを呼び出すと、reloadStaticDataはオーディオを巻き戻しません。 – User