应用程序想模仿Power键的睡眠/唤醒,请问分别是哪个接口,求高手指点

解决方案 »

  1.   

    public class ScreenLock {

    /**
     * 唤醒屏幕
     */
    public static void wakeup(Context context){
    PowerManager mPowerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
    PowerManager.WakeLock wakeLock = mPowerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "Gank");
    //唤醒
    wakeLock.acquire();
    }
    /**
     * 使屏幕休眠
     */
    public static void sleep(Context context){
    PowerManager mPowerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
    PowerManager.WakeLock wakeLock = mPowerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "Gank");
    //休眠
    wakeLock.release();
    }
    /**
     * 判断屏幕的状态
     * @return :  
     */
    public static boolean isScreenOn(Context context){
    PowerManager mPowerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
    return mPowerManager.isScreenOn();
    } /**
     * 锁屏
     */
    public static void lockKeyguard(Context context){
    KeyguardManager mKeyguardManager = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
    KeyguardLock mKeyguardLock = mKeyguardManager.newKeyguardLock("");
    mKeyguardLock.reenableKeyguard();//锁
    }
    /**
     * 解锁 
     */
    public static void unLockKeyguard(Context context){
    KeyguardManager mKeyguardManager = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
    KeyguardLock mKeyguardLock = mKeyguardManager.newKeyguardLock("");
    mKeyguardLock.disableKeyguard();
    }
      

  2.   

    一调休眠方法,android就重启:
    W/dalvikvm( 2214): threadid=9: thread exiting with uncaught exception (group=0x2aac0560)
    E/AndroidRuntime( 2214): *** FATAL EXCEPTION IN SYSTEM PROCESS: android.server.ServerThread
    E/AndroidRuntime( 2214): java.lang.RuntimeException: WakeLock under-locked Gank
    E/AndroidRuntime( 2214):        at android.os.PowerManager$WakeLock.release(PowerManager.java:307)
    E/AndroidRuntime( 2214):        at android.os.PowerManager$WakeLock.release(PowerManager.java:282)
    E/AndroidRuntime( 2214):        at com.android.internal.policy.impl.GlobalActions$5.onPress(GlobalActions.java:340)
    E/AndroidRuntime( 2214):        at com.android.internal.policy.impl.GlobalActNot all allocated memory blocks were freed. Doing it now.
    ions.onClick(GlobalActions.java:Freeing list entry #0, gpuaddr=86300000
    436)
    E/AndroidRuntime( 2214):        Freeing list entry #1, gpuaddr=86301000
    at com.android.internal.app.AlerFreeing list entry #2, gpuaddr=86311000
    tController$AlertParams$3.onItemFreeing list entry #3, gpuaddr=86343000
    Freeing list entry #7, gpuaddr=86354000E/AndroidRuntime( 2214):        at anFreeing list entry #630, gpuaddr=86366000
    droid.widget.AdapterView.performFreeing list entry #683, gpuaddr=86566000
    ItemClick(AdapterView.java:284)
    E/AndroidRuntime( 2214):        at analarm_release: clear alarm, pending 0
    droid.widget.ListView.performItealarm_release: clear alarm, pending 0
    mClick(ListView.java:3513)
    E/Analarm_release: clear alarm, pending 0
    droidRuntime( 2214):    at android.widget.AbsListView$PerformClick.run(AbsListView.java:1812)
    E/AndroidRuntime( 2214):        at android.os.Handler.handleCallback(Handler.java:587)
    Erequest_suspend_state: on (0->0) at 103498106628 (1970-01-02 00:01:30.949676750 UTC)
    /AndroidRuntime( 2214):         at android.os.Handler.dispatchMessage(Handler.java:92)
    E/AndroidRuntime( 2214):        at android.os.Looper.loop(Looper.java:130)
    E/AndroidRuntime( 2214):        at com.android.server.ServerThread.run(SystemServer.java:554)
    I/Process ( 2214): Sending signal. PID: 2214 SIG: 9
    D/dalvikvm( 2417): GC_CONCUsgtl5000_hw_read: read reg error : Reg 0x0e
    RRENT freed 417K, 51% free 2837Kinit: untracked pid 2132 exited
    /5703K, external 716K/1038K, pausgtl5000_write: write reg error : Reg 0x0e = 0x000c
    sed 5ms+3ms
    I/ServiceManager( 2130): service 'SurfaceFlinger' died
    I/ServiceManager( 2130): service 'sensorservice' died
      

  3.   

    sleep: PowerManagerService::goToSleepwakeup:这个软件搞不定,除非借助于RTC(alarm)硬件的帮助才行,因为sleep后CPU都不工作了,
            软件已经无能为力了
      

  4.   

    goToSleep估计要root权限,你先试一下