`

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)、设置内容...

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

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

    Android SMSPopup

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

    Android_Notification详细解读

    Android Notification 详细解读 Android Notification 是 ...5. 发出听得见的警告声(铃声,保存的声音文件) Android Notification 是一种非常有用的对话机制,能够帮助开发者在应用程序中提供更好的用户体验。

    手机翻背面即静音振动

    当程序发现手机被翻成背面时,就会将铃声模式更改为振动模式,如在上班会议等其他场合中忘记将铃声调整为静音振动时,就可以利用这个程序快速地关闭手机铃声。 分享参考自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类...

    利用Android加速度传感器,距离传感器实现手机防盗.zip

    设置系统铃声作为报警音、提示音 手势解锁 按键解锁:锁屏状态按键解锁 音量锁定 屏蔽关机 闪光灯开关 振动开关 报警模式:口袋模式/重力感应/光感应 USB拔插报警(拔出耳机或数据线) 延迟报警,弹出手势解锁 重力...

    silence-toggle-for-lollipop:一个简单的应用程序,可以在每次运行时在完整、振动和静音(优先)模式之间切换铃声音量。 适用于 Android 5.0 Lollipop

    静音切换棒棒糖 一个简单的应用程序,可以在每次运行时在完整、振动和静音(优先)模式之间切换铃声音量。 旨在用于 Android 5.0 Lollipop。

    StopTimer:目前可在Google Play上获取Android应用程序的完整源代码-Android application source code

    停止计时器 目前可在Google Play上使用的Android应用程序的完整源代码: Stop... 自定义每个计时器间隔的蜂鸣/铃声,蜂鸣次数和振动设置。 创建重复计时器(如果有多个间隔,则所有间隔按顺序结束后,计时器将重复

    debatekeeper:定时辩论辩论的Android应用程序,可自动响起铃声

    该应用程序会在响铃时响铃,振动和/或使屏幕变白(或三者的任意组合)。 它还会按时响铃,这是可配置的。 该应用程序的网站位于 。 您可以在Google Play商店中安装该应用程序:这个应用程式的状态是什么? 上次更新...

    PassportFeignServiceTests.java

    除了空间音频,Android 12 上的 App 还可以通过手机的振动马达,提供与声音相匹配的触觉反馈,实现更身临其境的游戏和音频体验。例如,可以使用通过不同铃声对应触觉反馈来识别来电者,或者在赛车游戏中模拟崎岖路面...

Global site tag (gtag.js) - Google Analytics