`

PowerManager和WakeLock的操作步骤

 
阅读更多
1.PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);通过 Context.getSystemService().方法获取PowerManager实例。
2.然后通过PowerManager的newWakeLock((int flags, String tag)来生成WakeLock实例。int Flags指示要获取哪种WakeLock,不同的Lock对cpu 、屏幕、键盘灯有不同影响。
3.获取WakeLock实例后通过acquire()获取相应的锁,然后进行其他业务逻辑的操作,最后使用release()释放(释放是必须的)。
4.WakeLock.acquire();  //唤醒点亮屏幕

//这个期间屏幕将点亮

WakeLock.release(); //恢复屏幕到黑暗

当然Android考虑到安全并不是说开发者有了权限,就可以随意的控制屏幕的背光显示或无,只有通过acquire点亮的背光才能使用release让其关闭背光,如果直接调用release方法关闭屏幕将会产生一个异常。

从Android 2.1 API Level7开始增加了一个判断屏幕是否处于点亮状态可以使用public boolean isScreenOn ()这个方法,代码为

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
boolean isScreenOn = pm.isScreenOn();

关于int flags
各种锁的类型对CPU 、屏幕、键盘的影响:

PARTIAL_WAKE_LOCK:保持CPU 运转,屏幕和键盘灯有可能是关闭的。

SCREEN_DIM_WAKE_LOCK:保持CPU 运转,允许保持屏幕显示但有可能是灰的,允许关闭键盘灯

SCREEN_BRIGHT_WAKE_LOCK:保持CPU 运转,允许保持屏幕高亮显示,允许关闭键盘灯

FULL_WAKE_LOCK:保持CPU 运转,保持屏幕高亮显示,键盘灯也保持亮度

ACQUIRE_CAUSES_WAKEUP:Normal wake locks don't actually turn on the illumination. Instead, they cause the illumination to remain on once it turns on (e.g. from user activity). This flag will force the screen and/or keyboard to turn on immediately, when the WakeLock is acquired. A typical use would be for notifications which are important for the user to see immediately.

ON_AFTER_RELEASE:f this flag is set, the user activity timer will be reset when the WakeLock is released, causing the illumination to remain on a bit longer. This can be used to reduce flicker if you are cycling between wake lock conditions.

权限获取
要进行电源的操作需要在AndroidManifest.xml中声明该应用有设置电源管理的权限。

<uses-permission android:name="android.permission.WAKE_LOCK" />你可能还需要<uses-permission android:name="android.permission.DEVICE_POWER" />另外WakeLock的设置是 Activiy 级别的,不是针对整个Application应用的。



可以在activity的onResume方法里面操作WakeLock,  在onPause方法里面释放。
分享到:
评论

相关推荐

    Android powermanger wakelock

    PowerManager和WakeLock的操作步骤 PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);通过 Context.getSystemService().方法获取PowerManager实例。 然后通过PowerManager的newWakeLock ...

    Unity调用Android系统PowerManager类功能.zip

    - 唤醒锁(WakeLock):`PowerManager.WakeLock`接口提供了控制设备保持唤醒的能力。开发者可以创建不同类型的唤醒锁,如PARTIAL_WAKE_LOCK(允许CPU运行但不亮屏)或FULL_WAKE_LOCK(CPU运行并亮屏)。创建唤醒锁...

    Android亮屏和熄屏控制实例详解

    总的来说,Android的`PowerManager`和`WakeLock`机制为开发者提供了精细的屏幕控制,允许根据应用需求定制屏幕的状态。理解并正确使用这些工具,对于创建高效、用户体验良好的Android应用至关重要。在实际开发过程中...

    創意Android 程式設計 SDK范例大全章节

    - **原理**:利用PowerManager获取WakeLock,并设置屏幕亮度为最高,这样手机屏幕就会发出强烈的光线,模拟手电筒效果。 - **关键步骤**: - 获取PowerManager实例。 - 使用PowerManager创建WakeLock对象。 - ...

    android中的屏幕唤醒

    可以通过`PowerManager`实例创建一个`WakeLock`对象,并设置其类型和标志。 ```java PowerManager.WakeLock wl; wl = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_BRIGHT_WAKE_LOCK, ...

    Android屏幕常亮

    获取`WakeLock`需要以下步骤: - 获得`PowerManager`实例:`PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);` - 创建`WakeLock`:`WakeLock wakeLock = pm.newWakeLock(PowerManager.SCREEN_...

    Android监听屏幕是否锁屏

    总之,通过`PowerManager`的`WakeLock`和`BroadcastReceiver`,我们可以有效地监控Android设备的屏幕状态,从而在屏幕锁屏或解锁时执行相应的操作。这个功能对于实现特定功能的应用来说是至关重要的,比如提高用户...

    Android保持屏幕常亮唤醒状态的方法

    以下是关于如何在Android中保持屏幕常亮唤醒状态的详细步骤和知识点: 1. **权限声明**: 在AndroidManifest.xml文件中,你需要添加一个特殊的权限来允许你的应用控制屏幕唤醒。这是通过在manifest文件的`...

    Android中唤醒屏幕

    WakeLock wakeLock = powerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "MyApp:ScreenLock"); ``` 这里,`POWER_SERVICE`是获取PowerManager服务的别名,`SCREEN_BRIGHT_WAKE_LOCK`表示我们要获取...

    Android保持屏幕常亮2种实现方法

    在Android开发中,有时我们...**方法一:使用PowerManager和WakeLock** 这种方法涉及到Android的PowerManager服务,它允许应用程序控制设备的唤醒状态。首先,在AndroidManifest.xml文件中添加必要的权限: ```xml ...

    Android sp&wp 测试代码

    - C/C++源文件:实现JNI函数的代码,处理SharedPreferences和WakeLock的操作。 - Makefile:编译和链接C/C++代码的规则。 - Android.mk:用于构建NDK项目的文件,定义编译目标和依赖项。 为了调试和测试这些功能,...

    安卓手机锁屏代码

    PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "LockScreenTag"); wakeLock.acquire(); KeyguardManager keyguardManager = (KeyguardManager) getSystemService...

    Unity调用Android JAR

    AndroidJavaObject wakeLock = powerManager.Call("newWakeLock", wakeLockClass.GetStatic("PARTIAL_WAKE_LOCK"), "MyAppWakeLock"); wakeLock.Call("acquire"); } private void ReleaseWakeLock() { if ...

    一键锁屏Demo

    `PowerManager`提供创建和管理`WakeLock`的方法,确保处理器不会因为屏幕关闭而休眠。 3. **窗口管理服务(WindowManager)**: `WindowManager`接口用于与Android窗口管理器进行交互,可以添加、更新或移除窗口。...

    软件内每日提醒功能实现

    `PowerManager.WakeLock`可以使CPU保持运行状态,避免因为设备休眠而错过提醒。 6. **优化和注意事项**: - 注意合理设置提醒的时间间隔,避免过于频繁的提醒导致性能问题。 - 在用户不需要提醒时,如关闭应用或...

    闹钟程序.zip

    你需要在`BroadcastReceiver`中获取并使用`PowerManager.WakeLock`,并在适当的时候释放以避免电池过度消耗。 最后,通知服务在闹钟响起时向用户显示提醒。Android提供`NotificationCompat.Builder`类来创建通知,...

    远程服务唤醒

    5. 使用PowerManager获取WakeLock,确保设备在执行任务时不会进入休眠状态。 6. 完成任务后,释放WakeLock,避免过度消耗电池。 需要注意的是,Google在Android 8.0(API级别26)及以上版本引入了Background ...

    安卓开发-一键锁屏功能源码.zip.zip

    通过`getSystemService()`方法获取系统的PowerManager服务,然后使用`newWakeLock()`方法创建一个`WakeLock`对象,`WakeLock`用于控制设备的唤醒状态。 2. **定义WakeLock权限**: 在AndroidManifest.xml文件中,...

Global site tag (gtag.js) - Google Analytics