Android OS2.2曾经在Settings/Applications/Development下有一个选项,可以在USB调试期间禁用屏幕锁定.在将我的三星Galaxy S升级到OS2.3.3之后,这个选项消失了,在调试时保持解锁手机非常令人沮丧.
移动此选项还是有其他方法可以执行此操作?(我讨厌无缘无故地删除有用的选项!)
提前致谢...
TWi*_*Rob 43
有多种选择,其中许多具有可怕的(主观)副作用.我会列出我发现的内容以及我能想到的副作用.
我很懒,可能和其他许多人一样,而且我不想继续注意不必要的事情.这意味着"哦,我只是在我工作的时候打开它,然后在完成时关闭它"选项不可行.你会忘记它,你最终会遇到下面列出的任何副作用.
FLAG_KEEP_SCREEN_ON有一个Debug.isDebuggerConnected()警卫FTW!充电时保持清醒,屏幕超时和唤醒锁定是不可行的选项,如果您只是想调试.
从API 1和wifi调试开始,这个解决方案还有一个优势!
烧伤:任何人都应该有一个巨大的红旗.它说"充电时"不是"调试时".这意味着即使您的手机已插入主电源,它也会继续运行.如果你有一个烧焦的AMOLED屏幕(例如Galaxy S系列),这尤其糟糕.我有几个星期的选项,现在我有一个永久的肖像状态栏......
通知:即使您使用低亮度并且每次放下手机时都不要忘记关闭屏幕,如果您只是获得一个简单的通知,可以将屏幕关闭,这会导致在插入时大部分时间保持屏幕状态在.
安全性:如果您只是在充电时让屏幕保持开启状态,并且您需要快速处理工作中的某些事情,那么第一件事就不会是"啊,让我先锁定手机",如果您不小心离开,可能会泄露您的脏话它在.让我注意一下,如果你在一个你不相信你的同事的环境中工作,我会重新考虑这份工作.
如果您有很多应用程序可以提供通知,那么这是非常危险的.特别是如果你有一些垃圾邮件发送者(Facebook,Family Guy甚至GMail,如果你收到很多邮件).
烧伤:风险也很高.现在你甚至不把它限制在"在线上",这样只要你忘记明确地说明它或得到通知,它就会保持不变.
电池耗尽:如果你拿到电池,屏幕将在指定的时间内打开,耗尽电池电量.它会继续,因为有时你会忘记关闭它,或者只是收到通知.
Hotpocket:如果您在手机放入口袋时收到通知,屏幕和密闭空间的照明会加热您的口袋,甚至可能会被烫伤.
袖珍拨号:如果您的屏幕在手机放在口袋中时打开,则口袋拨盘的风险会随着时间的推移而增加.现在这种情况不太可能,因为手机应用程序通常隐藏得很好,但我的口袋喜欢经常更改日期或阅读我的电子邮件.
安全性:想象一下你在公共场所而且你的手机在桌子上,如果你转过身足够长的时间与某人交谈或者快速休息,你的朋友很可能会滥用你未锁定的屏幕.特别是如果他们醉酒了.显然,更短的超时会降低这种风险.
权限:您需要为android.permission.WAKE_LOCK您的应用添加一个可能不必要的权限(幸运的是,由于Gradle插件中的Manifest Merger,很容易只为调试变体添加).
编码:您还需要自己管理释放锁,并且可能需要为此创建一个服务.我想在此处注意,我还没有在Android中使用此功能.
无用:它也无助于保持屏幕开启,因为它只会使CPU保持清醒状态.见文档.
FLAG_KEEP_SCREEN_ON 连接调试器时如果你阅读了这篇文章的文档,你会发现你的问题非常接近.
编码:唯一的缺点我可以想到这里是你需要修改一些代码,但它非常简单(假设你有一个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.");
}
}
}
Run Code Online (Sandbox Code Playgroud)
要使用它,您需要做的就是连接调试器,然后离开应用程序(主页/任务按钮或关闭屏幕),然后返回到它以触发onResume.
根据您通常调试的内容,可能需要将上述内容放入其中onCreate以便更早注册,并希望在调试活动生命周期之前保持屏幕清醒onResume.
一般来说,我建议使用Run而不是Debug在尝试代码时使用,只有在找到某些内容时才附加调试器:这将使您的应用程序速度提高十倍,并且此选项最佳.
小智 25
在adb shell中尝试这个,虽然它似乎不适用于某些设备:
svc power stayon usb
Run Code Online (Sandbox Code Playgroud)
Pau*_*rat 16
我有Android版本2.3.6及以下settings- > applications- > development有一个选项可以保持清醒(即你的屏幕永远不会睡觉),当它插入充电.
小智 16
在控制台上
while true; do adb shell input keyevent mouse ; sleep 1 ; done
Run Code Online (Sandbox Code Playgroud)
Jorge Cevallos是对的.
对于Android 4及更高版本:
玩得开心.
告诉 PowerManager 保持屏幕打开(它仍然会变暗):
adb shell settings put global stay_on_while_plugged_in 3
Run Code Online (Sandbox Code Playgroud)
该值3是以下两种类型的“或”运算:
BatteryManager#BATTERY_PLUGGED_AC(等于1)和BatteryManager#BATTERY_PLUGGED_USB(等于2)。
用于adb shell dumpsys power | grep mStayOnWhilePluggedInSetting查看当前值。
要恢复正常行为,请将值设置为零,如下所示:
adb shell settings put global stay_on_while_plugged_in 0
Run Code Online (Sandbox Code Playgroud)
已验证可在 Android 4.4 至 11.0 上运行。
Mar*_*ins -1
您可以将屏幕超时设置为 30 分钟或将其关闭。此选项位于:设置/显示/屏幕超时
希望能帮助到你。
| 归档时间: |
|
| 查看次数: |
38582 次 |
| 最近记录: |