`

android 设置铃声+振动

 
阅读更多
有时候一些通讯软件需要这些个功能,比如说收到短信,通知等,要求手机发出铃声,或震动,或发光以提示用户知晓。往往手机都是有默认设置的,比如说用户开启了铃声+震动;只铃声不震动;完全静音等等...

这个时候就需要有一个规则了,起码软件的设置不能跟系统的冲突吧,中间的一些逻辑是要处理好的!之前做过的软件中有这么个需求,而且代码是我负责的,所以总结一下。

思路:
  1. 软件应该有个自己的设置配置文件,用以保存,自己的软件的提醒规则
  2. 遵从系统的设置,比如说:系统是完全静音的,人家想睡觉啦,你软件虽然是铃声震动全开,也得乖乖闭嘴。
  3. 如果有需要提醒了,先获取系统的配置,然后做逻辑判断给予什么样的提醒。

//首先需要接收一个Notification的参数
private void setAlarmParams(Notification notification) {
//AudioManager provides access to volume and ringer mode control. AudioManager volMgr = (AudioManager) mAppContext.getSystemService(Context.AUDIO_SERVICE);
switch (volMgr.getRingerMode()) {

//获取系统设置的铃声模式
case AudioManager.RINGER_MODE_SILENT:

//静音模式,值为0,这时候不震动,不响铃
notification.sound = null;
notification.vibrate = null;
break;
case AudioManager.RINGER_MODE_VIBRATE:

//震动模式,值为1,这时候震动,不响铃
notification.sound = null;
notification.defaults |= Notification.DEFAULT_VIBRATE; break; case AudioManager.RINGER_MODE_NORMAL:

//常规模式,值为2,分两种情况:1_响铃但不震动,2_响铃+震动
Uri ringTone = null;
//获取软件的设置
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(mAppContext);
if(!sp.contains(SystemUtil.KEY_RING_TONE)){

//如果没有生成配置文件,那么既有铃声又有震动
notification.defaults |= Notification.DEFAULT_VIBRATE; notification.defaults |= Notification.DEFAULT_SOUND;
}else{ String ringFile = sp.getString(SystemUtil.KEY_RING_TONE, null);
if(ringFile==null){

//无值,为空,不播放铃声
ringTone=null;
}else if(!TextUtils.isEmpty(ringFile)){

//有铃声:1,默认2自定义,都返回一个uri
ringTone=Uri.parse(ringFile);
}
notification.sound = ringTone;
boolean vibrate = sp.getBoolean(SystemUtil.KEY_NEW_MAIL_VIBRATE,true);
if(vibrate == false){

//如果软件设置不震动,那么就不震动了
notification.vibrate = null;
}else{

//否则就是需要震动,这时候要看系统是怎么设置的:不震动=0;震动=1;仅在静音模式下震动=2;
if(volMgr.getVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER) == AudioManager.VIBRATE_SETTING_OFF){
//不震动
notification.vibrate = null;
}else if(volMgr.getVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER) == AudioManager.VIBRATE_SETTING_ONLY_SILENT){
//只在静音时震动
notification.vibrate = null; }else{
//震动
notification.defaults |= Notification.DEFAULT_VIBRATE;
}
}
}
notification.flags |= Notification.FLAG_SHOW_LIGHTS;

//都给开灯
break;
default: break;
}

}
分享到:
评论

相关推荐

    android铃声振动模式

    关于android铃声模式和振动模式的调用方法

    android 音量控制 定时 震动 静音 铃声 情景模式 设置

    里面有的内容可能你不需要,有的内容可以扩充。 这个是关于android手机情景模式设置的小例子。希望对大家有利

    android情景模式

    我自己写的一个简单的情景模式,有铃音、振动、静音、铃音及振动。四种模式。界面简单实用

    Android铃声设置模块

    摘要:Java源码,Android源码,铃声设置 Android铃声设置模块源码,通过本Andorid源码将了解以下相关技巧: 声明和取得TabHost对象、新建一个newTabSpec(newTabSpec)、设置其标签和图标(setIndicator)、设置内容...

    《Google Android SDK开发范例大全(第3版)》.pdf

    8.9 设置远程下载音乐为手机铃声 534 8.10 远程下载桌面背景图案 539 8.11 将手机文件上传至网站服务器 542 8.12 移动博客发布器 546 8.13 移动rss阅读器 551 8.14 远程下载安装android程序 560 ...

    SleepingMarmot:一键关闭wifi +设置手机振动和反转。 睡觉和起床时非常有用

    另外,使用Sleepmot,您可以将铃声模式设置为在接听电话时振动。 在优先模式下,呼叫将不会振铃或什么都不触发,因此您无法将其设置为仅振动。 嘿,那我为什么不使用飞行模式呢? 在飞机模式下,您无法接听电话。 ...

    Android SMSPopup

    android短信开发中一个经典的参考案例,拥有短信彩信接收的各种设置 包括铃声 振动 LED灯等等,还支持不同联系人单独设置..

    Google Android SDK开发范例大全(第3版) 1/5

    完整的手机数据存取功能:铃声模式设置、震动控制、WiFi服务、屏幕旋转、电池计量、温度测量、电信网络信息、SIM卡信息、拨打电话、短信解析、通讯录联系人、电子罗盘、屏幕手写等手机控制功能。 系统服务及研发的...

    Google Android SDK开发范例大全(第3版) 4/5

    完整的手机数据存取功能:铃声模式设置、震动控制、WiFi服务、屏幕旋转、电池计量、温度测量、电信网络信息、SIM卡信息、拨打电话、短信解析、通讯录联系人、电子罗盘、屏幕手写等手机控制功能。 系统服务及研发的...

    Google Android SDK开发范例大全(第3版) 3/5

    完整的手机数据存取功能:铃声模式设置、震动控制、WiFi服务、屏幕旋转、电池计量、温度测量、电信网络信息、SIM卡信息、拨打电话、短信解析、通讯录联系人、电子罗盘、屏幕手写等手机控制功能。 系统服务及研发的...

    Google Android SDK开发范例大全(第3版) 5/5

    完整的手机数据存取功能:铃声模式设置、震动控制、WiFi服务、屏幕旋转、电池计量、温度测量、电信网络信息、SIM卡信息、拨打电话、短信解析、通讯录联系人、电子罗盘、屏幕手写等手机控制功能。 系统服务及研发的...

    Google Android SDK开发范例大全(第3版)part2

     8.9 设置远程下载音乐为手机铃声  8.10 远程下载桌面背景图案  8.11 将手机文件上传至网站服务器  8.12 移动博客发布器  8.13 移动RSS阅读器  8.14 远程下载安装Android程序  8.15 手机下载看3gp影片 ...

    手机翻背面即静音振动

    当程序发现手机被翻成背面时,就会将铃声模式更改为振动模式,如在上班会议等其他场合中忘记将铃声调整为静音振动时,就可以利用这个程序快速地关闭手机铃声。 分享参考自Android SDK开发范例大全第3版。

    android 触屏的震动响应接口调用方法

    您可能感兴趣的文章:android开发之蜂鸣提示音和震动提示的实现原理与参考代码Android实现调用震动的方法android滑动解锁震动效果的开启和取消android获取情景模式和铃声 实现震动、铃声提醒Android实现手机震动效果...

    简单闹钟(振动提醒)

    实现简单的闹钟功能,到时间后振动提醒,没有系统自带闹钟的铃声

    中国好铃声 2.9.12

    检索当前运行的应用程序▪ 更改您的音频设置▪ 装载和卸载文件系统▪ 拦截外拨电话▪ 读取联系人数据▪ 读取手机状态和身份▪ 开机时自动启动▪ 录音▪ 修改/删除 SD 卡中的内容▪ 显示系统级警报▪ 控制振动器▪ ...

    android小闹钟

    这是个基于android2.2的闹钟小程序,集合了alarm listview dialog intent broadcast 铃声 振动等多种技术,因为是一个练手的小程序所以代码比较乱

    Android-Notification:Android通知库(布局中,浮动和状态栏通知)

    概述有3个主要组成部分: 本地通知(管理布局通知) 全局通知(管理浮动通知) 通知远程(管理状态栏通知) 和2个次要组件: 公告板(保存公告列表) 通知效果(管理铃声,振动等) 每个通知可以具有自己的布局和...

    Android个性闹钟—摇摇醒应用案例

    这是使用android闹钟的必须类,可以设置闹钟重复提醒,切换关闭与打开状态。以及跳转的广播。 Broadcast的使用。通过广播的方式打开acivity,实现摇晃闹钟。 使用播放铃声、控制振动器。通过MediaPlayer和Vibrator类...

Global site tag (gtag.js) - Google Analytics