Android OS2.2过去在设置/应用程序/开发下有一个选项,可以在USB调试期间禁用屏幕锁定。在将我的三星Galaxy S升级到OS2.3.3之后,这个选项消失了,而且在调试时一直解锁我的手机是非常令人沮丧的。
这个选项已经移动了吗?还是有其他方法可以做到这一点?(我讨厌无缘无故删除有用的选项!)
先谢谢你...
发布于 2015-05-05 02:16:45
有多种选择,其中许多都有可怕的(主观)副作用。我会列出我发现的和我能想到的副作用。
我很懒,可能和其他许多人一样,我不喜欢留心一些不必要的事情。这意味着“哦,我在工作的时候打开它,完成后再关闭它”的选项是不可行的。You 将会忘记它,而you 最终会体验到下面列出的任何副作用。
TL;DR
带Debug.isDebuggerConnected()保护的FLAG_KEEP_SCREEN_ON!充电时保持清醒,屏幕超时和唤醒锁定是不可行的选项,如果你只想调试。
从API1和调试开始,这个解决方案还有一个优点!
设置>开发者选项>充电时保持清醒
中的Burn :任何打开它的人都应该有一个巨大的危险信号。它说“充电时”,而不是“调试时”。这意味着,即使你的手机插上了电源,它也会一直开着。这是特别糟糕的,如果你有一个AMOLED屏幕(如Galaxy S系列),这是刻录东西。我打开这个选项有几个星期了,现在我有了一个永久的肖像状态栏…
Notifications:即使你使用低亮度,每次关机时也不要忘记关闭屏幕,如果你只收到一条简单的通知,一些应用程序就会唤醒你的屏幕,这会导致在大部分时间里保持开机。
安全:如果你只是在充电的时候把屏幕开着,工作上的事情很快就需要你,第一件事就不会是“啊,让我先锁住我的手机”,如果你不小心把手机打开了,你可能会暴露出你肮脏的秘密。让我指出,如果你在一个不信任你的同事的环境中工作,我会重新考虑这份工作。
设置>显示>屏幕超时
如果你有很多给你通知的应用程序,这是非常危险的。特别是如果你有一些垃圾邮件发送者(Facebook,Family Guy,甚至GMail,如果你收到很多邮件的话)。
中的烧伤:这种情况的风险也很高。现在,您甚至不再将其限制为“在网络上”,因此当您忘记关闭显式设置或收到通知时,它就会一直处于打开状态。
电池耗尽:如果你得到一个,屏幕将打开指定的时间,耗尽你的电池。它将会打开,因为有时你会忘记关闭它,或者只是得到一个通知。
Hotpocket:如果你在手机放在口袋里的时候收到通知,屏幕和狭小空间的照明会加热你的口袋,你甚至可能会被灼伤。
袖珍拨号:如果您的屏幕打开时,手机在您的口袋中,随着每一秒增加口袋拨号的风险。但现在这种情况不太可能发生了,因为手机应用程序通常隐藏得很好,但我的口袋喜欢经常更改日期或阅读电子邮件。
安全:想象你在公共场所,你的手机在桌子上,如果你转过身来和某人说话或休息一下,你的朋友很可能会滥用你的解锁屏幕。尤其是如果他们喝醉了。显然,较短的超时时间会降低这种风险。
使用唤醒锁
Gradle permission :你需要给你的应用添加一个可能不必要的android.permission.WAKE_LOCK权限(幸运的是,由于插件中的Manifest合并,添加起来应该很容易,因为只有调试版本)。
Coding:您还需要自己管理锁的释放,可能还需要为此创建一个服务。我想在这里指出的是,我还没有在Android中使用过这个功能。
无用的:它对保持屏幕不变也没有什么帮助,因为它只会让CPU保持清醒。参见documentation。
附加调试器时执行FLAG_KEEP_SCREEN_ON
如果你阅读了这篇文章的documentation,你会发现与你的问题非常接近。
Coding:我能想到的唯一缺点是你需要修改一些代码,但这非常简单(假设你有一个所有其他活动都可以扩展的BaseActivity ):
@Override protected void onResume() {
super.onResume();
if (BuildConfig.DEBUG) { // don't even consider it otherwise
if (Debug.isDebuggerConnected()) {
Log.d("SCREEN", "Keeping screen on for debugging, detach debugger and force an onResume to turn it off.");
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
} else {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Log.d("SCREEN", "Keeping screen on for debugging is now deactivated.");
}
}
}要使用它,你需要做的就是附加一个调试器,然后离开应用程序(主页/任务按钮或关闭屏幕),然后返回到它来触发onResume。
根据您通常调试的内容,在onResume之前调试活动生命周期时,可能值得将上述内容放到onCreate中,以便它能更早地注册,并希望能保持屏幕唤醒。
一般来说,我建议在尝试代码时使用Run而不是Debug,只有当你发现一些东西时才附加调试器:这将使你的应用程序更快,这个选项是最好的。
发布于 2014-12-29 06:37:24
在adb shell中尝试一下,尽管它似乎在某些设备上不起作用:
svc power stayon usb发布于 2017-04-12 16:56:55
在控制台上
while true; do adb shell input keyevent mouse ; sleep 1 ; donehttps://stackoverflow.com/questions/8840954
复制相似问题