【问题标题】:Error in AudioTrackAudioTrack 中的错误
【发布时间】: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


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多