我的应用程序遇到了一些问题,因为无论何时按下手机上的活动,应用程序都会重复播放音乐(与现有音乐重叠)。我似乎无法在不停止音乐的情况下阻止这种情况发生。
这是代码!
Main.java:
public class Main extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
music();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
public void music(){
final MediaPlayer mediaPlayer = MediaPlayer.create(this, R.drawable.background_musicmain);
mediaPlayer.start();
}
}
XML文件:
public class Main extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
music();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
public void music(){
final MediaPlayer mediaPlayer = MediaPlayer.create(this, R.drawable.background_musicmain);
mediaPlayer.start();
}
}
PS:我知道文件上还没有任何内容,但我现在正在菜单屏幕上工作!
答案 0 :(得分:0)
我建议您在使用以下代码播放音乐时停止MediaPlayer:
player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.stop();
mp.release();
}
});
如果您想继续播放音乐,请使用服务播放音乐而不是活动。
答案 1 :(得分:0)
问题是,无论音乐是否已播放,您都会拨打MediaPlayer.start();
。在您的方法中,您可以进行简单的检查,看看MusicPlayer是否已经在播放,如果不是,则启动它。
public void music(){
final MediaPlayer mediaPlayer = MediaPlayer.create(this, R.drawable.background_musicmain);
if(!mediaPlayer.isPlaying())
mediaPlayer.start();
}