- 浏览: 229585 次
- 性别:
- 来自: 广州
-
文章分类
- 全部博客 (109)
- IOS (15)
- 设计模式 (7)
- XML (1)
- Android (31)
- 面试经 (1)
- J2EE (3)
- android md5 加密 (2)
- android imagebutton文字实现 (1)
- 反射机制 (2)
- 基础知识 (1)
- linux (3)
- java (4)
- java基础 (2)
- 文章 (1)
- myeclipse tomcat (1)
- Hadoop (1)
- ubuntu (2)
- redmine (1)
- python (4)
- jmeter (10)
- xamarin (1)
- selenium (9)
- nexus (1)
- appium (3)
- BDD (1)
- apache2 (1)
- zabbix (2)
- python,webdriver (1)
- ajax (1)
- jmeter,正则表达式,关联 (2)
- 性能测试工具 (1)
- Django (0)
- Intelij (1)
- RAP (0)
- 性能测试 (0)
最新评论
有时候一些通讯软件需要这些个功能,比如说收到短信,通知等,要求手机发出铃声,或震动,或发光以提示用户知晓。往往手机都是有默认设置的,比如说用户开启了铃声+震动;只铃声不震动;完全静音等等...
这个时候就需要有一个规则了,起码软件的设置不能跟系统的冲突吧,中间的一些逻辑是要处理好的!之前做过的软件中有这么个需求,而且代码是我负责的,所以总结一下。
思路:
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;
}
}
这个时候就需要有一个规则了,起码软件的设置不能跟系统的冲突吧,中间的一些逻辑是要处理好的!之前做过的软件中有这么个需求,而且代码是我负责的,所以总结一下。
思路:
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;
}
}
发表评论
-
Starting emulator for AVD 'android' PANIC: Could not open: android
2013-05-21 13:29 1952我的电脑-->属性-->高级-->环境变量。 ... -
eclipse4.2版本下面安装ADT,安装已经完成了,但没有ADT的那个图标显示
2013-05-21 13:26 958如果安装过程没错,直接在Eclipse ->window ... -
Android 打包签名 从生成keystore到完成签名 -
2012-10-30 00:49 965首先,我们需要一个keystore,当然已经有了的话就不用这一 ... -
解决更新并使用最新ADT20不能创建android项目问题
2012-10-18 22:20 1079不知道谷歌又怎么了,每次更新ADT插件就会出现各种各样的问题, ... -
ORACLE分页查询SQL语法
2012-10-18 22:20 1225oracle数据库 --1:无ORDER BY ... -
Activity生命周期
2012-10-18 22:20 1153博客分类: Android 新的activit ... -
布局
2012-10-18 22:21 1128padding:描述控件里面的内容与控件的关机,内边距;有四个 ... -
常用控件:TextView EditView
2012-10-13 13:32 1204TextView 布局: Xml代 ... -
按钮控件
2012-10-13 13:32 1197监听器: 监听器 方法 内容 OnClickList ... -
菜单
2012-10-13 13:31 1131menu键触发 三种形式:普通的option menu;上下 ... -
HttpClient
2012-10-13 13:31 1150在Android开发中我们经常会用到网络连接功能与服务器进行数 ... -
Android 的一些提示框
2012-10-08 00:57 8091.在测试时,如何实现一个提示 可以使用 Toast.ma ... -
Intent的几种用法
2012-10-08 00:57 956下面列出几种Intent的用法 1. 启动一个新的Activ ... -
Android改变窗口标题栏的布局
2012-10-10 23:26 953一、 重点 一般应用的Title都是建立应用时在Androi ... -
android中如何自定义attributes
2012-10-10 23:26 1014写程序中可能需要用到一些自定义的view控件,这样就需要增加一 ... -
android manifest.xml中元素含义
2012-10-08 00:56 865android:allowTaskReparenting 是 ... -
十二个android编程技巧
2012-10-10 23:26 10311.让一个图片透明: Java代码 1. Bitm ... -
Android Phone类分析
2012-10-10 23:26 1239AccelerometerListener:感应 ... -
android控件设置居中方式
2012-10-07 00:16 8489垂直居中 android:layout_centerVert ... -
android TextView属性大全
2012-10-10 23:28 1008android:autoLink设置是否当 ...
相关推荐
### Android铃声振动模式 在Android应用开发中,对铃声及振动模式的控制是一项非常实用的功能。它允许开发者根据不同场景的需求调整设备的铃声和振动状态。例如,在开发消息应用时,可以通过改变这些设置来提醒用户...
音频服务负责与硬件交互,将设置的铃声模式和振动状态传递给硬件驱动,从而实现实际的静音和振动效果。 6. **定时输出(timed_output)**: 在Android中,`Vibrator`类提供了`vibrate(long[] pattern, int repeat)...
用户可以通过“设置”应用中的“声音与振动”选项来更改各种类型的铃声。然而,如果想要设置的铃声不在系统预设的列表中,就需要将自定义的音频文件添加到手机的特定目录。 对于开发者而言,了解这个过程背后的机制...
- 声音:可以设置默认铃声或自定义音频。 ```java Uri soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); builder.setSound(soundUri); ``` 4. 构建`Notification`对象并发送: ...
在Android操作系统中,设置手机铃声是一项基本且重要的功能,它允许用户个性化自己的手机通知声音。Android系统提供了多种方式来更改各种类型的铃声,包括来电、短信、闹钟以及通知等。下面我们将深入探讨Android...
- **音效设置**:AudioManager还支持设置音频模式(如静音、振动、响铃等)和音频焦点,用于处理多应用间的声音冲突。 - **声音效果**:若需要自定义声音效果,可以使用AudioTrack或AudioRecord类直接操作音频流,...
在Android系统中,音量控制、定时、震动、静音以及铃声等元素构成了用户交互的重要部分,而情景模式的设置则进一步提升了用户体验。本文将深入探讨这些知识点,并结合一个小型示例进行解析。 首先,音量控制是...
在Android操作系统中,情景模式(Ring Profile)是一种方便用户根据不同场合快速调整设备设置的功能,比如音量、振动、铃声等。它可以帮助用户在工作、会议、静音、睡眠等不同场景下,自动切换到相应的设备配置,以...
这个“android情景模式”项目是开发者创建的一个简单的自定义实现,提供了四种基本模式:铃音、振动、静音以及铃音加振动。下面将详细介绍这个项目的相关知识点。 1. **自定义情景模式**: 开发者创建了一个独立的...
在Android开发中,创建一个能够实现闹钟提醒并在锁屏状态下弹出Dialog对话框、播放铃声和振动的功能,涉及到多个关键知识点。以下是对这些知识点的详细解释: 1. **AlarmManager**: 这是Android系统服务,用于调度...
用户可以为每个事件设置提醒时间,选择提前多久收到通知,无论是通过手机振动、铃声还是推送通知,都能确保用户不会忘记任何安排。而且,用户还可以自定义提醒声音,让提醒更加个性化。 为了提高使用体验,Android...
3. 修改设置:打开系统设置,进入声音与振动设置,找到开机/关机音效选项,选择你刚刚添加的铃声。 4. 保存并应用:确保保存设置,然后执行一次关机操作,新铃声就会播放。 四、添加关机铃声 关机铃声的添加过程...
`AudioManager`类提供了设置铃声模式(如`RINGER_MODE_SILENT`、`RINGER_MODE_VIBRATE`、`RINGER_MODE_NORMAL`)的方法,而`NotificationManager`则用于管理通知的显示和行为。 2. **切换情景模式** 开发者可以...
用户可以在“声音与振动”设置中单独调整铃声音量,以确保不会错过任何重要通知。此外,还可以为不同的联系人或事件设置个性化的铃声和音量。 4. **媒体音量**:媒体音量是播放音乐、视频、游戏等媒体内容时的声音...
4. **Service**:如果闹钟需要在后台持续运行,例如播放铃声或振动,可以使用Service。开发者需要创建一个Service,处理闹钟响起时的逻辑,如播放音频、显示全屏界面等。 5. **SharedPreferences**:用于持久化存储...
在Android系统中,设置闹钟是一项基础且重要的功能,它能帮助用户在特定时间提醒重要事务。本篇文章将深入探讨如何在Android...在实际开发中,还可以根据需求添加更多功能,例如自定义铃声、振动模式等,提高用户体验。
在安卓(Android)系统中,个性化手机体验是许多用户喜欢的功能之一,这包括自定义短信和来电铃声。本文将详细介绍两种方法来帮助你实现这一目标。 方法一: 1. **设置个性来电铃声**: - 首先,你需要准备你喜欢...
3. **设置铃声**:进入手机的设置菜单,找到“声音与振动”或“声音和触感”选项,选择“电话铃声”或“通知铃声”,然后在列表中找到新导入的文件进行设置。对于华为设备,可能还需要在“华为会员”应用中进行权限...