关于黑屏时启动Activity的一些方法

来源:互联网 发布:张龙java培训视频 编辑:程序博客网 时间:2024/06/01 21:54
==================片段一==================
本文将带你实现Android屏幕解锁和锁定;Android屏幕常亮/点亮以及其他相关权限,感兴趣的朋友可以参考下,希望本文对你有所帮助
1、Android屏幕常亮/点亮 
复制代码代码如下:

//保持屏幕常亮 
PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE); 
mWakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK |PowerManager.ACQUIRE_CAUSES_WAKEUP,LOCK_TAG); 
mWakeLock.acquire(); 

复制代码代码如下:

//释放屏幕常亮锁 
if(null != mWakeLock) { 
   mWakeLock.release(); 


2、Android屏幕解锁和锁定 
复制代码代码如下:

//屏幕解锁 
KeyguardManager keyguardManager =(KeyguardManager)getSystemService(KEYGUARD_SERVICE); 
KeyguardLock keyguardLock =keyguardManager.newKeyguardLock(LOCK_TAG); 
keyguardLock.disableKeyguard(); 
//屏幕锁定 
keyguardLock.reenableKeyguard(); 

3、相关权限 
复制代码代码如下:

 
 

=================片段二=================

在android开发中,经常会遇到一些情形需要程序主动维持屏幕的点亮状态,或者自己点亮屏幕并且解除屏幕锁定状态,这时可以用下面的方法予以解决。

 

 

情形一:类似于阅读软件,在阅读过程中忽视系统的屏幕超时设置保持屏幕长亮。可以直接

在 onCreat() 方法中加上下面一句:

 

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

 

 

情形二:类似于闹钟,在锁屏状态下点亮屏幕。方法如下:

 

在AndroidManifest.xml中加上permission 权限:

 

 

在onCreat() 方法中添加以下语句:

 

//电源管理器

PowerManagerpm = (PowerManager)getSystemService(POWER_SERVICE);

WakeLockmWakelock =pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP|PowerManager.SCREEN_DIM_WAKE_LOCK,"SimpleTimer");

 

flags参数说明:

PARTIAL_WAKE_LOCK: Screen off, keyboardlightoff 

SCREEN_DIM_WAKE_LOCK: screen dim, keyboardlightoff 

SCREEN_BRIGHT_WAKE_LOCK: screen bright,keyboard lightoff 

FULL_WAKE_LOCK: screen bright, keyboardbright

ACQUIRE_CAUSES_WAKEUP:当获得WAKE_LOCK时强制立即点亮屏幕和键盘

ON_AFTER_RELEASE:释放锁时重置activity timer

 

 

重载Avtivity的onResume()和onDestroy方法:

 

@Override

protectedvoid onResume() {

// TODOAuto-generated method stub

super.onResume();

mWakeLock.acquire();//点亮

}

 

@Override

protectedvoid onDestroy() {

// TODOAuto-generated method stub

mWakeLock.release();//关闭

super.onDestroy();

}

 

情形三:类似于来电,有时程序不仅仅需要主动点亮屏幕还需要解除屏幕的锁定状态。此时可以在情形二的基础上增添以下的代码:

 

在AndroidManifest.xml中加上permission 权限:

 

 

增加解除屏幕锁定的语句:

 

//键盘锁管理器对象  

KeyguardManager km= (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);  

 //这里参数”unLock”作为调试时LogCat中的Tag

KeyguardLockkl = km.newKeyguardLock("unLock");  

kl.disableKeyguard();  //解锁


=================片段三======================

看到一个帖,做的笔记,帖子在:http://topic.csdn.net/u/20110304/15/ae5279b1-692e-48a7-a5b9-0e579a3a6974.html

我想记录的是:

做提醒功能的一个服务,自动解锁+亮屏。

写一个Activity启动该服务即可,用一个线程开启服务,要是黑屏的状态下启动才有效果。

import android.app.KeyguardManager;
import android.app.KeyguardManager.KeyguardLock;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.os.PowerManager;
import android.util.Log;

public class ScreenService extends Service {

//声明键盘管理器
KeyguardManager mKeyguardManager = null;  
//声明键盘锁
private KeyguardLock mKeyguardLock = null;  
//声明电源管理器
private PowerManager pm;
private PowerManager.WakeLock wakeLock;

@Override   
public IBinder onBind(Intent arg0) {  
return null;   
}   
@Override   
public void onCreate() {   
//获取电源的服务
pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
//获取系统服务
mKeyguardManager = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);
super.onCreate();   
}   
@Override   
public void onStart(Intent intent, intstartId){  
//点亮亮屏
wakeLock = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP |PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
wakeLock.acquire();
Log.i("Log : ", "------>mKeyguardLock");
//初始化键盘锁,可以锁定或解开键盘锁
mKeyguardLock = mKeyguardManager.newKeyguardLock("");  
//禁用显示键盘锁定
mKeyguardLock.disableKeyguard();  
}
@Override
public void onDestroy() {
wakeLock.release();
super.onDestroy();
}   
}

记得需要在AndroidManifest文件中加入



 

 

 

 

用startService启动的,屏幕一直不会彻底变黑,在Activity的stop方法中stopService,
然后再Service的destory方法中将亮屏的给释放 mWakelock.release();
这样就不会一直亮着了。

 

 


屏幕虽然亮了,可是并没有像正常操作那样的彻底变亮啊,这种让屏幕变亮只是亮一点,还是很暗。


public void acquire ()//该方法只是确保屏幕会被唤醒
Makes sure the device is on at the level you asked when you createdthe wake lock.

public void acquire (long timeout) //参数表示唤醒的时间,时间过后,会自动释放该锁
Makes sure the device is on at the level you asked when you createdthe wake lock. The lock will be released after the giventimeout.

 

API有个参数可以点亮

0 0
原创粉丝点击