【发布时间】:2015-08-07 06:32:18
【问题描述】:
我正在开发一个音频播放器,其中包含向 AudioTrack 提供的内容, 在本机的帮助下,我从音轨中获得了声音,但事情是经过一段时间后,我的 AudioTrack 类中出现堆栈溢出错误。 我在 .manifest 中增加了堆大小,但它没有改变任何东西。 我的日志是:
08-07 11:53:49.843: E/AndroidRuntime(23539): FATAL EXCEPTION: Thread-1298
08-07 11:53:49.843: E/AndroidRuntime(23539): Process: com.example.player, PID: 23539
08-07 11:53:49.843: E/AndroidRuntime(23539): java.lang.StackOverflowError
08-07 11:53:49.843: E/AndroidRuntime(23539): at android.media.AudioTrack.write(AudioTrack.java:1141)
08-07 11:53:49.843: E/AndroidRuntime(23539): at com.example.player.MusicService.recursive(MusicService.java:100)
08-07 11:53:49.843: E/AndroidRuntime(23539): at com.example.player.MusicService.recursive(MusicService.java:105)
08-07 11:53:49.843: E/AndroidRuntime(23539): at com.example.player.MusicService.recursive(MusicService.java:105)
08-07 11:53:49.843: E/AndroidRuntime(23539): at com.example.player.MusicService.recursive(MusicService.java:105)
请帮助我。我被困在里面了。 由于某些原因,我正在使用递归而不是 do while.. 我的方法是……
void recursive() {
// Log.e("", "reccursive called");
if (paused) {
Log.e("", "is paused " + paused);
signalControl.doWait();
}
err = NativeWrapper.decodeMP3(minBufferSize * 2, buffer);
// Log.e("", "" + buffer.length);
// byte[] bufferbyte = ShortToByte_Twiddle_Method(buffer);
// Log.e("", "mp3 decoding by native");
track.write(buffer, 0, minBufferSize); // Write
track.flush();
// Log.e("", "write to track");
// track.flush();
if (err != MPG123_DONE) {
recursive();
}
}
【问题讨论】:
标签: android crash audiotrack