首页 文章

mp.release崩溃的音板应用程序

提问于
浏览
0

我使用以下代码播放声音,过了一段时间它会停止播放声音,这是因为有太多媒体播放器打开的实例我相信所以我添加了额外的 mp.release(); 它只是崩溃我的应用程序(它目前被注释掉了) .

这是我正在使用的实际代码 .

public void audioPlayer(String path, String fileName){
    //set up MediaPlayer    
    MediaPlayer mp = new MediaPlayer();
    if (mp!=null){
 //       mp.release();

       }

    try {
        mp.setDataSource(path+"/"+fileName);
    } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    try {
        mp.prepare();
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    mp.start();

}

并在我的应用程序中调用它我使用:

audioPlayer(sdcard + "/soundboard","s1sound1.ogg");

任何人都可以告诉我为什么它会崩溃,我需要做些什么来解决它?

1 回答

  • 3

    来自documentation

    释放后,对象不再可用

    因此,您无法对其执行任何操作 . 如果你创建一个新的 MediaPlayer 对象,无论如何都不需要调用它 .

    相反,你可以这样做:

    public void audioPlayer(String path, String fileName){
        if (mp != null)
            mp.release();    
        mp = new MediaPlayer();
        ....
    

    并将 MediaPlayer mp; 声明为类成员,而不是本地成员 .

相关问题