Android 9.0 (P版本) MTK平台原生的待机智能省电功能

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/su749520/article/details/82801587

1. 原生界面UI

待机智能省电.png

2. 源码查看

2.1 字符串

Z:\9.1\vendor\mediatek\proprietary\packages\apps\MtkSettings_Eclipse\res_ext\values-zh-rCN\mtk_strings.xml

  <!-- Background power saving start -->
   <string name="bg_power_saving_title">待机智能省电</string>
  <!-- Background power saving end -->
        

上述查看,该功能属于MTK的原生功能

2.2 字符串所在的布局界面

power_usage_summary.xml

    <!-- MTK background power saving -->
    <SwitchPreference
        android:key="background_power_saving"
        android:title="@string/bg_power_saving_title"/>

2.3 查看界面的源码加载位置

Z:\9.1\vendor\mediatek\proprietary\packages\apps\MtkSettings_Eclipse\src\com\android\settings\fuelgauge\PowerUsageSummary.java

package com.android.settings.fuelgauge;

/**
 * Displays a list of apps and subsystems that consume power, ordered by how much power was
 * consumed since the last time it was unplugged.
 */
public class PowerUsageSummary extends PowerUsageBase implements OnLongClickListener,
        BatteryTipPreferenceController.BatteryTipListener {
        
    @Override
    protected int getPreferenceScreenResId() {
        return R.xml.power_usage_summary;
    }
    
    @Override
    protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
        .....
        /// M: Add for Background power saving 新增了待机省电的选项
        controllers.add(new BackgroundPowerSavingPreferenceController(context));
        return controllers;
    }

2.4 BackgroundPowerSavingPreferenceController的逻辑实现

package com.mediatek.settings.fuelguage;

public class BackgroundPowerSavingPreferenceController extends AbstractPreferenceController
        implements PreferenceControllerMixin, Preference.OnPreferenceChangeListener {
    
    private static final String KEY_BACKGROUND_POWER_SAVING = "background_power_saving";

    @Override
    public void updateState(Preference preference) {
        int backgroundPowerSavingState = Settings.System.getInt(mContext.getContentResolver(),
                BG_POWER_SAVING_ENABLE, 1);
        Log.d(TAG, "update background power saving state: " + backgroundPowerSavingState);
        ((SwitchPreference) preference).setChecked(backgroundPowerSavingState != 0);
    }

3. 总结

待机智能省电,即MTK的对齐唤醒机制或称同步唤醒,这里不进行详尽描述了,只作为代码移植确认

接口调用如下

    /**
     * sdk >= 26 com.mediatek.provider.MtkSettingsExt.System.BG_POWER_SAVING_ENABLE
     * vendor/mediatek/proprietary/frameworks/base/settingsprovider/java/com/mediatek/provider/MtkSettingsExt.java
     * sdk < 26 Settings.System.BG_POWER_SAVING_ENABLE
     */
    public final static String ACTION_MTK_BG_POWER_SAVE_MODE = "background_power_saving_enable";

    public static boolean isMTKBgPowerSave(Context mContext) {
        return Settings.System.getInt(mContext.getContentResolver(), ACTION_MTK_BG_POWER_SAVE_MODE, 0) == 1;
    }
    
    public static void setMTKBgPowerSave(Context mContext, boolean value) {

        Settings.System.putInt(mContext.getContentResolver(), ACTION_MTK_BG_POWER_SAVE_MODE, (value ? 1 : 0));
    }

猜你喜欢

转载自blog.csdn.net/su749520/article/details/82801587