在开发程序的时候,有时会有唤醒屏幕并解锁屏幕的需求。
这个demo的作用是在进入主界面后30秒唤醒屏幕并解锁,仅供演示唤醒屏幕功能。
首先加入以下两个权限:
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
然后是activity中的代码,唤醒并解锁屏幕
/*
* 代码唤醒屏幕demo
* 程序执行后一段时间唤醒屏幕
*/
import android.app.Activity;
import android.app.KeyguardManager;
import android.app.KeyguardManager.KeyguardLock;
import android.content.Context;
import android.os.Bundle;
import android.os.PowerManager;
import android.util.Log;
import android.view.Menu;
public class MainActivity extends Activity {
Context context = MainActivity.this;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Thread wakeUpThread = new Thread(new WakeUpThread());
wakeUpThread.start();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
class WakeUpThread implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
try {
Thread.sleep(30*1000);//休眠一分钟
//获取电源管理器对象
Log.e("zhiyinqing","该开启屏幕了");
PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP |
PowerManager.SCREEN_DIM_WAKE_LOCK,"bright");
wl.acquire(); //点亮屏幕
//wl.release();//释放
//屏幕解锁
KeyguardManager km= (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
//得到键盘锁管理器对象
KeyguardLock kl = km.newKeyguardLock("unLock");
//参数是LogCat里用的Tag
kl.disableKeyguard();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}