【问题标题】:How to detect "power save mode" in Android "Xiaomi MIUI" devices?如何检测安卓“小米MIUI”设备中的“省电模式”?
【发布时间】:2017-07-05 07:21:41
【问题描述】:

如何检测安卓“小米MIUI”设备中的“省电模式”?

我使用此代码检测 Android 5,6 中的“省电模式”:

PowerManager powerManager = (PowerManager)
    getActivity().getSystemService(Context.POWER_SERVICE);
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP
    && powerManager.isPowerSaveMode())
{
    //power saving mode
}

但它不适用于“小米 MIUI”设备。

【问题讨论】:

  • 问题解决了吗?
  • 有什么解决办法吗?

标签: java android


【解决方案1】:

对于Xiaomi ROM,系统设置名称POWER_SAVE_MODE_OPEN将用于保存省电模式,因此我们可以通过系统设置api使用该名称来检测它是打开还是关闭。

android.provider.Settings.System#getInt(android.content.ContentResolver, java.lang.String, int)

要监控省电模式的变化,我们可以为miui.intent.action.POWER_SAVE_MODE_CHANGED注册一个意图接收器或使用ContentObserver为uri content://settings/system/POWER_SAVE_MODE_OPEN

查看此answer 的详细代码实现。

【讨论】:

    【解决方案2】:
    private void isPowerSaveModeHuaweiXiaomi(){
      if (Build.MANUFACTURER.equalsIgnoreCase("Xiaomi")) {
        try {
           int value = android.provider.Settings.System.getInt(getContext().getContentResolver(), "POWER_SAVE_MODE_OPEN");
                   
                } catch (Settings.SettingNotFoundException e) {
                    Log.d("Valor modo bateria:", "Error");
                }
            }else if (Build.MANUFACTURER.equalsIgnoreCase("Huawei")){
                try {
                    int value = android.provider.Settings.System.getInt(getContext().getContentResolver(), "SmartModeStatus");
                    
                } catch (Settings.SettingNotFoundException e) {
                    Log.d("Valor modo bateria:", "Error");
                }
            }
        }
    

    【讨论】:

    • 请尝试在您的答案旁边提供一些解释,以使其对未来的读者更有用。
    猜你喜欢
    • 2021-04-06
    • 1970-01-01
    • 2017-04-13
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多