Android的解锁和唤醒,这里锁屏还没有完成,有问题

权限:

    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
    <uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>




代码:

package com.wbm.app.wakeandlockdemo;

import android.app.KeyguardManager;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.os.PowerManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends AppCompatActivity {

    private PowerManager powerManager;
    private PowerManager.WakeLock wakeLock;
    private KeyguardManager keyguardManager;
    private KeyguardManager.KeyguardLock keyguardLock;
    private Handler mHandler;
    private int times=0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mHandler = new Handler(new Handler.Callback() {
            @Override
            public boolean handleMessage(Message message) {
                if(message.what==1) {
                    Log.d("kodulf", "点亮屏幕 end time="+times);
                    wakeAndUnlock(true);
                    mHandler.sendEmptyMessageDelayed(0, 3000);
                    Log.d("kodulf", "点亮屏幕 end time="+times++);
                }
                else if(message.what==0) {

                    Log.d("kodulf", "变暗屏幕 end time="+times);
                    wakeAndUnlock(false);
                    mHandler.sendEmptyMessageDelayed(1, 3000);
                    Log.d("kodulf", "变暗屏幕 end time="+times++);
                }

                return false;
            }
        });

        mHandler.sendEmptyMessage(1);
    }


    private void wakeAndUnlock(boolean b)
    {
        if(b)
        {
            //获取电源管理器对象
            powerManager =(PowerManager) getSystemService(Context.POWER_SERVICE);

            //获取PowerManager.WakeLock对象,后面的参数|表示同时传入两个值,最后的是调试用的Tag
            wakeLock = powerManager.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "bright");

//            /**
//             * 在创建了 PowerManager.WakeLock 后,有两种机制,
//             * 第一种是不计数锁机制,另一种是计数锁机制。
//             * 可以通过 setReferenceCounted(boolean value) 来指定,
//             * 一般默认为计数机制。这两种机制的区别在于,前者无论 acquire() 了多少次,
//             * 只要通过一次 release()即可解锁。而后者正真解锁是在( --count == 0 )的时候,
//             * 同样当 (count == 0) 的时候才会去申请加锁。
//             * 所以 PowerManager.WakeLock 的计数机制并不是正真意义上的对每次请求进行申请/释放每一把锁,
//             * 它只是对同一把锁被申请/释放的次数进行了统计,然后再去操作。
//             * */
//            wakeLock.setReferenceCounted(true);

            //点亮屏幕
            wakeLock.acquire();

            //得到键盘锁管理器对象
            keyguardManager = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);
            keyguardLock = keyguardManager.newKeyguardLock("unLock");

            //解锁
            keyguardLock.disableKeyguard();
        }
        else
        {
            //锁屏
            keyguardLock.reenableKeyguard();

            //释放wakeLock,关灯
            wakeLock.release();

        }

    }

}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值