android 点亮屏幕,解锁,保持常量

本文介绍了一个Android应用如何通过代码实现屏幕常亮及解锁功能,包括使用PowerManager和KeyguardManager来获取系统权限,以及如何正确释放这些权限。



public class MainActivity extends Activity {

String TAG = "tag";
PowerManager mPowerManager; // 电源控制管理器,比如防锁屏
WakeLock mWakeLock; // 唤醒锁

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// 点亮屏幕
acquireWakeLock(30000);
// 解锁屏幕
disableKeyguard(true);
}

// 解锁屏幕
private void disableKeyguard(boolean isDis) {
KeyguardManager keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);

KeyguardLock keyguardLock = keyguardManager.newKeyguardLock("123");
if (isDis) {
// 解锁
keyguardLock.disableKeyguard();
} else {
// 屏幕锁定
keyguardLock.reenableKeyguard();
}
}

// 点亮屏幕
public void acquireWakeLock(long milltime) {
if (mWakeLock == null) {
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK
| PowerManager.ACQUIRE_CAUSES_WAKEUP
| PowerManager.ON_AFTER_RELEASE, TAG);

mWakeLock.acquire(milltime);
}
}

// 关闭屏幕
public void releaseWakeLock() {
if (mWakeLock != null && mWakeLock.isHeld()) {
mWakeLock.release();
mWakeLock = null;
}
}

// 屏幕保持常量
private void screenWakeUp(boolean isWakeUp) {
if (null == mPowerManager) {
mPowerManager = (PowerManager) getSystemService(POWER_SERVICE);
}
if (null == mWakeLock) {
mWakeLock = mPowerManager.newWakeLock(
PowerManager.SCREEN_DIM_WAKE_LOCK, getClass().getName());
}
if (!mWakeLock.isHeld() && isWakeUp) {
mWakeLock.acquire();
}
if (mWakeLock.isHeld() && !isWakeUp) {
mWakeLock.release();
}
}


权限:
<!-- 保持唤醒 -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值