Android 4.4 音量的统一调节

        有时候音量并不需要单独调节,需要统一调节。通过修改一下几个地方即可达到目的:

一、在AudioManager.java中的修改,android/frameworks/base/media/java/android/media/AudioManager.java

1、修改DEFAULT_STREAM_VOLUME字段中,默认音量为一致

  public static final int[] DEFAULT_STREAM_VOLUME = new int[] {//hpe modified
        9,  // STREAM_VOICE_CALL
        9,  // STREAM_SYSTEM
        9,  // STREAM_RING
        9, // STREAM_MUSIC
        9,  // STREAM_ALARM
        9,  // STREAM_NOTIFICATION
        9,  // STREAM_BLUETOOTH_SCO
        9,  // STREAM_SYSTEM_ENFORCED
        9, // STREAM_DTMF
        9, // STREAM_TTS
        9   // STREAM_INCALL_MUSIC
    };

2、增加所有音量调节类型字段STREAM_TYPE

 private static final int[] STREAM_TYPE= new int[] {
        STREAM_VOICE_CALL,
        STREAM_MUSIC,//include STREAM_MUSIC,STREAM_TTS,STREAM_INCALL_MUSIC
        STREAM_ALARM,
        STREAM_BLUETOOTH_SCO,
        STREAM_RING //include STREAM_SYSTEM,STREAM_RING,STREAM_NOTIFICATION,STREAM_SYSTEM_ENFORCED,STREAM_DTMF
    };

3、handleKeyDown(KeyEvent event, int stream)方法中修改KeyEvent.KEYCODE_VOLUME_DOWN 事件逻辑,将原来的adjustSuggestedStreamVolume方法屏蔽掉,因为我们不需要单独的去调节某个类型的音量所以需要改为自己的方法adjustAllTypeVolume,如下:

public void handleKeyDown(KeyEvent event, int stream) {
        int keyCode = event.getKeyCode();
        switch (keyCode) {
            case KeyEvent.KEYCODE_VOLUME_UP:
            case KeyEvent.KEYCODE_VOLUME_DOWN:
                /*
                 * Adjust the volume in on key down since it is more
                 * responsive to the user.
                 */
                int flags = FLAG_SHOW_UI | FLAG_VIBRATE;

                if (mUseMasterVolume) {
                    adjustMasterVolume(
                            keyCode == KeyEvent.KEYCODE_VOLUME_UP
                                    ? ADJUST_RAISE
                                    : ADJUST_LOWER,
                            flags);
                } else {
                    //hpe modify start
                    //adjustSuggestedStreamVolume(
                    //        keyCode == KeyEvent.KEYCODE_VOLUME_UP
                     //               ? ADJUST_RAISE
                     //               : ADJUST_LOWER,
                    //        stream,
                    //        flags);
                    adjustAllTypeVolume(keyCode == KeyEvent.KEYCODE_VOLUME_UP
                                    ? ADJUST_LOWER
                                    : ADJUST_RAISE);
                    //hpe modify end
                }
                break;
            case KeyEvent.KEYCODE_VOLUME_MUTE:
                if (event.getRepeatCount() == 0) {
                    if (mUseMasterVolume) {
                        setMasterMute(!isMasterMute());
                    } else {
                        // TODO: Actually handle MUTE.
                    }
                }
                break;
        }
    }

4、添加 adjustAllTypeVolume 方法逻辑,通过遍历STREAM_TYPE,调用adjustStreamVolume方法来分别设置音量,以达到统一设置音量的目的。其中adjustSuggestedStreamVolume是显示UI图标为媒体的音乐图标

    //hpe add start
    /*
    * 音量键修改所有音量,但是进度条只显示媒体铃声的变化。
    * */
    public void adjustAllTypeVolume(int direction) {
        for (int i = 0; i < STREAM_TYPE.length ; i++) {
            adjustStreamVolume(STREAM_TYPE[i], direction, 0);
        }
        adjustSuggestedStreamVolume(ADJUST_SAME, STREAM_MUSIC, FLAG_SHOW_UI);
    }
    //hpe add end

二、在AudioService.java中的更改,android/frameworks/base/media/java/android/media/AudioService.java

1、修改最大默认音量,统一值

/** @hide Maximum volume index values for audio streams */
    private static final int[] MAX_STREAM_VOLUME = new int[] {//hpe modified
        15,  // STREAM_VOICE_CALL
        15,  // STREAM_SYSTEM
        15,  // STREAM_RING
        15, // STREAM_MUSIC
        15,  // STREAM_ALARM
        15,  // STREAM_NOTIFICATION
        15, // STREAM_BLUETOOTH_SCO
        15,  // STREAM_SYSTEM_ENFORCED
        15, // STREAM_DTMF
        15  // STREAM_TTS
    };

2、如果音量调到最低时,不需要震动,需要将mHasVibrator变量设置为false

mHasVibrator = false;//vibrator == null ? false : vibrator.hasVibrator();//hpe modified

        至此,Android 4.4统一音量修改已经完成。

发布了10 篇原创文章 · 获赞 0 · 访问量 2202

猜你喜欢

转载自blog.csdn.net/h1217256980/article/details/101211287
4.4