PowerManager.WakeLock在Android设备上 [英] PowerManager.WakeLock on Android Devices

查看:1687
本文介绍了PowerManager.WakeLock在Android设备上的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想实现我的Andr​​oid应用程序的激活锁定。我在我的onCreat()以下的code:

  PM =(电源管理)getSystemService(Context.POWER_SERVICE);
myWakeLock = pm.newWakeLock(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,激活锁定为调谐器);

第二行导致崩溃。它抛出一个致命异常。至于我可以看到Android的说,第一个参数是没有有效的唤醒锁级别。但在开发者网站建议使用FLAG_KEEP_SCREEN_ON所以我很困惑豆蔻位(<一个href=\"http://developer.android.com/reference/android/os/PowerManager.html#newWakeLock%28int,%20java.lang.String%29\" rel=\"nofollow\">http://developer.android.com/reference/android/os/PowerManager.html#newWakeLock%28int,%20java.lang.String%29)

我必须使用pcated去preowerManager.FULL_WAKE_LOCK?

以下code,所建议的问题如何得到一个Android激活锁定工作?,是不是在我看来,正确的方式。

  getWindow()addFlags(LayoutParams.FLAG_KEEP_SCREEN_ON)。

我不需要为孔应用唤醒。该应用程序是为仪器调谐器和调谐器运行时,只应保持清醒。该计划IST调用myWakeLock.acquire()在stopTuner()方法startTuner()方法和类比myWakeLock.release()。我不能如何实现与所建议的方法。

下面是完整的异常消息:

  04-13 19:21:14.815:E / AndroidRuntime(9452):致命异常:主要
04-13 19:21:14.815:E / AndroidRuntime(9452):了java.lang.RuntimeException:无法启动活动ComponentInfo {de.benediktbock.ffttest / de.benediktbock.ffttest.MainActivity}:java.lang.IllegalArgumentException异常:必须指定一个有效的唤醒锁级别。
04-13 19:21:14.815:E / AndroidRuntime(9452):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2249)
04-13 19:21:14.815:E / AndroidRuntime(9452):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2299)
04-13 19:21:14.815:E / AndroidRuntime(9452):在android.app.ActivityThread.access $ 700(ActivityThread.java:154)
04-13 19:21:14.815:E / AndroidRuntime(9452):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1284)
04-13 19:21:14.815:E / AndroidRuntime(9452):在android.os.Handler.dispatchMessage(Handler.java:99)
04-13 19:21:14.815:E / AndroidRuntime(9452):在android.os.Looper.loop(Looper.java:137)
04-13 19:21:14.815:E / AndroidRuntime(9452):在android.app.ActivityThread.main(ActivityThread.java:5306)
04-13 19:21:14.815:E / AndroidRuntime(9452):在java.lang.reflect.Method.invokeNative(本机方法)
04-13 19:21:14.815:E / AndroidRuntime(9452):在java.lang.reflect.Method.invoke(Method.java:511)
04-13 19:21:14.815:E / AndroidRuntime(9452):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1102)
04-13 19:21:14.815:E / AndroidRuntime(9452):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
04-13 19:21:14.815:E / AndroidRuntime(9452):在dalvik.system.NativeStart.main(本机方法)
04-13 19:21:14.815:E / AndroidRuntime(9452):java.lang.IllegalArgumentException异常:产生的原因必须指定一个有效唤醒锁定级别。
04-13 19:21:14.815:E / AndroidRuntime(9452):在android.os.PowerManager.validateWakeLockParameters(PowerManager.java:488)
04-13 19:21:14.815:E / AndroidRuntime(9452):在android.os.PowerManager.newWakeLock(PowerManager.java:474)
04-13 19:21:14.815:E / AndroidRuntime(9452):在de.benediktbock.ffttest.MainActivity.onCreate(MainActivity.java:62)
04-13 19:21:14.815:E / AndroidRuntime(9452):在android.app.Activity.performCreate(Activity.java:5255)
04-13 19:21:14.815:E / AndroidRuntime(9452):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)
04-13 19:21:14.815:E / AndroidRuntime(9452):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2213)
04-13 19:21:14.815:E / AndroidRuntime(9452):11 ...更多


解决方案

  在开发者网站建议使用FLAG_KEEP_SCREEN_ON


这是指的是一个的替代使用激活锁定 的,如果你的目标就是保持在屏幕上,而你的一些用户界面是前台。


  

我必须使用pcated去preowerManager.FULL_WAKE_LOCK?


这将取决于你正在尝试做的。你必须使用这些常量之一的电源管理 newWakeLock()


  

应用程序是对仪器进行调谐器和调谐器运行时,只应保持清醒。该计划IST调用myWakeLock.acquire()在stopTuner()方法startTuner()方法和类比myWakeLock.release()。我不能如何实现与所建议的方法。


