【问题标题】:How to (auto) turn off a (SONY) android TV on no signal如何(自动)在无信号时关闭(SONY)安卓电视
【发布时间】:2022-06-14 19:52:37
【问题描述】:

我有一台非常烦人的 SONY 安卓电视。当没有通过 HDMI 的信号时,设备只是不想关闭。我还连接了一台迷你电脑,在大多数情况下,电视只是用作显示器。现在,当 PC 进入睡眠状态时,电视会保持屏幕亮起并显示消息 - 没有信号...
(是的,我知道我应该再买一台电视,但这不是一个选择)。

我决定采取一些措施,至少在电脑进入睡眠状态时关闭电视。
我的第一个想法是采用 DDC/CI 方式,但电视没有启用它的设置,并且对实际命令没有反应。
因此,由于它是一台安卓电视,我想到了通过 WiFi 通过 adb 连接并发送关机命令: adb shell input keyevent KEYCODE_POWER
从命令行手动尝试 - 到目前为止一切顺利,电视接受命令并关闭。

但更难的部分来了,在 Windows 10 上,我(仅)能够通过以下方式检测用户存在: User32.dll and GetLastInputInfo()
但这还不够,因为我可能会观看视频(vlc、chrome 等)。在这种情况下,没有用户输入,但系统会被视频播放器保持唤醒。所以我需要知道什么时候有什么东西阻止了 Windows 进入睡眠状态。

我搜索并找到了:

  1. 有些人想知道作为硬件的电视是打开还是关闭 - 我不需要这个!
  2. 查看监视器是否以 Windows 通过Win32_DesktopMonitorManagementObject 发送信号的方式打开/关闭,但访问属性字段会引发异常。我需要访问result[n].Properties["Availability"]
  3. 有人建议挂接到系统电源更改通知。
    在我的情况下,这不是一个好主意,因为当我的应用程序从操作系统接收到“进入睡眠”事件时,只有一点时间可以采取行动,而且我担心 adb 不会那么快地实际发送命令(连接、仔细检查、关闭)。
  4. 有人建议挂接到监控电源变化通知。
    这实际上可能是一个好主意,但其他一些人也警告说这些通知不是 100% 可靠的。 (我暂时没有尝试过,但如果其他试验失败,可能会退回到这个。)

但后来我遇到了这个:
https://docs.microsoft.com/en-us/windows-hardware/design/device-experiences/display--sleep--and-hibernate-idle-timers
这表明确实存在“关闭显示计时器”。尽管我找不到任何如何访问它的示例。我也了解到,如果你真的想让 Windows 防止睡眠,你需要使用SetThreadExecutionState。好的,但是如何阅读这个?我实际上试图列出所有进程并搜索这些标志,但要么我找不到它们,要么它们根本不存在。
然后我遇到了一个命令行命令:powercfg /requests,它为我提供了我需要的信息,但这意味着字符串解析,更重要的是要在我想避免的管理员权限下运行应用程序。

所以我的问题:

  1. 有谁知道是否以及如何阅读“关闭显示计时器”(最好在 c# 中)? (我假设它被 SetThreadExecutionState 重置)
  2. 有谁知道如何以更友好的代码方式获得与 powercfg /requests 相同的信息,最好不需要管理员权限?
  3. 碰巧有人知道这是否可以纯粹在电视上解决 - 也许通过一个 android 应用程序?

如果你能通读,非常感谢,如果你能提供一些线索,那就更感谢了。

更新:
我发现 2) 可能是不可能的:Possible to find all Windows processes preventing automatic sleep, w/o admin rights?

【问题讨论】:

    标签: c# windows android-tv


    【解决方案1】:

    我意识到提到的电视(kd-49xf7596)也可以通过网络进行控制(所谓的IP控制)。
    https://pro-bravia.sony.net/develop/integrate/rest-api/spec/index.html
    阅读文档。我想说这个 API 为我提供了我需要的所有信息:

    1. 读/写电源设置getPowerStatus (v1.0)setPowerStatus (v1.0)
    2. 如果电视设置为外部 HDMI,则读取 - getPlayingContentInfo (v1.0)
    3. 读取输入是否有活动信号 - getCurrentExternalInputsStatus (v1.1)

    更新:如果有人感兴趣,它现在是一个工作原型:
    https://github.com/tomix89/sony-stopper

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-31
      • 1970-01-01
      • 2011-10-04
      • 1970-01-01
      • 2015-10-25
      • 2015-05-12
      相关资源
      最近更新 更多