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);

 

以上爲最基本的設置方法,在使用中有許多更復雜的組合都是由此基本的方法組合而成的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章