Aşağıdaki tanımla birlikte AudioTrack oluşturuyorum.audioTrack.stop sesli oynatmayı durdurmuyor
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 işlemi bittiğinde, sesi durdurmak ve kafa konumunu sıfırlamak için aşağıdakiler çağrılır.
private void resetAudioPlayback() {
ViewGroup.LayoutParams params = playbackView.getLayoutParams();
params.width = 0;
playbackView.setLayoutParams(params);
audioTrack.stop();
audioTrack.reloadStaticData();
playImage.animate().alpha(100).setDuration(500).start();
}
Yukarıdaki kod, Android 5.1 ile mükemmel çalışır. Ama 4.4.4 ile sorun yaşıyorum. audioTrack.stop() çağrılır ancak ses durdurulmaz, çünkü reloadStaticData sesi tekrar başlangıç konumuna geri sarar, ses yeniden çalar. ancak 5.1 ile, düzgün bir şekilde durur ve arabelleği tekrar oynatmanın başlangıcına sıfırlar ve oynat düğmesine basıldığında, en baştan oynatılır.
Birisi bana Android 4.4.4 ile bu sorunu nasıl çözebilir?
Aslında, daha önce denedim, audioTrack.pause ve floş, biz parçayı geri sarmak ve bir sonraki oyun için hazır tutmak için reloadStaticData diyoruz. Burada duraklatma ve yıkama işlevini çağırırsam, reloadStaticData sesi geri sararmaz. – User