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

==================片段一==================
本文将带你实现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, keyboardlight off 

SCREEN_DIM_WAKE_LOCK: screen dim, keyboardlight off 

SCREEN_BRIGHT_WAKE_LOCK: screen bright,keyboard light off 

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, int startId){  
//点亮亮屏
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 created the wake lock.

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

 

API有个参数可以点亮

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值