谷歌
Android
设备管理器
(Android Device Manager)
中有一个特别好的功能——响铃。当设备丢失时可以发生丢失时,可以发出响铃预警。如下图所示:
模拟过程中用了三种方式进行模拟。
Android设备显示截图如下:
当点击“开始响铃”按钮时候,铃声开始响起,如果不采取任何操作,铃声会响5分钟自动停止。当响铃过程中按下 "停止响铃"按钮,或者电源开关键时候,响铃停止。
实现代码如下:
//变量的定义
模拟过程中用了三种方式进行模拟。
- 运用Notification发出声音,但是Notification不能重复,系统默认使用的音频就几秒钟的时间,所以不能持续5分钟。
- 运用AlarmManager发出声音,同样AlarmManager可以知道重复的间隔时间,但是不是设置重复的时间,所以不能持续5分钟。
- 最后运用MediaPlayer重复播放系统默认音频和CountDownTimer(开始某件事件的执行,直到特定的时间)的方式。
Android设备显示截图如下:
当点击“开始响铃”按钮时候,铃声开始响起,如果不采取任何操作,铃声会响5分钟自动停止。当响铃过程中按下 "停止响铃"按钮,或者电源开关键时候,响铃停止。
实现代码如下:
//变量的定义
private MyCount counter;
private MediaPlayer mediaplayer = null;
//点击“开始响铃”按钮
//当点下电源键时候 停止声音
//点击“开始响铃”按钮
case R.id.ring_start:
try {
mediaplayer= new MediaPlayer();
Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
mediaplayer.setDataSource(this, alert);
mediaplayer.setAudioStreamType(AudioManager.STREAM_NOTIFICATION);
mediaplayer.setLooping(true);
mediaplayer.prepare();
mediaplayer.start();
} catch (Exception e) {
e.printStackTrace();
}
counter = new MyCount(300000, 1000);//300000 = 5 分* 60秒 * 1000(1秒 1000毫秒)
counter.start();
break;
//按下 "停止响铃"按钮
//按下 "停止响铃"按钮
case R.id.ring_stop:
if(null != counter){
counter.stop();
}
break;
//我的CountDownTimer
//我的CountDownTimer
private class MyCount extends CountDownTimer {
public MyCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onFinish() {
mediaplayer.stop();
mediaplayer.release();
}
public void stop(){
cancel();
onFinish();
}
@Override
public void onTick(long millisUntilFinished) {
// s1=millisUntilFinished;
}
}
//当点下电源键时候 停止声音
@Override
public boolean --(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_POWER && event.getRepeatCount() == 0) {
//stopNotificationSound();
if(null != counter){
counter.stop();
}
return false;
}
return super.(keyCode, event);
}