我正在尝试在我的应用中播放音乐。当我点击“播放”按钮但是当我点击“停止”按钮时无法停止音乐时,我可以播放,请帮助查看此代码并指出问题。我正在使用MediaPlayer的pause()来暂停音乐。
public class MainActivity extends Activity implements OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = (Button)findViewById(R.id.Start);
btn.setOnClickListener(this);
Button btn1 =(Button)findViewById(R.id.stop);
btn1.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
MediaPlayer mp = MediaPlayer.create(this, R.raw.test_cbr);
switch(v.getId()){
case R.id.Start:
mp.start();
break;
case R.id.stop:
mp.pause();
Toast.makeText(getApplicationContext(), "Music Paused", Toast.LENGTH_SHORT).show();
}
}
}
我正在使用提醒信息。我收到此提示消息但无法暂停音乐。
答案 0 :(得分:1)
像这样修改你的代码,
public class MainActivity extends Activity implements OnClickListener {
MediaPlayer mp =null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mp = MediaPlayer.create(this, R.raw.test_cbr);
Button btn = (Button)findViewById(R.id.Start);
btn.setOnClickListener(this);
Button btn1 =(Button)findViewById(R.id.stop);
btn1.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.Start:
mp.start();
break;
case R.id.stop:
if(mp!=null && mp.isPlaying()){
mp.pause();
Toast.makeText(getApplicationContext(), "Music Paused", Toast.LENGTH_SHORT).show();
}
}
}
}
问题可能是因为您每次都在onClick中创建一个新的媒体播放器实例,因此之前创建的实例将会播放,但您尝试停止新创建的实例。
因此,全局分配它并仅在启动按钮中重新启动它应该可以完成这项工作。
答案 1 :(得分:1)
这是因为您每次点击都会创建一个新的MediaPlayer
实例。
您应该只有一个MediaPlayer
答案 2 :(得分:0)
每次媒体播放器都在创建新实例。将其设为全局。
在代码中尝试此更改。
case R.id.stop:
if(mp.isPlaying() && mp!=null)
{
mp.pause();
}
Toast.makeText(getApplicationContext(), "Music Paused", Toast.LENGTH_SHORT).show();
答案 3 :(得分:0)
switch (whatsong) {
case 1:
if(song1.isPlaying()){
song1.pause();
}