android在插入耳机时默认是无法调整音量到最大值的。
base/media/java/android/media/AudioService.java
6526 private final int mSafeMediaVolumeDevices = AudioSystem.DEVICE_OUT_WIRED_HEADSET |
6527 AudioSystem.DEVICE_OUT_WIRED_HEADPHONE;
<span style="font-size:18px;">838 public void adjustStreamVolume(int streamType, int direction, int flags) {
。。。。。
872 if (mSafeMediaVolumeState == SAFE_MEDIA_VOLUME_ACTIVE &&
873 (device & mSafeMediaVolumeDevices) != 0) {
874 step = mSafeMediaVolumeIndex;//这里把声音的最大值设置成了safe设备默认的最大
。。。
}</span>
当检测到safe设备调整的音量大于safe的最大值是弹出警告框
<span style="font-size:18px;">838 public void adjustStreamVolume(int streamType, int direction, int flags) {
839 if (mUseFixedVolume) {
840 return;
841 }
........
902 if (adjustVolume && (direction != AudioManager.ADJUST_SAME)) {
903 if ((direction == AudioManager.ADJUST_RAISE) &&
904 !checkSafeMediaVolume(streamTypeAlias, aliasIndex + step, device)) {
905 Log.e(TAG, "adjustStreamVolume() safe volume index = "+oldIndex);
906 mVolumePanel.postDisplaySafeVolumeWarning(flags);
907 }
.....
}</span>
base/core/java/android/view/VolumePanel.java
<span style="font-size:18px;">838 public void adjustStreamVolume(int streamType, int direction, int flags) {
。。。。。
872 if (mSafeMediaVolumeState == SAFE_MEDIA_VOLUME_ACTIVE &&
873 (device & mSafeMediaVolumeDevices) != 0) {
874 step = mSafeMediaVolumeIndex;//这里把声音的最大值设置成了safe设备默认的最大
。。。
}</span>
582 public void postDisplaySafeVolumeWarning(int flags) {
583 if (hasMessages(MSG_DISPLAY_SAFE_VOLUME_WARNING)) return;
584 obtainMessage(MSG_DISPLAY_SAFE_VOLUME_WARNING, flags, 0).sendToTarget();
585 }
<span style="font-size:18px;">941 @Override
942 public void handleMessage(Message msg) {
943 switch (msg.what) {
944
。。。。。
1007 case MSG_DISPLAY_SAFE_VOLUME_WARNING:
1008 onDisplaySafeVolumeWarning(msg.arg1);
1009 break;
1010 }
1011 }
</span>
<span style="font-size:18px;">838 public void adjustStreamVolume(int streamType, int direction, int flags) {
。。。。。
872 if (mSafeMediaVolumeState == SAFE_MEDIA_VOLUME_ACTIVE &&
873 (device & mSafeMediaVolumeDevices) != 0) {
874 step = mSafeMediaVolumeIndex;//这里把声音的最大值设置成了safe设备默认的最大
。。。
}</span>