【问题标题】:Android:Playing AudioTrack multiple times producing crashAndroid:多次播放 AudioTrack 会导致崩溃
【发布时间】:2010-03-16 20:55:38
【问题描述】:

我正在尝试使用 AudioTrack 播放音频缓冲声音 (.wav)。请看下面的代码。我需要在一个线程下调用这个函数来支持同时播放。在线程下很好。正常播放声音工作正常。但是,如果我连续使用 AudioTrack 执行播放声音(即在完成第一个播放声音之前执行第二次播放),则会产生设备崩溃(强制关闭意外错误)。 有没有人遇到过这样的问题并以某种方式解决?

private void PlayAudioTrack(String filePath) throws IOException
{

    if (filePath==null)
        return;

    byte[] byteData = null;

    File file = null; 
    file = new File(filePath); // sdcard path
    byteData = new byte[(int) file.length()];
    FileInputStream in = null;
    try {
        in = new FileInputStream( file );
        in.read( byteData );
        in.close(); 

    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    int intSize = android.media.AudioTrack.getMinBufferSize(8000, AudioFormat.CHANNEL_CONFIGURATION_MONO,
            AudioFormat.ENCODING_PCM_8BIT);

    at = new AudioTrack(AudioManager.STREAM_MUSIC, 8000, AudioFormat.CHANNEL_CONFIGURATION_MONO,
                        AudioFormat.ENCODING_PCM_8BIT, intSize, AudioTrack.MODE_STREAM);

    at.play();

    at.write(byteData, 0, byteData.length);
    at.stop();              

}

感谢您的回复。

谢谢。

【问题讨论】:

    标签: android


    【解决方案1】:

    您必须释放 AudioTracks 资源并停止它

    at.release();
    

    【讨论】:

    • 感谢您的回复。你的意思是我应该使用 at.stop(); at.release();在每次新鲜执行之前?
    • 我尝试在停止播放后和开始播放等场景之前释放它,但是当我的应用程序同时执行播放时,崩溃正在发生。如果您有任何样品,请提供任何样品。
    • 我目前在我的应用程序的 onDestroy() 方法中使用 release 你在哪里使用它?
    • 在 onDestroy() 中释放它只会在我们退出应用程序时被调用。这不是我的情况。我只是按住一个按钮,我将这个音轨播放代码保存在按钮下,产生了崩溃,因为它试图连续点击一个接一个地调用播放。只有在播放之前的声音播放并同时创建新的声音播放时才会观察到崩溃。在这种情况下如何解决?
    • 它在 logcat 中给出错误如下: AudioFlinger:没有更多可用的轨道名称 AudioTrack:AudioFlinger 无法创建轨道 AudioTrack:错误 -20 初始化 AudioTrack Play() 调用未初始化的 AudioTrack 我认为我不应该调用 play ,在找不到轨道时编写代码行,将解决我的问题。知道如何找出“未找到音轨”(或)“未初始化音轨”错误吗?
    猜你喜欢
    • 2011-12-28
    • 2021-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-06
    • 1970-01-01
    相关资源
    最近更新 更多