android 情景模式设置

系统返回的状态只有三个,分别为:
1、public static final int RINGER_MODE_SILENT = 0;//静音

2、public static final int RINGER_MODE_VIBRATE = 1;//震动

3、public static final int RINGER_MODE_NORMAL = 2;//正常(这里又分为2种:铃声、铃声加震动)


那么问题就来了,我的方法里既然有设置四种的,但是系统返回的只有三个状态,那么我怎么知道是铃声加震动呢?

急求!!!


我之前也没考虑过这个问题,然后研究了下AudioManager,发现当你的振铃模式发生改变的时候有个广播:(Action:)RINGER_MODE_CHANGED_ACTION
然后他判断的依据是:
public static final int RINGER_MODE_NORMAL
若打开振动设置,则它是振动的。(肯定有响铃,有没有振动要看振动设置.
情况:(1)如果你上一次RINGER_MODE_CHANGED_ACTION触发的时候状态是变为了RINGER_MODE_VIBRATE)那么这次触发有可能是变为RINGER_MODE_SILENT或者RINGER_MODE_NORMAL两种,那就很明显了如果是RINGER_MODE_SILENT,就是没有振动也没有响铃,如果是RINGER_MODE_NORMAL就是有振动又有响铃

(2)如果你上一次RINGER_MODE_CHANGED_ACTION触发的时候状态是变为了RINGER_MODE_SILENT)那么这次触发有可能是变为RINGER_MODE_VIBRATE或者RINGER_MODE_NORMAL两种,那就很明显了如果是RINGER_MODE_VIBRATE,就是只有振动没有响铃,如果是RINGER_MODE_NORMAL就是没有振动只有响铃

public static final int RINGER_MODE_SILENT
振铃模式是<a target=_blank target="_blank" href="https://www.baidu.com/s?wd=%E9%9D%99%E9%9F%B3&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1dBPhfduhR4PvFWnhwhmHNh0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EPWcdPjf4rHcdnjmYPjc1nHmY" class="baidu-highlight" style="color:rgb(45,100,179); text-decoration:none">静音</a>且不振动。(既没有振动也没有响铃)
public static final int RINGER_MODE_VIBRATE      
振铃模式是<a target=_blank target="_blank" href="https://www.baidu.com/s?wd=%E9%9D%99%E9%9F%B3&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1dBPhfduhR4PvFWnhwhmHNh0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EPWcdPjf4rHcdnjmYPjc1nHmY" class="baidu-highlight" style="color:rgb(45,100,179); text-decoration:none">静音</a>且振动。(只有振动没有响铃)


Android 情景模式的设置

情景模式的设置大家应当相当熟悉了,但是在Android中如何通过自己的程序进行情景模式的设置呢,情景模式分为多种多种,即可以使用系统自带的,也可以使用自定义的,但是在开发某些程序时,可能需要在程序中更改情景模式,那么此就需要进行情景模式的设置。下面简单介绍一下情况模式的设置方式:

首先获取当前的情景模式:

 

复制代码
     
     
void getInitring(AudioManager audio) { // 取得手机的初始音量,并初始化进度条 int volume = audio.getStreamVolume(AudioManager.STREAM_RING); // 取得初始音量 // 取得初始模式,并分别设置图标 int mode = audio.getRingerMode(); // 取得初始模式 }
复制代码

 

通过此代码,当然需要再加工一下,那么就可以得到当前的情景模式,为以后的设置做一下准备,然后也可能知道要不要再次设置。

 

设置情景模式一:只声音,无振动:

复制代码
     
     
void ring(AudioManager audio) { audio.setRingerMode(AudioManager.RINGER_MODE_NORMAL); audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF); audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_OFF); Toast.makeText( this , " 设置成功!当前为铃声 " , Toast.LENGTH_LONG).show(); }
复制代码

 

设置后系统只有声音,没有振动。

设置情景模式二:即有声音也有振动:

复制代码
     
     
void ringAndVibrate(AudioManager audio) { audio.setRingerMode(AudioManager.RINGER_MODE_NORMAL); audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ON); audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_ON); Toast.makeText( this , " 设置成功!当前为铃声加振动 " , Toast.LENGTH_LONG).show(); }
复制代码

 

这样设置后,在发声的时候同时也会有振动提醒。

设置情景模式三:只能振动:

复制代码
     
     
void vibrate(AudioManager audio) { audio.setRingerMode(AudioManager.RINGER_MODE_VIBRATE); audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ON); audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_ON); Toast.makeText( this , " 设置成功!当前为振动 " , Toast.LENGTH_LONG).show(); }
复制代码

 

此设置后只有振动,没有声音:

设置情景模式四:无声无振动:

复制代码
     
     
void noRingAndVibrate(AudioManager audio) { audio.setRingerMode(AudioManager.RINGER_MODE_SILENT); audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF); audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_OFF); Toast.makeText( this , " 设置成功!当前为无声无振动 " , Toast.LENGTH_LONG).show(); }
复制代码

 

设置后系统没有声音和振动。无法进行相应的提示。

以上所有设置的声音均为系统默认的声音大小,那么我们是否可以自定义声音的大小呢,答案是当然可以。要设置声音的大小 ,需要设置以下函数:

提高音量:

    
    
audio.adjustVolume(AudioManager.ADJUST_RAISE, 0 );

 

减小音量:
    
    
audio.adjustVolume(AudioManager.ADJUST_LOWER, 0 );

 

以上为最基本的设置方法,在使用中有许多更复杂的组合都是由此基本的方法组合而成的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值