[Android 15] 在GlobalActionsDialog 中新增项目

需求: 在Power菜单弹出的对话框中新增“Volume/Ship mode/Suspend”

1. 新增ship_mode和suspend图标资源
frameworks/base/core/res/res/drawable/ic_ship_mode.xml

/frameworks/base/core/res/res/drawable/ic_suspend.xml



    
    
    
    
    




    
    
    

2.frameworks/base/core/res/res/values/config.xml


    emergency
    lockdown
    power
    restart
    logout
    screenshot
    bugreport
    battery_swap
    
    suspend
    adjust_volume
    ship_mode
    

3.frameworks/base/core/res/res/values/strings.xml

    
    Low backup battery
    Backup battery is charged
    Level of backup battery not available
    You can safely swap the main battery
    Please do not swap the main battery now.
    It is risky to swap the main battery now.

    
    Suspend
    Adjust volume
    Ship Mode
    

4.frameworks/base/core/res/res/values/symbols.xml

  
  
  
  
  
  

  
  
  
  
  
  
  

5.frameworks/base/packages/SystemUI/res/values/strings.xml

 Power

 
 Suspend
 Adjust volume
 Ship Mode
 

6.frameworks/base/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java

import android.os.PowerManager;

static final String GLOBAL_ACTION_KEY_BATTERY_SWAP = "battery_swap";
// add items start
static final String GLOBAL_ACTION_KEY_SUSPEND = "suspend";
static final String GLOBAL_ACTION_KEY_ADJUST_VOLUME = "adjust_volume";
static final String GLOBAL_ACTION_KEY_SHIP_MODE = "ship_mode";
// add items end

@VisibleForTesting
protected void createActionItems() {


} else if (GLOBAL_ACTION_KEY_BATTERY_SWAP.equals(actionKey)) {
    addIfShouldShowAction(tempActions, new BatterySwapAction());
// add items start
} else if (GLOBAL_ACTION_KEY_SUSPEND.equals(actionKey)) {
    addIfShouldShowAction(tempActions, SuspendAction());
} else if (GLOBAL_ACTION_KEY_ADJUST_VOLUME.equals(actionKey)) {
    addIfShouldShowAction(tempActions, VolumeAction());
} else if (GLOBAL_ACTION_KEY_SHIP_MODE.equals(actionKey)) {
    addIfShouldShowAction(tempActions, ShipModeAction());
// add items end
} else {
    Log.e(TAG, "Invalid global action key " + actionKey);
}
// Add here so we don't add more than one.
addedKeys.add(actionKey);

}

private Action SuspendAction() {
        return new SinglePressAction(R.drawable.ic_suspend,
                R.string.global_action_suspend) {
            @Override
            public void onPress() {
                PowerManager powerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
                if (powerManager != null) {
                    powerManager.goToSleep(SystemClock.uptimeMillis());
                }
            }

            @Override
            public boolean showDuringKeyguard() {
                return true;
            }

            @Override
            public boolean showBeforeProvisioning() {
                return true;
            }
        };
    }

    private Action VolumeAction() {
        return new SinglePressAction(R.drawable.ic_audio_vol,
                R.string.global_action_volume) {
            @Override
            public void onPress() {
                mAudioManager.adjustStreamVolume(
                        AudioManager.STREAM_SYSTEM,
                        AudioManager.ADJUST_SAME,
                        AudioManager.FLAG_SHOW_UI);
            }

            @Override
            public boolean showDuringKeyguard() {
                return true;
            }

            @Override
            public boolean showBeforeProvisioning() {
                return true;
            }
        };
    }

    private Action ShipModeAction() {
        return new SinglePressAction(R.drawable.ic_ship_mode,
                R.string.global_action_ship_mode) {
            @Override
            public void onPress() {

            }

            @Override
            public boolean showDuringKeyguard() {
                return true;
            }

            @Override
            public boolean showBeforeProvisioning() {
                return true;
            }
        };
    }

你可能感兴趣的:(android,gitee)