【问题标题】:Chromecast Android TV turn external screen ONChromecast Android TV 打开外部屏幕
【发布时间】:2021-09-17 18:47:49
【问题描述】:

我正在为 Google Chromecast 开发一个屏幕保存应用程序,它应该连接到外部屏幕。我正在使用代码在用户定义的特定时间唤醒屏幕。它在安卓电视模拟器上运行良好。

    val power = applicationContext?.getSystemService(POWER_SERVICE) as PowerManager
    val lock = power.newWakeLock(
        PowerManager.FULL_WAKE_LOCK or PowerManager.ACQUIRE_CAUSES_WAKEUP
                or PowerManager.ON_AFTER_RELEASE, applicationContext?.packageName + ":wakeup!"
    )

    lock.acquire(0)
    lock.release()

但我在将真实设备连接到外部电视显示器时遇到问题。闲置 15 分钟后,电视显示屏进入睡眠状态,Google Chromecast 无法唤醒电视显示屏。

有什么方法可以唤醒显示器?

Google Home 应用通过语音命令唤醒显示屏。

也许可以访问 google home API?

【问题讨论】:

  • 由于电视显示的开/关是由 HDMI-CEC 控制的,检查一下:source.android.com/devices/tvsource.android.com/devices/tv/hdmi-cec 可能会很有用,但我对控制是否不是“特权进程”表示怀疑。跨度>
  • @MorrisonChang 我检查了 HdmiControlService,它是一个私有 API,我无权访问它。我认为如果我可以访问它,它可以解决我的问题

标签: android chromecast android-tv


【解决方案1】:

我已经对此进行了研究,这是我的答案

  • 执行此操作以了解设备是否支持唤醒锁定级别power.isWakeLockLevelSupported(PowerManager.FULL_WAKE_LOCK)
  • 我知道您的目标是保持屏幕打开,强烈考虑改用WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;这就是您在 Activity 的 onCreate() 方法中设置它的方式:getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
  • 这里是官方文档:PowerManager

【讨论】:

  • 目标是在屏幕进入睡眠状态后打开屏幕。我在布局中使用 WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
  • 好的,谢谢你的精确。只需要更多,您是将 PowerManager 代码放在前台服务还是活动中?如果它处于活动状态,则电视未唤醒的原因可能是因为 Android TV 操作系统正在关闭您的应用。
  • 应用程序正在运行。 Chromecast 应用程序通过 HDMI 连接到电视显示器。我需要在电视进入睡眠状态后打开它
猜你喜欢
  • 2016-01-10
  • 2017-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-25
  • 1970-01-01
  • 2017-04-07
  • 2021-03-01
相关资源
最近更新 更多