gpt4 book ai didi

android - AudioTrack 中的错误

转载 作者:行者123 更新时间:2023-12-03 16:18:08 26 4
gpt4 key购买 nike

我正在开发一个音频播放器,其中包含向 AudioTrack 提供的内容,
在 native 的帮助下,我从音轨中获得了声音,但事情是经过一段时间后,我的 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();
}

}

最佳答案

看看这个SO answer .希望这会有所帮助。如果您不会使用递归方法,可以查看 code snippet .

引用答案“有一种方法可以增加堆栈大小,尽管您可能无法在主 UI 线程中通过使用 Thread 对象参数来做到这一点:

ThreadGroup group = new ThreadGroup("threadGroup");
new Thread(group, runnableObject, "YourThreadName", 2000000).start();

这会将堆栈大小增加到 2M。

关于android - AudioTrack 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31871115/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com