看来nVidia Shield Android TV配备了Android 5.1.1,并且仅从12月开始提供了棉花糖更新。我假设Android 5.1.1是您设备中安装的版本。
查询系统服务
在设备上以无线模式启用adb。如果需要,请遵循官方指南或Izzy的答案以获取指示。
您可以从各种系统服务的转储中找到Android的状态-睡眠或唤醒。
服务:电源
adb shell dumpsys power
搜索字符串mWakefulness
和/或Display Power: state
。他们两个都会为您提供所需的状态。
例:
adb shell 'dumpsys power | grep -e "mWakefulness=" -e "Display Power"'
给我
mWakefulness=Asleep
Display Power: state=OFF
服务:窗口
adb shell dumpsys window
搜索字符串mAwake=true
和/或mScreenOnEarly=true
和/或mScreenOnFully=true
例:
adb shell 'dumpsys window | grep -e "mAwake=" -e "mScreenOnEarly" -e "mScreenOnFully"'
给我
mAwake=true
mScreenOnEarly=true mScreenOnFully=true
服务:显示
adb shell dumpsys display
搜索字符串mState=OFF
和/或mScreenState=OFF
。
例:
adb shell 'dumpsys display | grep -e "mState=" -e "mScreenState"'
给我
mState=OFF
mScreenState=OFF
使用自动化
如果先前方法中提到的系统服务均不适合您,请设置自动化应用程序,例如Tasker或MacroDroid或Automate。
现在,我们将使用自动化功能将Android的状态写入文件中,例如将Sleeping设置为睡眠模式并在唤醒时将其唤醒。
- 配置文件:事件→显示→显示关闭
- 任务:(操作):文件→写入文件→选择要写入的文本文件,键入Sleeping并取消选中Add Newline
- 配置文件:事件→显示→显示打开
- 任务:(操作):文件→写入文件→选择要写入的文本文件,键入唤醒并取消选中添加换行符
遗憾的是,Android并未附带该工具echo
或printf
实用程序,如果该设备已扎根,那么您可以安装busybox来安心。如果不是,请下载busybox 二进制文件,设置可执行权限,然后将其推送到/data/local/tmp
中adb push
。对于非root用户的设备,另一种方法是保留三个文件,一个用于状态,一个包含文本“睡眠”,最后一个包含文本“唤醒”。屏幕关闭/打开时,将第二个/第三个文件复制到第一个文件中。
MacriDroid还需要一个插件(例如安全设置)来执行命令。
- 触发:屏幕开/关→屏幕关
操作:安全设置→操作→运行命令:
- 命令:
echo Sleeping > FILE_PATH
- 命令名称:关闭屏幕
- 触发:屏幕开/关→屏幕开
操作:安全设置→操作→运行命令:
- 命令:
echo Awake > FILE_PATH
- 命令名称:关闭屏幕
对于非root用户的Android,echo
应替换为./data/local/tmp/busybox echo
。否则,请使用命令进行复制操作cp SOURCE DESTINATION
。
您的流程或多或少应该看起来像这张图片
(点击图片放大)
您需要创建两个流程,一个流程用于睡眠,另一个流程用于清醒。流中的第二个块名为“ 广播接收”,可以在“应用程序”下找到。第三个块名为“ 文件写入文本”,可以在“文件和存储”下找到。
您现在可以在无线模式下使用adb或使用SSH检查该文件的内容(在Android上需要SSH服务器;在所有接口上运行该服务器,而不必将其绑定到单个接口。)
还有另一种可能性,例如使自动化应用程序将文件上传到本地或远程服务器,以便您可以查询该服务器而不是Android以了解状态。