我必须编写简单的应用程序来帮助组织学习时间。
我将通过几个步骤进行审核:
1.set您的学习时间间隔,并设置休息时间
2。运行计时器
3。如果计时器停止计时,应用开始响起,并向我们显示一个“警报”对话框,以决定我们想要的休息类型(无论休息类型如何)
4。休息计时器开始的
5。如果休息计时器停止,我们必须决定是否要了解更多
6。如果我们仍然想学习,请返回步骤1。
好的。应用程序效果很好,但是当我们不在后台使用它时(但计时器一直都在工作,为此我使用了sharedPreferences)。
最糟糕的是缺少警报声和对话。
我将向您展示部分代码来控制这两件事:
public void startTimer() {
mEndTime = System.currentTimeMillis() + mTimeLeftInMillis;
mCountDownTimer = new CountDownTimer(mTimeLeftInMillis, 1000) {
@Override
public void onTick(long millisUntilFinished) {
mTimeLeftInMillis = millisUntilFinished;
updateCountDownText();
}
@Override
public void onFinish() {
mTimerRunning = false;
timerFinish=true;
updateWatchInterface();
if (!timeToBreak)
{
breakDialog();
}
else
{
learnDialog();
}
alarm_start();
}
}.start();
mTimerRunning = true;
updateWatchInterface();
}
public void alarm_start() {
if(player == null) {
player = MediaPlayer.create(this, R.raw.iphone_alarm);
player.setOnCompletionListener(new
MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
alarm_stop();
}
});
}
player.start();
}
public void alarm_stop(){
if (player!=null)
{
player.release();
player = null;
}
}
@Override
protected void onStop() {
super.onStop();
SharedPreferences prefs = getSharedPreferences("prefs", MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putLong("startTimeInMillis", mStartTimeInMillis);
editor.putLong("millisLeft", mTimeLeftInMillis);
editor.putBoolean("timerRunning", mTimerRunning);
editor.putLong("endTime", mEndTime);
editor.apply();
if (mCountDownTimer != null) {
mCountDownTimer.cancel();
}
alarm_stop();
}
@Override
protected void onStart() {
super.onStart();
SharedPreferences prefs = getSharedPreferences("prefs", MODE_PRIVATE);
mStartTimeInMillis = prefs.getLong("startTimeInMillis", 600000);
mTimeLeftInMillis = prefs.getLong("millisLeft", mStartTimeInMillis);
mTimerRunning = prefs.getBoolean("timerRunning", false);
updateCountDownText();
updateWatchInterface();
if (mTimerRunning) {
mEndTime = prefs.getLong("endTime", 0);
mTimeLeftInMillis = mEndTime - System.currentTimeMillis();
if (mTimeLeftInMillis < 0) {
mTimeLeftInMillis = 0;
mTimerRunning = false;
updateCountDownText();
updateWatchInterface();
} else {
startTimer();
}
}
}
@Override
protected void onResume() {
super.onResume();
if(timerFinish)
{
breakDialog();
}
else
{
}
}
当我使用此功能的服务时,您认为这是解决alarm_ring的方法吗?
您有什么解决办法吗?
感谢您的帮助:)