安卓情景模式開發(二)-控制靜音/音量/振動


在上面一篇文章中  http://www.cnblogs.com/wii/archive/2012/03/18/2404947.html
  我們已經可以控制GPS/WIFI/藍牙/飛行模式了,現在

我們再來控制系統的音量和振動。 

 

sdk提供了一個類來控制系統音量和振動的更改api,android.media.AudioManager 通過這個類,我們

將手機設置為靜音或者振動,和更改振動的類型。AudioManager無法在代碼中實例化,需要通過Context.getSystemService(Context.AUDIO_SERVICE)獲取到其實例。ok,獲取到AudioManager實例后,我們可以通過調用AudioManager的方法setRingerMode來控制聲音的類型。setRingerMode方法接受一個參數,我們只要根據需要更改的類型值傳入就可以拉。這3個分別是:

 

 

public  static  final  int RINGER_MODE_SILENT = 0; 
public  static  final  int RINGER_MODE_VIBRATE = 1; 
public  static  final  int RINGER_MODE_NORMAL = 2; 

 

 

醬紫,我們就可以通過以下代碼將聲音更改為 靜音了。  

 

 

 

audio = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE); 
audio.setRingerMode(AudioManager.RINGER_MODE_SILENT);

 

 

設置為靜音后在變成普通狀態可以通過調用一下代碼:

 

audio.setRingerMode(AudioManager.RINGER_MODE_NORMAL); 
audio.setStreamVolume(AudioManager.RINGER_MODE_NORMAL, ringerVolume, 0);

 

 

 其中第二個參數就是鈴音的音量。

 

 OK,控制了聲音后,我們接下來控制振動吧。

 

對於振動,系統有幾種類型,分別是 始終,一律不,僅在靜音下來電振和僅在非靜音下來電振 4種。

 

 對於振動的控制,也是功過AudioManager的實例來完成的,通過調用setVibrateSetting方法來實現設置手機振動。

 

對於setVibrateSetting方法,需要傳入2個參數,第一個是振動的類型,分別是 VIBRATE_TYPE_NOTIFICATION 和 VIBRATE_TYPE_RINGER。

 

第二個是振動類型分比是 VIBRATE_SETTING_ON,VIBRATE_SETTING_OFF,VIBRATE_SETTING_ONLY_SILENT,VIBRATE_SETTING_ON,

 

根據參數的名稱我們都知道具體的作用拉,我就不作解釋了。

 

接下來我們就實現系統里面提供的幾種振動類型吧 

 

 

int vibrate_setting = -1;
int ring_mode = -1;
switch(profile.vibrate) {
case ProfileConstants.VIBRATE_ALWAYS_ON: //  總是振動
    vibrate_setting = AudioManager.VIBRATE_SETTING_ON;
    ring_mode = 1;
     break;
case ProfileConstants.VIBRATE_NEVER: // 重不振動
    vibrate_setting = AudioManager.VIBRATE_SETTING_OFF;
    ring_mode = 0;
     break;
case ProfileConstants.VIBRATE_ONLY_IN_SILENT: // 靜音下振動
    vibrate_setting = AudioManager.VIBRATE_SETTING_ONLY_SILENT;
    ring_mode = 1;
     break;
case ProfileConstants.VIBRATE_UNLESS_SILENT: // 非靜音下振動
    vibrate_setting = AudioManager.VIBRATE_SETTING_ON;
    ring_mode = 0;
     break;
}
Settings.System.putInt(resolver, "vibrate_in_silent", ring_mode);
audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, vibrate_setting);

 

ok,醬紫我們就實現了跟系統提供的振動類型相同的功能了。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM