模拟谷歌Android设备管理器的响铃功能

谷歌 Android 设备管理器 (Android Device Manager) 中有一个特别好的功能——响铃。当设备丢失时可以发生丢失时,可以发出响铃预警。如下图所示:


模拟过程中用了三种方式进行模拟。
  1. 运用Notification发出声音,但是Notification不能重复,系统默认使用的音频就几秒钟的时间,所以不能持续5分钟。
  2. 运用AlarmManager发出声音,同样AlarmManager可以知道重复的间隔时间,但是不是设置重复的时间,所以不能持续5分钟。
  3. 最后运用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
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);
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值