如何在USB调试期间保持屏幕解锁?

Bar*_*man 59 android

Android OS2.2曾经在Settings/Applications/Development下有一个选项,可以在USB调试期间禁用屏幕锁定.在将我的三星Galaxy S升级到OS2.3.3之后,这个选项消失了,在调试时保持解锁手机非常令人沮丧.

移动此选项还是有其他方法可以执行此操作?(我讨厌无缘无故地删除有用的选项!)

提前致谢...

TWi*_*Rob 43

有多种选择,其中许多具有可怕的(主观)副作用.我会列出我发现的内容以及我能想到的副作用.

我很懒,可能和其他许多人一样,而且我不想继续注意不必要的事情.这意味着"哦,我只是在我工作的时候打开它,然后在完成时关闭它"选项不可行.你忘记它,你最终遇到下面列出的任何副作用.

TL; DR

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)

  • svc power stayon false关闭 (4认同)

Pau*_*rat 16

我有Android版本2.3.6及以下settings- > applications- > development有一个选项可以保持清醒(即你的屏幕永远不会睡觉),当它插入充电.

  • 我在OS2.2中有这个选项但是当我升级到最新的三星版本2.3.3时它就消失了. (2认同)
  • 这仍然存在,被称为"保持清醒".适合我,但手机仍然部分暗淡 - 只是没有锁定. (2认同)

小智 16

在控制台上

 while true; do adb shell input keyevent mouse ; sleep 1 ; done
Run Code Online (Sandbox Code Playgroud)


Bur*_*RAS 9

Jorge Cevallos是对的.

对于Android 4及更高版本:

  1. 转到设置>关于手机
  2. 在"Build number"上触摸几次(约10次).
  3. 然后返回Sttings菜单,你会发现"开发者选项"
  4. 在"开发者选项"下,您将看到"保持清醒选项".

玩得开心.

  • 对于每天使用手机的人来说,这个选项是最烦人的**!你真的不想让自己的手机一直保持清醒,只有当你不得不这样做时.为什么?主要是因为手机正在慢慢充电,USB和MUCH在屏幕打开时变慢.AFAIK与三星手机一样.第二件事是,该死的选项会将充电器识别为USB连接,并且会像在充电器上那样将手机唤醒USB.烦人!由于这个选项,我的Galaxy S6不断丢失电池.关闭它使得无法调试.并且......你发现自己一直打开/关闭它 (2认同)

sat*_*ine 6

告诉 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 上运行。


Arp*_*pta 5

我已经为此创建了一个应用程序。您可以在Google播放器“保持调试的唤醒状态”中进行搜索。只有启用了ADB调试后,它才能保持手机解锁/屏幕开启状态。它不仅限于USB,还可以通过Wi-Fi运行。

  • 但是这个答案有什么问题呢?这不是垃圾邮件。它很好地解决了这个问题。仅仅因为我是此开发者,所以删除/下载不足够的理由。 (3认同)

Mar*_*ins -1

您可以将屏幕超时设置为 30 分钟或将其关闭。此选项位于:设置/显示/屏幕超时

希望能帮助到你。

  • 我的手机有最长 10 分钟的超时时间,并且没有关闭它的选项。:( (4认同)