2011-09-28 66 views
8

如何打開屏幕?打開設備上的屏幕

我想是這樣的

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

它真的應該工作,我發送廣播意圖它是由系統接收,但屏幕上不

轉,我不明白是什麼問題是否有可能通過代碼打開設備的屏幕?我的意思是軟件?因爲它似乎只是通過硬件按鈕按下來完成屏幕的打開。 。 。至少我得到了那種感覺,我錯了嗎?

+1

這看起來像這個複製品,如果我沒有弄錯:http://stackoverflow.com/questions/2891337/turning-on-screen-programmatically – Sephy

+0

僅供參考:如果您使用'adb shell am start -n packagename/activityname'通過adb啓動應用程序,屏幕將自動打開,如果它目前關閉(在Android 5.0上使用Unity3d應用程序進行測試) –

回答

4

我可能是錯關於這一點,但...

你不應該認爲廣播的東西來發送到把事情做好,而是將它們看作被發送當事情的東西完成

我覺得系統發送'android.intent.action.SCREEN_ON'當屏幕進行,但發送'android.intent.action.SCREEN_ON'並不一定會讓屏幕繼續。

我希望這是有道理的。

要知道答案,你可以找到它...

9

U可以開啓/關閉如果妳不喜歡:

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

這對一些android版本的我工作;)
(注意:這個w生病打開屏幕和關閉,取決於實際的屏幕狀態)

檢測屏幕ü可以使用下面的方法的當前狀態:
的Android < 5.XX
adb shell dumpsys input_method
在輸出中搜索mScreenOn=true/false

的Android> = 5.XX
adb shell dumpsys display
在輸出搜索mScreenState=ON/OFF

在我的腳本我用這個\s{0,}mScreen(State|On)=(?<STATE>(true|false|on|off))\s{0,}(編譯| IGNORECASE | ExplicitCapture)的正則表達式爲兩路輸出來檢測當前狀態。

問候, k1ll3r8e

1

的命令來切換屏幕的開/關是:優先

adb shell input keyevent 26 

該冷凝命令,因爲它可以讓你在腳本中使用它。

乾杯!

+1

切換ist不等於「打開」,打開時必須考慮到如果顯示器已經打開,否則可能會關閉。 – David

18
adb shell input keyevent KEYCODE_POWER 

Works以打開屏幕(當顯示器關閉) 工作以關閉屏幕(當顯示開/甦醒)

+0

嗨,與關閉/打開,它適用於一個設備(機器人kitkat),但不是在另一個(穿marshmellow) – ransh

+1

對我來說棉花糖(6.0)和軟糖豆(4.2.2)。 –

5

對於Android 5.0及以上:

adb shell input keyevent KEYCODE_WAKEUP 

adb shell input keyevent 224 

Reference

喚醒設備。行爲有點像KEYCODE_POWER,但是如果設備已經醒來,它不起作用。


注:KEYCODE_POWER在API級別1,而KEYCODE_WAKEUP API等級20加!