我的停止按钮有问题

时间:2018-07-25 03:40:33

标签: java android android-studio-3.0

我正在创建一个应用程序,当按下不同的按钮时,该应用程序会播放不同的声音。到目前为止,除两个问题外,其他一切似乎都运行顺利。第一个问题是,在启动时,如果我没有先播放音频文件就单击停止按钮,则我的应用程序将崩溃。如果有人可以帮助我,我会很感激,因为我敢肯定,这对那些比我有更多经验的人来说是个简单的解决方法。我的第二个问题是,如果我同时播放两个音频,然后单击停止按钮,则只有一个音频停止。但是,如果我同时播放多个音频,然后按停止按钮,则所有音频都不会停止。我可以对代码进行任何更改以帮助我解决此问题吗? 我的代码如下:

     MediaPlayer mp;
     Button buttonPressed;

public void play(View view){

    buttonPressed = (Button) view;
    mp = MediaPlayer.create(this, getResources().getIdentifier(buttonPressed.getTag().toString(), "raw", getPackageName()));
    mp.start();

    }

    public void stop(View view){

    if(mp.isPlaying()){
        mp.stop();
    }
    }

1 个答案:

答案 0 :(得分:0)

第一个问题必须是NullPointerException,因为您是在play内部创建mp的。 作为解决方案,只需全局创建MediaPlayer并根据声音选择更改数据源。

private MediaPlayer mediaPlayer;// As global variable 

在构造函数中初始化它,或者如果您在Activity中使用它,则在onCreate中进行它。

 mediaPlayer=new MediaPlayer();
 mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);


 public void play(String mediaUrl){
        try {
            if (mediaPlayer.isPlaying())
                mediaPlayer.reset();
             }
           // Change the data source here
        mediaPlayer.start();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

使用mediaPlayer.pause()mediaPlayer.stop();             和mediaPlayer.release();来操纵mediaPlayer。 这只是使用MediaPlayer的原型。遵循一些完整的教程以使其在每种情况下都可以工作。