我正在创建一个应用程序,当按下不同的按钮时,该应用程序会播放不同的声音。到目前为止,除两个问题外,其他一切似乎都运行顺利。第一个问题是,在启动时,如果我没有先播放音频文件就单击停止按钮,则我的应用程序将崩溃。如果有人可以帮助我,我会很感激,因为我敢肯定,这对那些比我有更多经验的人来说是个简单的解决方法。我的第二个问题是,如果我同时播放两个音频,然后单击停止按钮,则只有一个音频停止。但是,如果我同时播放多个音频,然后按停止按钮,则所有音频都不会停止。我可以对代码进行任何更改以帮助我解决此问题吗? 我的代码如下:
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();
}
}
答案 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
的原型。遵循一些完整的教程以使其在每种情况下都可以工作。