我制作了一个示例应用程序,其中只有两个按钮 1.开始(开始音乐) 2.停止(停止音乐)。
这是我的代码:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
MediaPlayer mp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Button b1 = (Button) findViewById(R.id.button_start);
b1.setOnClickListener(this);
Button b2 = (Button) findViewById(R.id.button_stop);
b2.setOnClickListener(this);
mp = MediaPlayer
.create(getApplicationContext(), R.raw.alarm);
try {
mp.prepare();
} catch (IOException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
}
mp.setLooping(true);
mp.setVolume(0.5f,0.5f);
}
@Override
public void onClick(View v) {
int id = v.getId();
switch (id) {
case R.id.button_start:
startAlarm();
break;
case R.id.button_stop:
stopAlarm();
}
}
private void stopAlarm() {
if(mp.isPlaying()) {
Log.e("XXX","Tone Paused");
mp.pause();
}
new Thread(new Runnable() {
@Override
public void run() {
while(mp.isPlaying()){
Log.e("XXX", "tone still playing ...");
}
Log.e("XXX", "Thread stopped");
}
}).start();
}
private void startAlarm() {
mp.start();
}
}
现在我看到mp.pause()正在调用,之后mp.isPlaying()返回false。但音乐一直在播放,直到我关闭设备才会停止播放。
我不确定这是否是android os或硬件的错误。我检查了其他Android 6.0设备,但它工作正常。
有人可以告诉我可能的根本原因吗?
提前致谢!!!
答案 0 :(得分:0)
更改stopAlarm()方法
private void stopAlarm() {
if(mp.isPlaying()) {
mp.stop();
mp.reset();
mp.release();
}
}