Android P 修改音量键控制与方向和UI一致

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java

--- a/mt8788/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
+++ b/mt8788/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
@@ -81,7 +81,7 @@ import android.util.SparseArray;
 import android.util.SparseIntArray;
 import android.view.KeyEvent;
 import android.view.ViewConfiguration;
-
+import android.view.WindowManager;
 import com.android.internal.os.BackgroundThread;
 import com.android.internal.util.DumpUtils;
 import com.android.server.SystemService;
@@ -1434,13 +1434,30 @@ public class MediaSessionService extends SystemService implements Monitor {
             boolean down = keyEvent.getAction() == KeyEvent.ACTION_DOWN;
             boolean up = keyEvent.getAction() == KeyEvent.ACTION_UP;
             int direction = 0;

+            int rotation = ((WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getRotation();
+            int device_id = keyEvent.getDeviceId();
+            Log.d("addlog", "====================rotation = "+ rotation);

             boolean isMute = false;
             switch (keyEvent.getKeyCode()) {
                 case KeyEvent.KEYCODE_VOLUME_UP:
-                    direction = AudioManager.ADJUST_RAISE;
+                    if(device_id==1){
+                        direction = (rotation == 0  || rotation == 1) ? AudioManager.ADJUST_LOWER : AudioManager.ADJUST_RAISE;
+                    }else{
+                        direction = AudioManager.ADJUST_RAISE;
+                    }

                     break;
                 case KeyEvent.KEYCODE_VOLUME_DOWN:
-                    direction = AudioManager.ADJUST_LOWER;
+                    if(device_id==1){
+                        direction = (rotation == 0  || rotation == 1) ? AudioManager.ADJUST_RAISE : AudioManager.ADJUST_LOWER;
+                    }else{
+                        direction = AudioManager.ADJUST_LOWER;
+                    }
                     break;
                 case KeyEvent.KEYCODE_VOLUME_MUTE:
                     isMute = true;

注:Android O还需修改如下文件:
frameworks/base/core/java/com/android/internal/policy/PhoneWindow.java

--- a/mt8167/frameworks/base/core/java/com/android/internal/policy/PhoneWindow.java
+++ b/mt8167/frameworks/base/core/java/com/android/internal/policy/PhoneWindow.java
@@ -1866,6 +1866,11 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
         //Log.i(TAG, "Key down: repeat=" + event.getRepeatCount()
         //        + " flags=0x" + Integer.toHexString(event.getFlags()));
 

+        int rotation = ((WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getRotation();
+        int device_id = event.getDeviceId();

         switch (keyCode) {
             case KeyEvent.KEYCODE_VOLUME_UP:
             case KeyEvent.KEYCODE_VOLUME_DOWN:
@@ -1876,10 +1881,22 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
                     int direction = 0;
                     switch (keyCode) {
                         case KeyEvent.KEYCODE_VOLUME_UP:
-                            direction = AudioManager.ADJUST_RAISE;
+                            if(device_id==1){
+                                direction = (rotation == 2  || rotation == 1) ? AudioManager.ADJUST_LOWER : AudioManager.ADJUST_RAISE;
+                            }else{
+                                direction = AudioManager.ADJUST_RAISE;
+                            }

                             break;
                         case KeyEvent.KEYCODE_VOLUME_DOWN:
-                            direction = AudioManager.ADJUST_LOWER;
+                            if(device_id==1){
+                                direction = (rotation == 2  || rotation == 1) ? AudioManager.ADJUST_RAISE : AudioManager.ADJUST_LOWER;
+                            }else{
+                                direction = AudioManager.ADJUST_LOWER;
+                            }
                             break;
                         case KeyEvent.KEYCODE_VOLUME_MUTE:
                             direction = AudioManager.ADJUST_TOGGLE_MUTE;

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

最乱纷飞的code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值