Articles of wakelock

WakeLock在仍然举行时最终确定

pm和keepScreenOnvariables是全局定义的。 我在OnCreate方法中获取了PowerManager.WakeLock: pm = (PowerManager) getSystemService(Context.POWER_SERVICE); keepScreenOn = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_LOCK,”tpd”); 在我的onStart,onResume和onRestart中我抓住了锁 if (keepScreenOn == null) { keepScreenOn = pm.newakeLock(PowerManager,SCREEN_BRIGHT_LOCK,”tpd”); } keepScreenOn.acquire(); 在我的onDestroy,onPause和onStop中,我发布了锁定: if (keepScreenOn != null) { keepScreenOn.release(); keepScreenOn = null } 我的应用程序退出后,我得到一个失败的屏幕,adb抱怨 java.lang.Exception:WakeLock在仍然持有时完成:tpd 跟踪显示我在退出前释放了锁。 我错过了什么? 如果没有穿越onPause , onStop或onDestroy至少一个,就无法离开应用程序。 我可以看到应用程序调用release() ,因为它调用了acquire(),所以即使唤醒锁被引用计数,它仍然应该没有引用。

我怎样才能看到哪些唤醒锁是活跃的

出于某种原因,我的Android手机不会进入睡眠状态。 我认为唤醒锁是让它保持清醒,但没有办法分辨哪些唤醒锁是活跃的。 正在运行的服务没有列出任何可疑的东西,当然也没有什么不同。 所以我的问题是: 当进程结束时,Android肯定会发布唤醒锁吗? 有可能一个应用程序写得不好,并且在退出之前没有发布唤醒锁吗? 有没有办法看到活跃的唤醒锁? 这就是dumpsys power显示: $ dumpsys power Power Manager State: mIsPowered=true mPowerState=0 mScreenOffTime=226093 ms mPartialCount=0 mWakeLockState= mUserState= mPowerState= mLocks.gather= mNextTimeout=91922738 now=92136117 -213s from now mDimScreen=true mStayOnConditions=0 mScreenOffReason=3 mUserState=0 mBroadcastQueue={-1,-1,-1} mBroadcastWhy={0,0,0} mPokey=1 mPokeAwakeonSet=false mKeyboardVisible=false mUserActivityAllowed=false mKeylightDelay=6000 mDimDelay=47000 mScreenOffDelay=7000 mPreventScreenOn=false mScreenBrightnessOverride=-1 mButtonBrightnessOverride=-1 mScreenOffTimeoutSetting=60000 mMaximumScreenOffTimeout=2147483647 mLastScreenOnTime=0 mBroadcastWakeLock=UnsynchronizedWakeLock(mFlags=0x1 mCount=0 mHeld=false) mStayOnWhilePluggedInScreenDimLock=UnsynchronizedWakeLock(mFlags=0x6 mCount=0 mHeld=false) mStayOnWhilePluggedInPartialLock=UnsynchronizedWakeLock(mFlags=0x1 […]

Android – 在不触发睡眠/锁定屏幕的情况下关闭显示屏 – 使用触摸屏打开

我一直试图find一种关闭显示器的方法,并从用户触摸触摸屏唤醒。 该设备处于嵌入式环境中,其中设备是平板电脑,并且用户除了触摸屏之外不能访问任何东西(根本没有按钮)。 它连接到电源,所以电池不会有问题,但是当我检测到没有活动时我想要关闭屏幕,这样它就不会整天盯着它们,也不会缩短LCD背光的寿命。 我永久保持一个唤醒锁,并决定何时自己睡觉。 问题是,当我使用以下方式关闭屏幕时: WindowManager.LayoutParams params = getWindow().getAttributes(); params.screenBrightness = 0; getWindow().setAttributes(params); 活动暂停并停止。 并且该单元不会响应触摸来唤醒它。 您需要按电源按钮。 此时,“滑动解锁”显示出来。 我想关闭显示器,然后继续运行,这样我就可以检测到触摸屏事件并重新打开显示屏。 我也尝试将显示器调到0.1的亮度,这适用于某些设备,但我需要它的设备才能工作,只是“调暗”显示器。 我也试过这个: // First Remove my FULL wakelock //then aquire a partial wake lock (which should turn off the display) PowerManager.WakeLock wl = manager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, “Your Tag”); wl.acquire(); 但是此方法不会关闭显示屏。

初学者问题:Wakelocks

我是WakeLock的新概念,需要你的帮助。 问题: 我认为WakeLock是某种types的锁,当执行代码持有时会阻止设备进入hibernate状态。 如果设备已经处于睡眠/待机模式,那么代码将会执行呢? 假设它永远不会获得一个WakeLock? 当一个长时间运行的任务(abt 7-8秒)在后台线程(AsyncTask)中完成时,我应该为打一个WakeLock而烦恼吗? AsyncTask已经为我获得了吗? 链接官方文件和wakelocks书面表示赞赏。 谢谢。

唤醒lockingandroid服务重复

我有这个应用程序需要运行一个服务(背景),周期性地发出嘟嘟声。 手机需要每隔一分钟哔一声,持续5秒钟(在服务中使用一个处理程序)。 我已经实现了这个完美的服务,但是当手机进入深度睡眠模式时,这个处理程序的执行停止。 在这个问题中使用这个答案,我设法使用唤醒锁,它工作正常。 但是,当我明确地把手机置于深度睡眠模式时,处理程序停止执行。 我在哪里放置唤醒服务。 下面的代码片段。 public class PlaySound extends Service{ PowerManager.WakeLock wl ; PowerManager pm; private SoundManager mSoundManager; boolean wakeUpFlag = false; @Override public void onCreate(){ super.onCreate(); mSoundManager = new SoundManager(); mSoundManager.initSounds(getBaseContext()); mSoundManager.addSound(1, R.raw.sound); } @Override public int onStartCommand(Intent intent, int flags, int startId) { startservice(); return START_STICKY; } private void startservice() { […]

“PowerManger.FULL_WAKE_LOCK已弃用”是什么意思?

我有这个代码: wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, "MyWakeLock"); 而FULL_WAKE_LOCK已被删除,并且显示“PowerManger.FULL_WAKE_LOCK已弃用”。 代码正在工作。 但究竟是什么意思? 它可以唤起任何问题吗?

使用WakeLock保持stream播放

我有一个MediaPlayer运行在一个正在从URL(stream媒体)播放audio的服务中。 到目前为止,它似乎运行良好,甚至在手机待机时继续播放。 我目前没有获得一个唤醒锁。 我的问题是: 在我的情况下,实际上有必要获得一个唤醒锁吗? 如果有必要,我应该得到什么样的唤醒锁? 是的,这是wakelock的合法用例,因为我的用户明确地希望audio继续播放。

如何在睡眠模式下唤醒Android Wear?

当Android Wear进入睡眠模式(屏幕变暗)时,我的代码的某些部分不会执行。 我在后台服务中使用Timer来触发一些操作,比如将数据从磨损发送到移动设备,但数据不发送。 当我点击屏幕将其唤醒时,它会被发送。 当屏幕closures时,我也尝试使用Timer触发振动通知,但是直到我点击屏幕才会出现。 在debugging模式下(蓝牙或USB),数据发送和通知工作正常。 我怀疑这是因为当Android Wear处于睡眠模式时,它的CPU工作在最低水平,因为Timer仍在运行,但不适用于GoogleApiClient,IntentService或Notification。 我已经尝试了许多方法来唤醒CPU,比如AlarmManager,PowerManager,Wakelock,但是它并不适用于Android Wear。 任何人都遇到过这个问题? 解决办法是什么?

用户不活动时屏幕变暗

我有一个应用程序,用于说4个小时,但每5分钟用户需要input或阅读屏幕。 把手机睡觉和locking屏幕有点烦人。 所以我有两个select: getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 它不会locking屏幕,但屏幕总是亮的,我想在没有任何活动的时候将其调暗。 只是因为电池的使用寿命,或者这4个小时没那么重要? 一个SCREEN_DIM_WAKE_LOCK的唤醒锁,它可以做我想要的,但是我被告知宁愿使用上面的选项1。 我可以以某种方式达到通缉目的吗?

如何禁用电源button?

是否有可能重写android电源button的function? 我想“禁用”电源button。 我的计划是重写此button的function,什么都不做({};)我的主要想法是禁用closures屏幕。 我想当有人按下电源button什么都没有发生。 我怎样才能做到这一点 ?