当我按主页按钮或接听电话时,我的歌曲没有停止?当歌曲停止时,我的计时器也不会停止吗?有什么办法可以停止我的计时器吗?你能帮我一下吗?
public class MainActivity extends Activity {
private Button start, stop;
private MediaPlayer mp;
private TextView display, comment;
private TextView timerValue;
private long startTime = 0L;
private Handler customHandler = new Handler();
long timeInMilliseconds = 0L;
long timeSwapBuff = 0L;
long updatedTime = 0L;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
timerValue = (TextView) findViewById(R.id.timerValue);
start = (Button) findViewById(R.id.bStart);
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mp = MediaPlayer.create(MainActivity.this, R.raw.splahsound);
mp.start();
startTime = SystemClock.uptimeMillis();
customHandler.postDelayed(updateTimerThread, 0);
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.stop();
mp.reset();
mp.release(); // free up memory
mp = null;
}
});
}
});
stop = (Button) findViewById(R.id.bDur);
stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mp != null) {
try {
mp.stop();
mp.reset();
mp.release();
mp = null;
} catch (Exception e) {
Log.d("error", e.toString());
}
}
timeSwapBuff += timeInMilliseconds;
customHandler.removeCallbacks(updateTimerThread);
}
});
}
@Override
protected void onPause() {
super.onPause();
}
private Runnable updateTimerThread = new Runnable() {
public void run() {
timeInMilliseconds = SystemClock.uptimeMillis() - startTime;
updatedTime = timeSwapBuff + timeInMilliseconds;
int secs = (int) (updatedTime / 1000);
int mins = secs / 60;
secs = secs % 60;
// int milliseconds = (int) (updatedTime % 1000);
timerValue.setText("" + mins + ":" + String.format("%02d", secs));
customHandler.postDelayed(this, 0);
}
};
}
最佳答案
您可以在 onPause 方法中停止 MediaPlayer:
@Override
protected void onPause() {
//stop mediaplayer:
if (mp != null && mp.isPlaying()) {
mp.stop();
}
super.onPause();
}
而不是:
@Override
protected void onPause() {
super.onPause();
}
注意:检查 MediaPlayer 当前是否正在播放非常重要,因为调用 stop()当前未播放的 MediaPlayer 上的方法将抛出 IlegalStateException。
关于android - 退出应用程序或电话铃声时媒体播放器停止播放歌曲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23065671/