я работаю над аудиоплеером, который содержит подачу в 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)
пожалуйста, помогите мне . я застрял в нем. по некоторым причинам я использую рекурсивный, а не пока... мой метод...
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();
}
}