1. 程式人生 > >Android Receiver(聽筒模式和揚聲器模式,鈴音模式)

Android Receiver(聽筒模式和揚聲器模式,鈴音模式)

Android Receiver(聽筒模式和揚聲器模式,鈴音模式)

2014年10月31日 09:45:56 老司機s 閱讀數:13082

版權宣告:本文為博主原創文章,未經博主允許不得轉載。Android北京開發技術群 482266514密碼CSDN https://blog.csdn.net/wds1181977/article/details/40649511

聽筒播放Mp3 

下載Demohttp://download.csdn.net/detail/wds1181977/8114967

 

 

切換為聽筒模式聲音由聽筒發出

AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
am.setMode(AudioManager.MODE_IN_CALL);
 

切換為其他模式

am.setMode(AudioManager.MODE_NORMAL);//正常模式,即在沒有鈴音與電話的情況
am.setMode(AudioManager.MODE_RINGTONE);//鈴響模式
am.setMode(AudioManager.MODE_IN_CALL);//接通電話模式 
am.setMode(AudioManager.MODE_IN_COMMUNICATION);//通話模式。


獲取當前狀態

 mAudioMode = am.getMode()

 

判斷音訊路由模式

am. isSpeakerphoneOn(); //檢查喇叭擴音器是否開著。若喇叭擴音器開著,返回true
am. isBluetoothScoOn();/檢查通訊是否使用藍芽SCO。
am. isBluetoothA2dpOn(); //檢查A2DP音訊路由到藍芽耳機是否開啟 音訊到/從藍芽耳機,返回ture
am. isWiredHeadsetOn();  //  檢查音訊路由到有線耳機是否開著。若音訊被路由到/從有線耳機,返回true
am. isMusicActive();//檢查是否有音樂是活動的
 

許可權

   <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

設定喇叭擴音器開啟或關閉。
這個方法只能用於代替音訊設定的平臺範圍管理應用程式或主要電話應用程式。

引數on 為true開啟喇叭擴音器;為false關閉喇叭擴音器。

public void setSpeakerphoneOn (boolean on)


鈴聲模式                     

獲取當前鈴音模式

getRingerMode()

設定當前模式

public void setRingerMode (int ringerMode)
am.setRingerMode(RINGER_MODE_NORMAL);//鈴音正常模式
am.setRingerMode(RINGER_MODE_SILENT);//鈴音靜音模式 靜音且不會振動
am.setRingerMode(RINGER_MODE_VIBRATE);//鈴音震動模式 會靜音且會振動

獲取音量型別和大小

//通話音量  max 最大音量  current當前音量
 
int max = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL ); 
 
int current = mAudioManager.getStreamVolume(AudioManager.STREAM_VOICE_CALL ); 
 
//系統音量
 
int max = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_SYSTEM ); 
 
current = mAudioManager.getStreamVolume(AudioManager.STREAM_SYSTEM ); 
 
//鈴聲音量
 
max = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_RING); 
 
current = mAudioManager.getStreamVolume(AudioManager.STREAM_RING ); 
 
//音樂音量
 
max = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC ); 
 
current = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC ); 
 
 
//提示聲音音量
 
max = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM ); 
 
current = mAudioManager.getStreamVolume(AudioManager.STREAM_ALARM ); 
 

設定音量大小

         int maxVolume = am.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL);//獲取當前通話最大音量
         am.setStreamVolume(AudioManager.STREAM_VOICE_CALL, maxVolume,AudioManager.USE_DEFAULT_STREAM_TYPE);}  

調出系統音量控制  

    /**
     *  引數1:聲音型別,
     *       可取為STREAM_VOICE_CALL(通話)、
     *             STREAM_SYSTEM(系統聲音)、
     *             STREAM_RING(鈴聲)、
     *             STREAM_MUSIC(音樂)、
     *             STREAM_ALARM(鬧鈴聲)
     *   引數2:調整音量的方向,可取
     *                ADJUST_LOWER(降低)、
     *                ADJUST_RAISE(升高)、                                             
     *                ADJUST_SAME
     *   引數3:可選的標誌位
    * @param position
    */
adjustStreamVolume(int streamType, int direction, intflags)
 

//降低音量,調出系統音量控制  
if(flag == 0){  
  mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,AudioManager.ADJUST_LOWER,  
                            AudioManager.FX_FOCUS_NAVIGATION_UP);  
}  
//增加音量,調出系統音量控制  
else if(flag == 1){  
  mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,AudioManager.ADJUST_RAISE,  
                            AudioManager.FX_FOCUS_NAVIGATION_UP);  
}