Android 11.0 接口方式实现 休眠和唤醒

△需要权限

  • 系统权限:android:sharedUserId="android.uid.system"
  • 其他权限:<uses-permission android:name="android.permission.WAKE_LOCK"/>
  • 其他权限:<uses-permission android:name="android.permission.DEVICE_POWER"/>

frameworks/base/…/MdmPolicy.java

写好接口供上层调用

    public void sleep(){
    
    
        SleepAndWakeLockControl.sleep(mContext);
    }
    
    public void wake(){
    
    
        SleepAndWakeLockControl.wake(mContext);
    }

frameworks/base/…/SleepAndWakeLockControl.java

具体实现

class SleepAndWakeLockControl {
    
    
    public static void sleep(Context context) {
    
    
        IPowerManager mPowerManager = IPowerManager.Stub.asInterface(ServiceManager.getService("power"));
        try{
    
    
            mPowerManager.goToSleep(SystemClock.uptimeMillis()+1,0,0);
        }catch (Exception e){
    
    
            Log.d("SleepAndWakeLockControl","休眠失败");
        }
    }

    public static void wake(Context context){
    
    
        IPowerManager mPowerManager = IPowerManager.Stub.asInterface(ServiceManager.getService("power"));
        try {
    
    
            mPowerManager.wakeUp(SystemClock.uptimeMillis()+1,0,"wakeUp",context.getOpPackageName());
        }catch (Exception e){
    
    
            Log.d("SleepAndWakeLockControl","唤醒失败");
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_27494201/article/details/125196734