`
熊滔爱孟涛静
  • 浏览: 124698 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Android Lock 使用

阅读更多
  PowerManager 和PowerManager.WakerLock7用于对Android设备的电源进行管理。
  PowerManager:This class gives you control of the power state of the device.
  PowerManager.WakeLock: lets you say that you need to have the device on.
  Android中通过各种Lock锁对电源进行控制,需要注意的是加锁和解锁必须成对出现。先上一段Standup Timer里的代码然后进行说明。
private void acquireWakeLock() {
        
if (wakeLock == null) {
                Logger.d(
"Acquiring wake lock");
                PowerManager pm
= (PowerManager) getSystemService(Context.POWER_SERVICE);
                wakeLock
= pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, this.getClass().getCanonicalName());
                wakeLock.acquire();
            }
       
    }


private void releaseWakeLock() {
       
if (wakeLock != null && wakeLock.isHeld()) {
            wakeLock.release();
            wakeLock
= null;
        }

    }
acquireWakeLock()方法中获取了 SCREEN_DIM_WAKE_LOCK锁,该锁使 CPU 保持运转,屏幕保持亮度(可以变灰)。这个函数在Activity的 onResume中被调用。releaseWakeLock()方法则是释放该锁。它在Activity的 onPause中被调用。利用Activiy的生命周期,巧妙的让 acquire()和release()成对出现。
 @Override
    protected void onResume()
    {
       
super.onResume();
               
//获取锁,保持屏幕亮度
        acquireWakeLock();
        startTimer();
    }

 

 protected void onPause()
    {
       
super.onPause();
        
synchronized(this) {
                cancelTimer();
                releaseWakeLock();

               
if (finished) {
                    clearState();
                }
else {
                    saveState();
                }
            }
    }

  PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);通过 Context.getSystemService().方法获取PowerManager实例。然后通过PowerManager newWakeLock((int flags, String tag)来生成WakeLock实例。int Flags指示要获取哪种WakeLock,不同的Lock对cpu 、屏幕、键盘灯有不同影响。

获取WakeLock实例后通过acquire()获取相应的锁,然后进行其他业务逻辑的操作,最后使用release()释放(释放是必须的)。

各种锁的类型对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应用的。
分享到:
评论

相关推荐

    android-lockpattern v3的源码

    《Android LockPattern 源码解析》 在Android系统中,LockPattern是用户安全的重要组成部分,它为用户提供了一种图形化的解锁方式,既方便又安全。Android-lockpattern库是实现这一功能的核心组件,版本v3引入了更...

    android-lockpattern_v3.0_src

    最新版的android lockpattern

    Lock-Google.Android,使用google和lock for android进行本地登录.zip

    3. **Auth0 SDK**:`Lock-Google.Android`项目使用了Auth0的Android SDK,该SDK提供了简单的API,让开发者可以快速实现用户登录界面,并处理与Auth0服务器的通信,包括获取和验证access tokens。 4. **自定义登录UI...

    android-lockpattern,安卓系统.zip

    【Android LockPattern】是安卓系统中的一个开源项目,主要用于实现用户身份验证的图形解锁方式。在Android 3.2.1 beta(46)版本中,这个组件被广泛使用,为用户提供了一种安全且直观的方式来保护他们的设备。下面...

    浅析Wakelock机制与Android电源管理

    通过合理地使用这些组件,Android设备可以达到节能的目的。 知识点: * Wakelock机制是Android电源管理的核心机制之一 * Wakelock机制可以防止Android设备在不必要的情况下进入休眠状态 * Proximity Sensor是一个...

    android-lockpattern的小demo

    这个是关于开源项目android-lockpattern为依赖而实现的图案(九宫格)解锁的实现方式,具体请看博文:http://blog.csdn.net/jan_s/article/details/43952521

    jquery Android屏幕解锁插件patternlock

    **jQuery Android屏幕解锁插件PatternLock详解** PatternLock是一款基于jQuery的Android风格图案解锁插件,它模拟了Android系统中的图形解锁方式,适用于Web应用程序,为用户提供了一种安全且直观的验证方式。这款...

    Android代码-Android网格锁屏幕视图

    Android Lock9View An Android grid lock screen view with a callback interface. ScreenShot Demo Usage Gradle compile 'com.takwolf.android:lock9view:0.0.11' Layout example 1 Layout example 2 PS : ...

    Android powermanger wakelock

    Android 电源管理 -- wakelock机制,通过控制wakelock 实现保持pad 禁止休眠状态; Wake Lock是一种锁的机制, 只要有人拿着这个锁,系统就无法进入休眠, 可以被用户态程序和内核获得. 这个锁可以是有超时的 或者 是...

    Android-用于社交授权的AndroidRxJava库GoogleFacebook和用于密码的SmartLock

    RxJava是一个在Android平台上广泛使用的响应式编程库,它允许开发者以一种声明式的方式处理异步数据流。在社交授权场景中,RxJava可以帮助简化复杂的网络请求和回调处理,提供一种更简洁、易测试的代码结构。例如,...

    应用展示了创建Kiosk(桌面锁定)应用时Android锁屏任务模式的基本使用

    在本文中,我们将深入探讨如何在Android平台上创建一个Kiosk应用,特别是在锁屏任务模式下的基本使用。 首先,让我们了解什么是锁屏任务模式。在Android 7.0(Nougat)及更高版本中,引入了锁屏任务模式(也称为单...

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

    然而,需要注意的是,这个方法可能在某些设备上不起作用,因为现代的Android系统通常使用硬件级别的亮度控制。 更灵活地控制屏幕亮灭的方式是使用`WakeLock`。`WakeLock`是一种权限,允许应用在需要时保持设备的...

    Android代码-PinLock

    An Android library which can be used for implementing PIN lock mechanism in Android applications. Usage First, add PinLock dependency to your build.gradle. PinLock is available in both Maven and ...

    浅析Wakelock机制与Android电源管理.pdf

    例如,在Android操作系统中,有很多组件需要使用Wakelock机制来控制设备的休眠和唤醒,如Wi-Fi模块、蓝牙模块等。此外,Wakelock机制也可以用于实现设备的省电模式。在省电模式下,设备可以关闭不必要的设备,降低...

    android WakeLock使用方法代码实例

    Android WakeLock 使用方法代码实例 Android WakeLock 是 Android 中的一个重要组件,它可以控制屏幕的背光开关,唤醒锁的意思是它可以在屏幕关闭时保持屏幕的点亮状态。下面是一个使用 WakeLock 的代码实例: ...

    Android代码-Lock-Facebook.Android

    Lock-Facebook helps you integrate native Login with Facebook Android SDK and Lock Deprecation notice This package relies on a token endpoint that is now considered deprecated. If your Auth0 client was...

    lock锁屏 android

    lock锁屏 android

    Android 不休眠 不锁屏

    通常,我们会使用`PARTIAL_WAKE_LOCK`类型的`WakeLock`来保持CPU运行,而`SCREEN_BRIGHT_WAKE_LOCK`则用于保持屏幕亮起。使用`PowerManager.WakeLock`的`acquire()`和`release()`方法来控制`WakeLock`的开启和关闭。...

    jquery九宫格模拟Android屏幕解锁插件patternlock

    **jQuery九宫格模拟Android屏幕解锁插件PatternLock详解** 在网页交互设计中,为了提供更贴近用户习惯的体验,有时我们需要将移动端Android设备的九宫格解锁方式移植到Web应用上。`PatternLock`就是一个专门为此...

    database-lock.zip_Android 数据库_Android数据库_android_database-lock_安

    本主题将深入探讨如何在Android中使用SQLite数据库,并特别关注数据安全性,尤其是数据库加密。 一、SQLite数据库基础 SQLite数据库是Android系统默认的数据库解决方案。开发者可以通过`SQLiteOpenHelper`类来创建...

Global site tag (gtag.js) - Google Analytics