【问题标题】:How do i use the constant Full_Wake_Lock in android4.0?如何在android4.0 中使用常量Full_Wake_Lock?
【发布时间】:2014-01-04 20:16:42
【问题描述】:

我正在尝试创建一个程序以在屏幕打开时保持键盘背光灯亮起。我对 android 很陌生,但我已经编程 java 6 个月了。我不确定如何使用常量 Full_Wake_Lock 来保持 kb lgiht 开启。

【问题讨论】:

    标签: android keyboard backlight


    【解决方案1】:

    您需要启动一个Service。
    然后您必须在 onCreate 中获取唤醒锁,然后在 onDestroy 中释放 WakeLock。也就是说,如果您试图从后台保持唤醒锁。

    PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
    PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Tag");
    wl.acquire();
    

    就是得到它,然后释放它:

    wl.release();
    

    当然,您可能希望在任何方法之外的类主体内声明wl。

    【讨论】:

    • PowerManager.FULL_WAKE_LOCK 现在已弃用,我应该改用什么?
    • 感谢您的回答。我之前看过这个链接,正如你看到的那样,WakeLock 在 API 17 中已被弃用,我们应该使用 FLAG_KEEP_SCREEN_ON,但它不能正常工作。当我使用该标志时,它不会打开设备并且应用程序无法启动。如果我们在应用中使用不推荐使用的方法或属性,这会是一个大问题吗?
    • 我会说你应该可以使用FULL_WAKE_LOCK 至少在接下来的几个Android更新中。如果我没记错的话,API 17 是 4.2,这是在极少数设备上的。此外,不推荐使用的方法通常仍然在更新版本的 Android 中起作用(无论如何,根据我的经验)。
    • 另外,如果您想避免使用不推荐使用的方法,您可以获取部分唤醒锁定以及使用ACQUIRE_CAUSES_WAKEUP 唤醒设备并打开屏幕。不确定这与使用已弃用的 FULL_WAKE_LOCK 相比效率如何
    【解决方案2】:

    之前:wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "DoNotDimScreen");

    之后:wakeLock = pm.newWakeLock(PowerManager.ON_AFTER_RELEASE, "DoNotDimScreen");

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-26
      • 1970-01-01
      • 2010-12-16
      • 2016-09-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多