A. 怎樣調節android系統音量的最大值
定義:增加最大音量限制,僅限於安卓手機注意:可能導致聲音破音方法:進入手機撥號界面輸入*#*#3646633#*#*這樣可以進入工程模式下Audio里loudspeakerMode里的RingMAXVol最大可以改到160建議:不要修改到160,本人修改到155,到
B. Android的framework層是如何進行音量調整的
調整音量的過程首先通過AudioManager間接調用了AudioService的adjustStreamVolume方法。音量調整大致分為兩步:第一步是檢查當前的模式(如Ring模式)是否需要改變,如果不需要改變模式,當前模式應為正常模式(Normal mode),則會進行音量調整。
檢查模式是否需要調整的工作由checkForRingerModeChange(oldIndex, direction)方法完成,而音量調整則通過streamState.adjustIndex(direction)實現。具體代碼可參考/framework/base/media/java/android/media/AudioService.java中的public void adjustStreamVolume(int streamType, int direction, int flags)方法。該方法首先檢查模式是否需要調整,之後進行音量調整。
調整音量完成後,AudioService會做兩件事:一是通過mVolumePanel.postVolumeChanged(streamType, flags)向用戶展示音量調整的結果;二是通過sendVolumeUpdate(streamType)廣播音量改變的系統事件。
音量調整功能與用戶界面相關聯的兩部分是/framework/base/core/java/android/view/VolumePanel.java和/framework/base/services/java/com/android/server/status/StatusBarPolicy.java。VolumePanel負責向用戶展示音量變化的提示信息,每次AudioService通過向VolumePanel發送一系列消息來驅動這些提示信息的顯示。
StatusBarPolicy則負責在靜音模式(silent mode)和振動模式(vibrate mode)下,在狀態欄(status bar)的右側顯示一個代表相應模式意義的圖標。系統啟動後,StatusBarPolicy會注冊一個Receiver,它可以接收很多種廣播事件,其中包括AudioService在每次完成模式和音量更新後發出的兩個廣播事件:AudioManager.RINGER_MODE_CHANGED_ACTION和AudioManager.VIBRATE_SETTING_CHANGED_ACTION。
C. 如何修改Android5.1系統音量大小
1. 直接修改系統層默認的聲音大小
在系統代碼frameworks/base/media/java/android/media/AudioService.java的開頭定義了兩個數組,一個MAX_STREAM_VOLUME這裡面定義了各種聲音的最大值(最大值不是100,所以需要AudioManager.getStreamMaxVolume(type)來獲取各個音量的最大值),然後進行設置。
還定義了一個數組DEFAULT_STREAM_VOLUME這裡面則和MAX_STREAM_VOLUME里定義的順序是一樣,表明了各種聲音的默認的大小。此塊代碼如下:
/** @hide Maximum volume index values for audio streams */
privatestaticint[] MAX_STREAM_VOLUME =newint[] {
5,// STREAM_VOICE_CALL
7,//