:::

用Home Assistant操控Android TV / Use Home Assistant to Control Android TV with ADB Commands

2023-0328-152335.png

Home Assistant內建了可以透過ADB操控Android TV的做法,這也可以用來操控Chromecast with Google TV。這邊就記錄一下我常用的ADB指令。


ADB指令 / ADB commands

2023-0328-144413.png

Home Assistant要執行ADB操控的地方在「執行服務」裡面。先選擇「Android TV: ADB command」,再選擇要操控的裝置,然後就可以在下面Command欄位設定指令。

常用的指令有:

回到首頁 (感謝Ken Fehling):

am start -a android.intent.action.MAIN -c android.intent.category.HOME

開啟指定的應用程式及其activity (這個例子是電視版的巴哈姆特動畫瘋):

adb shell am start -n tw.com.gamer.android.animad/tw.com.gamer.android.animad.tv.ui.TVAnimadActivity

https://www.reddit.com/r/homeassistant/comments/kidma5/comment/ghlqdp4/?utm_source=share&utm_medium=web2x&context=3 

以下是開啟YouTube Kid的做法:

adb shell am start -a android.intent.action.VIEW -d -n com.google.android.youtube.tvkids/com.google.android.apps.youtube.tvkids.activity.MainActivity

https://stackoverflow.com/a/13212310 

如果想要查詢現在畫面的應用程式名字以及activity名字,請用其他電腦連上Android TV的ADB,然後執行以下指令來查詢:

adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'

https://stackoverflow.com/a/3512723 

開啟網頁:

adb shell am start -a android.intent.action.VIEW -d https://blog.pulipuli.info

雖然可以顯示,但要操作的話就比較麻煩了。

關閉微光模式

https://www.ptt.cc/bbs/Google/M.1642944467.A.C7F.html 

如果Android TV變成待機的微光模式,那上面的ADB指令就不會運作。根據myelf541的建議,可以在開發者設定裡面設定永不休眠。目前運作起來還算順利。

開啟YouTube影片 / Play YouTube Video

https://www.home-assistant.io/integrations/cast/ 

2023-0328-151434.png

如果要讓Android TV開啟YouTube影片的話,似乎不能單純用ADB操控。另一個思路是用Android TV內建的Chromecast功能,用投放的方式開啟YouTube影片。

以下是Home Assistant裡面設定開啟公共電視直播頻道 (此影片的ID是4Uc00FPs27M,可以從網址得知)的做法:

  • Action: Call a Service
  • service: media_extractor.play_media
  • 選擇設備Google TV
  • Content ID: {"app_name": "youtube", "media_id": "4Uc00FPs27M"}
  • Content type: cast

這樣就可以了。


最後就讓我們來問個問題:你家有智慧電視嗎?你通常用智慧電視拿來做什麼呢?

歡迎在下面分享你的看法喔~

總共3 則留言 ( 我要發問 , 隱藏留言 顯示留言 )

  1. 如果要用adb開啟網頁的話,請先為Android TV安裝瀏覽器。
    裝完之後就能用adb執行開啟網頁的指令了。

    回覆刪除
    回覆
    1. 請問adb也可以用來開啟電視嗎?目前使用小米電視p1 透過ha本身偵測到的android tv 好像只能用來關機,不知道有無辦法透過自動化來設定到家自動開機且打開youtube

      刪除
    2. To 下水道鱷魚,

      都關機了,要怎麼讓adb連線...

      不過其實這個問題的思路比你想象中的還要複雜。

      我們平常認為的關機是指關掉電源。但對Android TV來說,它可以分成三種狀態:
      1. 關閉螢幕
      2. 待機
      3. 關閉電源

      邏輯上跟你的手機差不多。
      在Android TV播放任何影片與聲音的時候,過一段時間它會先關閉螢幕。此時任何開啟的APP都還是會繼續運作。進行任何操作的時候,螢幕會開啟。
      再過段時間它會進入待機。此時APP會停止。作普通的操作不會讓Android TV起床,但可以使用adb的「喚醒」指令叫他起來,然後就能繼續操作。如果是進入微光模式,那adb就不能運作。可以關閉微光模式來避開這個問題。
      待機一段時間,大概三天左右,他會進入關機狀態。此時adb無法連線,但可以用遙控器將它開機。

      通常一般人很頻繁使用Android TV的情況下,Android TV不會真的「關機」,而是只有「待機」。
      在「待機」的情況下,你必須先用adb喚醒,然後再用chromecast投放YouTube即可。操作上沒有什麼特別要注意的地方。

      HA可以偵測到Android TV,但能做的操作非常有限。
      開啟adb的步驟比較多,但設定一次就可以省下很多功夫,很值得學習。

      加油。

      刪除