呼叫 setKeepScreenOn(真)一些查看在您的调谐器的用户界面时,你要保持画面的清醒。当你想正常的屏幕行为以恢复您的调谐器UI上调用 setKeepScreenOn(假)一些查看。在这些调用之间,只要您的调谐器的用户界面是在前台,屏幕将不会关闭。作为奖励,你不需要 WAKE_LOCK 的权限。

i am trying to implement an WakeLock in my Android App. I have the following code in my onCreat():

pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
myWakeLock = pm.newWakeLock(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,"WakeLock for Tuner");

The second line leading to a crash. It throws a Fatal Exception. As far as I can see Android says that the first Argument is no valid wake lock level. But on the developer Site it is recommended to use FLAG_KEEP_SCREEN_ON so i am a litte bit confused (http://developer.android.com/reference/android/os/PowerManager.html#newWakeLock%28int,%20java.lang.String%29)

Do I have to use the deprecated PowerManager.FULL_WAKE_LOCK ?

The following Code, as suggested in the Question How to get an Android WakeLock to work? , isn't the right way in my opinion.

getWindow().addFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);

I don't need a Wakeup for the hole App. The App is a tuner for instruments and should only stay awake when the tuner is running. The plan ist to call myWakeLock.acquire() in the startTuner() Method and analogical myWakeLock.release() in the stopTuner() Method. I can't the how to realise that with the suggested way.

Here is the full Exception Message:

04-13 19:21:14.815: E/AndroidRuntime(9452): FATAL EXCEPTION: main
04-13 19:21:14.815: E/AndroidRuntime(9452): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.benediktbock.ffttest/de.benediktbock.ffttest.MainActivity}: java.lang.IllegalArgumentException: Must specify a valid wake lock level.
04-13 19:21:14.815: E/AndroidRuntime(9452):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2249)
04-13 19:21:14.815: E/AndroidRuntime(9452):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2299)
04-13 19:21:14.815: E/AndroidRuntime(9452):     at android.app.ActivityThread.access$700(ActivityThread.java:154)
04-13 19:21:14.815: E/AndroidRuntime(9452):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1284)
04-13 19:21:14.815: E/AndroidRuntime(9452):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-13 19:21:14.815: E/AndroidRuntime(9452):     at android.os.Looper.loop(Looper.java:137)
04-13 19:21:14.815: E/AndroidRuntime(9452):     at android.app.ActivityThread.main(ActivityThread.java:5306)
04-13 19:21:14.815: E/AndroidRuntime(9452):     at java.lang.reflect.Method.invokeNative(Native Method)
04-13 19:21:14.815: E/AndroidRuntime(9452):     at java.lang.reflect.Method.invoke(Method.java:511)
04-13 19:21:14.815: E/AndroidRuntime(9452):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
04-13 19:21:14.815: E/AndroidRuntime(9452):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
04-13 19:21:14.815: E/AndroidRuntime(9452):     at dalvik.system.NativeStart.main(Native Method)
04-13 19:21:14.815: E/AndroidRuntime(9452): Caused by: java.lang.IllegalArgumentException: Must specify a valid wake lock level.
04-13 19:21:14.815: E/AndroidRuntime(9452):     at android.os.PowerManager.validateWakeLockParameters(PowerManager.java:488)
04-13 19:21:14.815: E/AndroidRuntime(9452):     at android.os.PowerManager.newWakeLock(PowerManager.java:474)
04-13 19:21:14.815: E/AndroidRuntime(9452):     at de.benediktbock.ffttest.MainActivity.onCreate(MainActivity.java:62)
04-13 19:21:14.815: E/AndroidRuntime(9452):     at android.app.Activity.performCreate(Activity.java:5255)
04-13 19:21:14.815: E/AndroidRuntime(9452):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)
04-13 19:21:14.815: E/AndroidRuntime(9452):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2213)
04-13 19:21:14.815: E/AndroidRuntime(9452):     ... 11 more

解决方案

But on the developer Site it is recommended to use FLAG_KEEP_SCREEN_ON

That is referring to an alternative to using WakeLock, if your objective is simply to keep the screen on while some of your UI is in the foreground.

Do I have to use the deprecated PowerManager.FULL_WAKE_LOCK ?

That would depend upon what you are trying to do. You have to use one of those constants on PowerManager in newWakeLock().

The App is a tuner for instruments and should only stay awake when the tuner is running. The plan ist to call myWakeLock.acquire() in the startTuner() Method and analogical myWakeLock.release() in the stopTuner() Method. I can't the how to realise that with the suggested way.

Call setKeepScreenOn(true) on some View in your tuner UI when you want to keep the screen awake. Call setKeepScreenOn(false) on some View in your tuner UI when you want normal screen behavior to resume. In between those calls, so long as your tuner UI is in the foreground, the screen will not turn off. As a bonus, you do not need the WAKE_LOCK permission.

这篇关于PowerManager.WakeLock在Android设备上的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