版本:Android4.0
frameworks/base/media/java/android/media/AudioService.java
1 private int[] MAX_STREAM_VOLUME = new int[] { 2 15, // STREAM_VOICE_CALL 3 21, // STREAM_SYSTEM 4 21, // STREAM_RING 5 45, // STREAM_MUSIC 6 21, // STREAM_ALARM 7 21, // STREAM_NOTIFICATION 8 45, // STREAM_BLUETOOTH_SCO 9 21, // STREAM_SYSTEM_ENFORCED 10 45, // STREAM_DTMF 11 45, // STREAM_TTS 12 45 // STREAM_EXCLUSIVE 13 };
上到上面的代碼。修改其最大級別,這里已經被修改為3的倍數了。然后編譯,生成新的framework.jar文件,替換你的framework.jar即可。
2、通過反匯編的方式進行修改
a.將/system/framework/framework.jar文件拷貝出來,然后用rar打開,提取里面的class.dex文件
b.使用baksmali.jar工具進行解壓,如果你沒有這個工具你也可以使用apk的反匯編工具APK Multi-Tool,隨便找一個apk,然后把你的class.dex和這個apk里面class.dex替換,對這個apk進行反匯編,我們主要關心的是反匯編這個class.dex文件,通過反匯編后生成smali文件。
c.找到smali\android\media\AudioService.smali文件,也就是對應上面的java文件,定位到如下內容處:
:array_9
.array-data 0x4
0x28t 0x0t 0x0t 0x0t
0x38t 0x0t 0x0t 0x0t
0x38t 0x0t 0x0t 0x0t
0x78t 0x0t 0x0t 0x0t
0x38t 0x0t 0x0t 0x0t
0x38t 0x0t 0x0t 0x0t
0x78t 0x0t 0x0t 0x0t
0x78t 0x0t 0x0t 0x0t
0x78t 0x0t 0x0t 0x0t
0x78t 0x0t 0x0t 0x0t
0x38t 0x0t 0x0t 0x0t
.end array-data
.array-data 0x4
0x28t 0x0t 0x0t 0x0t
0x38t 0x0t 0x0t 0x0t
0x38t 0x0t 0x0t 0x0t
0x78t 0x0t 0x0t 0x0t
0x38t 0x0t 0x0t 0x0t
0x38t 0x0t 0x0t 0x0t
0x78t 0x0t 0x0t 0x0t
0x78t 0x0t 0x0t 0x0t
0x78t 0x0t 0x0t 0x0t
0x78t 0x0t 0x0t 0x0t
0x38t 0x0t 0x0t 0x0t
.end array-data
上面的每一個表示一個int數值,分為4個字節,低位在前,所以我們只需要修改上面的第一個字節數據,上面的第一行 0x28t 0x0t 0x0t 0x0t,對應於STREAM_VOICE_CALL的音量級別,這里我統一都把級別調整為以前的8倍了,及0x28=40=8*5,以前級別是0-5共6個級別。
d.修改好后反匯編回來,如果你用的是第二個方法反匯編,那么你需要將apk反匯編回來,然后同樣提取反匯編回來的apk里面的class.dex,將這個修改過的class文件替換文件framework.jar中以前的。自后拷貝這個framework.jar到系統中即可。