打开设备上的屏幕

时间:2011-09-28 14:48:20

标签: android android-intent screen broadcast

如何开启场景?

我试过这样的事情

adb -d  shell am broadcast -a android.intent.action.SCREEN_ON

它确实应该可以工作,我发送广播意图它被系统接收,但是屏幕没有打开

我不明白是什么问题,是否可以通过代码转动设备的屏幕?我的意思是软件?因为似乎只需按下硬件按钮即可完成屏幕的打开。 。 。至少我得到了那个感觉,我错了吗?

5 个答案:

答案 0 :(得分:25)

adb shell input keyevent KEYCODE_POWER

用于打开屏幕(显示屏关闭时) 用于关闭屏幕(显示开启/唤醒时)

答案 1 :(得分:12)

对于Android 5.0及更高版本:

adb shell input keyevent KEYCODE_WAKEUP

adb shell input keyevent 224

Reference

  

唤醒设备。行为有点像KEYCODE_POWER,但如果设备已经清醒则无效。

注意:在API级别1中添加了KEYCODE_POWER,而在API级别20中添加了KEYCODE_WAKEUP

答案 2 :(得分:11)

如果您愿意,可以打开/关闭它:

adb shell
@shell: input keyevent 26
@shell: (enter or via hidden command empty line)
@shell: exit

这对我的某些Android版本有用;)(注意:这会打开和关闭屏幕,取决于实际的屏幕状态)

要检测屏幕的当前状态,您可以使用以下方式:
Android< 5.x.x
adb shell dumpsys input_method
在搜索mScreenOn=true/false的输出中

Android> = 5.x.x
adb shell dumpsys display
在输出中搜索mScreenState=ON/OFF

在我的脚本中,我使用这个\s{0,}mScreen(State|On)=(?<STATE>(true|false|on|off))\s{0,}(Compiled | IgnoreCase | ExplicitCapture)正则表达式来检测当前状态。

编辑(16.03.2018):

还有另一种检测屏幕状态的方法,它可以在Android 3.0之后运行。 dumpsys window policy命令将为我们提供所需的一切。 - 在mScreenOn(Fully)?=(?<STATE>(true|false))的输出搜索中。 还有其他有用的信息,如:

  • mUnrestrictedScreen(值类似于:(0,0) 768x1280
  • mRestrictedScreen(值类似于:(0,0) 768x1184

此致

k1ll3r8e

答案 3 :(得分:5)

我可能错了,但是......

您不应该将广播视为发送以完成任务的内容,而是将其视为在事情完成后发送的内容

我认为系统会在屏幕显示时发送'android.intent.action.SCREEN_ON',但发送'android.intent.action.SCREEN_ON'并不一定会让屏幕继续运行。

我希望这是有道理的。

对于答案,你可以在...中找到它。

答案 4 :(得分:1)

打开/关闭屏幕的命令是:

adb shell input keyevent 26

这个压缩命令是首选,因为它允许您在脚本中使用它。

干杯!