多次调用 AudioTrack 时崩溃

Crash when calls AudioTrack multiple times

我正在使用 Visualizer。它将从 AudioTrack 获取数据并在我单击按钮时显示。在按钮中,我将调用 DrawStart 函数,如下所示:

  private void DrawStart() {
        if (startDrawing) {
            initRecorder();
            mVisualizerView.link(track);    
            startRecording();       
        }
    else {
        DrawStop();
    }

}

首次点击10次左右效果很好。这意味着如果我调用 DrawStart 超过 10 次,它就会出错

Fatal signal 11 (SIGSEGV) at 0x00030000 (code=1), thread 8164 (Visualizer)  

你能帮我修一下吗?非常感谢。有我的子功能

private void initRecorder() {
    _audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
    int maxJitter = AudioTrack.getMinBufferSize(SAMPLE_RATE, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT);

    track = new AudioTrack(AudioManager.MODE_IN_COMMUNICATION, SAMPLE_RATE, AudioFormat.CHANNEL_OUT_MONO,
            AudioFormat.ENCODING_PCM_16BIT, maxJitter, AudioTrack.MODE_STREAM);
    _audioManager.startBluetoothSco();
    _audioManager.setMode(AudioManager.STREAM_VOICE_CALL);      

}
private void startRecording() {
        recordingThread = new AudioRecordingThread(track,mRecorder, bufferSize,SAMPLE_RATE,new AudioRecordingHandler()  {
        // Do something
        });
        recordingThread.start();
    }

private void DrawStop() {
    if (recordingThread != null) {
        recordingThread = null;
    }
    track.release();
    startDrawing = true;
}

public void link(AudioTrack player)
  {
    if(player == null)
    {
      throw new NullPointerException("Cannot link to null MediaPlayer");
    }

    int playerId=player.getAudioSessionId();
    // Create the Visualizer object and attach it to our media player.
    mVisualizer = new Visualizer(playerId);
    mVisualizer.setScalingMode(Visualizer.SCALING_MODE_NORMALIZED);
    mVisualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[1]);
}

已通过在 AndroidManifest.xml

中将应用程序的 hardwareAccelerated 属性设置为 false 来解决此问题
<application
    android:hardwareAccelerated="false"