android.os.PowerManager api运用

本文介绍了Android系统中PowerManager类及其成员WakeLock的基本用法,包括如何请求和释放唤醒锁来控制设备的休眠状态,确保应用在特定场景下能够保持屏幕常亮。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

  1. // PowerManager的一般用法,请求和释放唤醒锁  
  2. PowerManager powerMgr = (PowerManager)  
  3.         getSystemService(Context.POWER_SERVICE);  
  4. int flags = PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP;  
  5. WakeLock wakeLock = powerMgr.newWakeLock(flags, "for debug purpose tag");  
  6. wakeLock.acquire(); // 获取唤醒锁  
  7. wakeLock.release(); // 释放唤醒锁  
  8. // 在游戏中,会将acquire放在onResume中;将release放在onPause,这样在程序运行时就可以保持屏幕常量;在程序处在后台时,就恢复原来的设置。  
  9.   
  10.   
  11. // PowerManager的其它api的使用  
  12. powerMgr.goToSleep(SystemClock.uptimeMillis() + 100); // 100ms后进入睡眠  
  13. powerMgr.isScreenOn(); // 屏幕是否亮着  
  14. powerMgr.userActivity(SystemClock.uptimeMillis()+100true); // 相当于按home键,会引起从睡眠激活  
  15.   
  16.   
  17. // WakeLock的其它api  
  18. wakeLock.acquire(1000); // 获取唤醒锁,并在1000ms后释放  
  19. wakeLock.isHeld(); // 当前是否持有唤醒锁  
  20. // 是否使用引用计数,默认是启用的。引用计数应该就是第一次请求为1,第二次加1,再一次再加1。  
  21. // 在释放时,只有引用计数为0时才被视为完全释放(所以要多次调用release)  
  22. wakeLock.setReferenceCounted(true);   
package com.market.project.main.service import android.annotation.SuppressLint import android.app.KeyguardManager import android.content.BroadcastReceiver import android.content.Context import android.content.Context.KEYGUARD_SERVICE import android.content.Context.POWER_SERVICE import android.content.Intent import android.os.PowerManager import com.market.common.utils.LogUtils import com.market.project.main.ApkPlayVideo @SuppressLint("Wakelock") class ScreenReceive : BroadcastReceiver() { private companion object { const val TAG = "ScreenReceive" @Synchronized @JvmStatic fun mStartActivity(context: Context?, cls: Class<*>) { val it = Intent(context, cls) it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) context?.startActivity(it) } } override fun onReceive(context: Context?, intent: Intent?) { val action = intent?.action LogUtils.v(TAG, "onReceive $action") if (action == Intent.ACTION_SCREEN_OFF) { LogUtils.v(TAG, "wakeLockAndPlayVideo") wakeLockAndPlayVideo(context) } } private fun wakeLockAndPlayVideo(context: Context?) { // 获取PowerManager的实例 val pm = context?.getSystemService(POWER_SERVICE) as? PowerManager // 得到一个WakeLock唤醒锁 var mWakelock = pm?.newWakeLock( PowerManager.PARTIAL_WAKE_LOCK or PowerManager.ON_AFTER_RELEASE, "bright" ) mWakelock?.acquire() val keyguardManager = context?.getSystemService(KEYGUARD_SERVICE) as? KeyguardManager val keyguardLock = keyguardManager?.newKeyguardLock("unLock") keyguardLock?.disableKeyguard() mStartActivity(context, ApkPlayVideo::class.java) mWakelock?.release() } }有什么错误吗
最新发布
03-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值