## Latest Update 2021-03-06 : New image showing the new "Services" in Home Assistant and got some tips from the comments below.
**Credits and thanks: Home Assistant Forum users & Github users: @ocso, @wiphye, @teachingbirds, @tboyce1, @simbesh, @JeffLIrion @ff12 @rebmemer @siaox @DiederikvandenB @Thebuz @clapbr @Finsterclown**
___
## Start apps on your android device (in the examples below, my Nvidia Shield TV) from Home Assistant
![alt text](https://img.mcurl.eu/images/2021/03/06/service.jpg "Insert code on service tab")

**Starts Youtube App**
```
entity_id: media_player.shield
command: >-
  am start -a android.intent.action.VIEW -n
  com.google.android.youtube.tv/com.google.android.apps.youtube.tv.activity.ShellActivity
```
**Starts Kodi**
```
entity_id: media_player.shield
command: >-
  am start -a android.intent.action.VIEW -n
  org.xbmc.kodi/.Splash
```
**Starts Twitch**
```
entity_id: media_player.shield
command: >-
  am start -a android.intent.action.VIEW -n
  tv.twitch.android.app/tv.twitch.android.apps.TwitchActivity
```
**Starts Netflix (Shows profiles if its the first start.)**
```

entity_id: media_player.shield
command: >-
  am start -a android.intent.action.VIEW -n
  android.intent.action.VIEW -d -n com.netflix.ninja/.MainActivity
```
**Starts TV4 Play (swedish streaming)**
```
entity_id: media_player.shield
command: >-
  am start -a android.intent.action.VIEW -n
  se.tv4.tv4playtab/se.tv4.tv4play.startup.SplashActivity
```
**Starts SVT Play (swedish streaming)**
```
entity_id: media_player.shield
command: >-
  am start -a android.intent.action.VIEW -n
  se.svt.android.svtplay/se.svt.svtplay.tv.ui.StartupActivity
```
**Starts C More (swedish streaming)**
```
entity_id: media_player.shield
command: >-
  am start -a android.intent.action.VIEW -n
  se.cmore.bonnier/.androidtv.splash.TvConfigurationActivity
```
**Starts ViaPlay (swedish streaming)**
```
entity_id: media_player.shield
command: >-
  am start -a android.intent.action.VIEW -n
  com.viaplay.android/.features.home.HomeActivity
```
___
## Starts specific Twitch stream (If stream is live)
```
entity_id: media_player.shield
command: >-
  am start -a android.intent.action.VIEW -d
  twitch://stream/frenck
```
```
entity_id: media_player.shield
command: >-
  am start -a android.intent.action.VIEW -d
  twitch://stream/drzzs
```
___
## KILL apps on your Shield from Home Assistant

**Kills YOUTUBE App**
```
entity_id: media_player.shield
command: >-
  am force-stop
  com.google.android.youtube.tv
```
**Kills KODI App**
```
entity_id: media_player.shield
command: >-
  am force-stop
  org.xbmc.kodi
```
**Kills TWITCH App**
```
entity_id: media_player.shield
command: >-
  am force-stop
  tv.twitch.android.app
```
**Kills NETFLIX App**
```
entity_id: media_player.shield
command: >-
  am force-stop
  com.netflix.ninja
```
**Kills SVT PLAY App**
```
entity_id: media_player.shield
command: >-
  am force-stop
  se.svt.android.svtplay
```
**Kills TV4 PLAY App**
```
entity_id: media_player.shield
command: >-
  am force-stop
  se.tv4.tv4playtab
```
**Kills C MORE App**
```
entity_id: media_player.shield
command: >-
  am force-stop
  se.cmore.bonnier
```
___
## Install apps on your Android Device from Home Assistant
Not tested my self, but tips from *https://gist.github.com/JeffLIrion*
```
entity_id: media_player.fire_tv_living_room
command: >-
  pm install -r /sdcard/Download/something.apk
```
___
## Shield navigation and controlling
```
RIGHT   {"entity_id" :"media_player.shield", "command": "RIGHT"}
LEFT    {"entity_id" :"media_player.shield", "command": "LEFT"}
UP      {"entity_id" :"media_player.shield", "command": "UP"}
DOWN    {"entity_id" :"media_player.shield", "command": "DOWN"}
WAKE    {"entity_id" :"media_player.shield", "command": "MENU"} # use to be the "WAKEUP" command
SLEEP   {"entity_id" :"media_player.shield", "command": "SLEEP"}
ENTER   {"entity_id" :"media_player.shield", "command": "ENTER"}
BACK    {"entity_id" :"media_player.shield", "command": "BACK"}
HOME    {"entity_id" :"media_player.shield", "command": "HOME"}
PLAY    {"entity_id" :"media_player.shield", "command": "input keyevent 126"}
PAUSE   {"entity_id" :"media_player.shield", "command": "input keyevent 127"}
STOP    {"entity_id" :"media_player.shield", "command": "input keyevent 86"}
```
___
## Intents i'm not using, but someone could have interest in.
(Not tested by me, but tested by people in the Home Assistant Forum.)

**Starts Hulu App**
```
entity_id: media_player.shield
command: >-
  am start -a android.intent.action.VIEW -n
  com.hulu.livingroomplus/.MainActivity
```
**Starts Live Channels App**
```
entity_id: media_player.shield
command: >-
  am start -a android.intent.action.VIEW -n
  com.google.android.tv/com.android.tv.MainActivity
```
**Starts Amazon App**
```
entity_id: media_player.shield
command: >-
  am start -a android.intent.action.VIEW -n
  com.amazon.amazonvideo.livingroom/com.amazon.ignition.IgnitionActivity
```
**Starts SPMC App**
```
entity_id: media_player.shield
command: >-
  am start -a android.intent.action.VIEW -n
  com.semperpax.spmc17/.Splash
```
**Starts Haystack App**
```
entity_id: media_player.shield
command: >-
  am start -a android.intent.action.VIEW -n
  com.haystack.android/.tv.ui.LoadingActivity
```
**Starts PBS App**
```
entity_id: media_player.shield
command: >-
  am start -a android.intent.action.VIEW -n
  com.pbs.video/.ui.main.activities.StartupActivity
```
**Starts Pluto TV App**
```
entity_id: media_player.shield
command: >-
  am start -a android.intent.action.VIEW -n
  tv.pluto.android/.leanback.controller.LeanbackSplashOnboardActivity
```
**Starts Spotify App**
```
entity_id: media_player.shield
command: >-
  am start -a android.intent.action.VIEW -n
  com.spotify.tv.android/.SpotifyTVActivity
```
**Starts HBO Go App**
```
entity_id: media_player.shield
command: >-
  am start -a android.intent.action.VIEW -n
  eu.hbogo.androidtv.production/eu.hbogo.androidtv.MainActivity
```
**Starts Plex App**
```
entity_id: media_player.shield
command: >-
  am start -a android.intent.action.VIEW -n
  com.plexapp.android/com.plexapp.plex.activities.SplashActivity
```
**Starts Perfect Player App**
```
entity_id: media_player.shield
command: >-
  am start -a android.intent.action.VIEW -n
  com.niklabs.pp/com.niklabs.perfectplayer.MainActivity
```
**Starts S0undTV (twtich) App**
```
entity_id: media_player.shield
command: >-
  am start -a android.intent.action.VIEW -n
  com.s0und.s0undtv/com.s0und.s0undtv.activities.MainActivity
```
**Starts SmartYoutubeTV App**
```
entity_id: media_player.shield
command: >-
  am start -a android.intent.action.VIEW -n
  com.liskovsoft.videomanager/com.liskovsoft.smartyoutubetv.bootstrap.BootstrapActivity
```
**Starts Steam Link App**
```
entity_id: media_player.shield
command: >-
  am start -a android.intent.action.VIEW -n
  com.valvesoftware.steamlink/com.valvesoftware.steamlink.SteamShellActivity
```
**Starts Ziggo TV App**
```
entity_id: media_player.shield
command: >-
  am start -a android.intent.action.VIEW -n
  com.ziggo.tv/com.lgi.horizongo.core.activity.splash.SplashActivity
```
**Starts Tivimate/ImPlayer App**
```
entity_id: media_player.shield
command: >-
  am start -a android.intent.action.VIEW -n
  ar.tvplayer.tv/.ui.MainActivity
```
___
## Show local video with KODI 
```
entity_id: media_player.shield
command: >-
  am start -a android.intent.action.VIEW -d
  file:///storage/emulated/0/Android/data/files/sunrise.mp4 -n
  org.xbmc.kodi/.Splash
```
##  RTSP stream with VLC
```
entity_id: media_player.shield
command: >-
  am start -a android.intent.action.VIEW -d
  rtsp://user:password@192.168.1.X:XXX/Streaming/Channels/301 -n
  org.videolan.vlc/.gui.video.VideoPlayerActivity
```
___
## Intents to change the HDMI input on **TVs with Android TV built in** (@Thebuz)

HW1-9 Represent various inputs, 1-4 maybe for composite etc. depending on the model of TV

**HDMI 1**
```
adb shell am start -a android.intent.action.VIEW -d content://android.media.tv/passthrough/com.mediatek.tvinput%2F.hdmi.HDMIInputService%2FHW5 -n org.droidtv.playtv/.PlayTvActivity -f 0x10000000
```
**HDMI 2**
```
adb shell am start -a android.intent.action.VIEW -d content://android.media.tv/passthrough/com.mediatek.tvinput%2F.hdmi.HDMIInputService%2FHW6 -n org.droidtv.playtv/.PlayTvActivity -f 0x10000000
```
**HDMI 3**
```
adb shell am start -a android.intent.action.VIEW -d content://android.media.tv/passthrough/com.mediatek.tvinput%2F.hdmi.HDMIInputService%2FHW7 -n org.droidtv.playtv/.PlayTvActivity -f 0x10000000
```
**HDMI 4**
```
adb shell am start -a android.intent.action.VIEW -d content://android.media.tv/passthrough/com.mediatek.tvinput%2F.hdmi.HDMIInputService%2FHW8 -n org.droidtv.playtv/.PlayTvActivity -f 0x10000000
```
___
## ADB commands to find out the intent from diffrent apps:
(what is the command to use to start the app?)

I got a lot of help from people in this thread: https://community.home-assistant.io/t/android-tv-hdmi/234411/28

**Use SSH & Web Terminal add-on in Home Assistant with "protection mode" off**

![alt text](https://i.imgur.com/RkBdFJQ.jpg "Use SSH & Web Terminal add-on with protection mode off")

**First access the adb container:**
```
docker exec -it addon_a0d7b954_adb /bin/bash
```
**And the run the command:**
```
adb shell pm dump $package | grep -A 1 "MAIN" | grep $package | awk '{print $2}' | grep $package
```
(Replace $package with the app ID.)

**Some pre filled commands for some popular apps**
```
adb shell pm dump org.xbmc.kodi | grep -A 1 "MAIN" | grep org.xbmc.kodi | awk '{print $2}' | grep org.xbmc.kodi

adb shell pm dump tv.twitch.android.app | grep -A 1 "MAIN" | grep tv.twitch.android.app | awk '{print $2}' | grep tv.twitch.android.app

adb shell pm dump se.tv4.tv4playtab | grep -A 1 "MAIN" | grep se.tv4.tv4playtab | awk '{print $2}' | grep se.tv4.tv4playtab

adb shell pm dump se.svt.android.svtplay | grep -A 1 "MAIN" | grep se.svt.android.svtplay | awk '{print $2}' | grep se.svt.android.svtplay

adb shell pm dump com.google.android.youtube.tv | grep -A 1 "MAIN" | grep com.google.android.youtube.tv | awk '{print $2}' | grep com.google.android.youtube.tv

adb shell pm dump com.netflix.ninja | grep -A 1 "MAIN" | grep com.netflix.ninja | awk '{print $2}' | grep com.netflix.ninja

adb shell pm dump se.cmore.bonnier | grep -A 1 "MAIN" | grep se.cmore.bonnier | awk '{print $2}' | grep se.cmore.bonnier

adb shell pm dump com.viaplay.android | grep -A 1 "MAIN" | grep com.viaplay.android | awk '{print $2}' | grep com.viaplay.android

```
___
## Tested @tboyce1 command on my Shield and this is what i came up with:
(command to list some of the intents thats running on your device)

Source: https://community.home-assistant.io/t/community-hass-io-add-on-adb-android-debug-bridge/96375/23

**Use SSH & Web Terminal add-on in Home Assistant with "protection mode" off**

![alt text](https://i.imgur.com/RkBdFJQ.jpg "Use SSH & Web Terminal add-on with protection mode off")

**First access the adb container:**
```
docker exec -it addon_a0d7b954_adb /bin/bash
```
**And the run the command:**
```
adb shell
```
```
pm list packages | sed -e "s/package://" | while read x; do cmd package resolve-activity --brief $x | tail -n 1 | grep -v "No activity found"; done
```
And got this:

- de.blinkt.openvpn/.activities.MainActivity
- com.plexapp.android/com.plexapp.plex.activities.SplashActivity
- com.nvidia.tegrazone3/.LaunchActivity
- com.android.documentsui/.LauncherActivity
- com.plexapp.mediaserver.smb/com.plexapp.mediaserver.ui.main.MainActivity
- com.spotify.tv.android/.SpotifyTVActivity
- com.android.vending/com.google.android.finsky.tvmainactivity.TvMainActivity
- se.viafree.android/com.viafree.android.SplashActivity
- com.nvidia.inputviewer/.MainActivity
- tv.emby.embyatv/.startup.StartupActivity
- se.tv4.tv4playtab/se.tv4.tv4play.startup.SplashActivity
- com.android.gallery3d/.app.GalleryActivity
- tv.twitch.android.app/tv.twitch.android.apps.TVLandingActivity
- com.nvidia.ota/.ui.LauncherActivity
- org.xbmc.kodi/.Splash
- pl.solidexplorer2/pl.solidexplorer.SolidExplorer
- com.google.android.youtube.tv/com.google.android.apps.youtube.tv.activity.ShellActivity
- com.joaomgcd.join/.activity.ActivityMain
- com.google.android.tv.remote.service/.settings.SettingsActivity
- com.netflix.ninja/.MainActivity

___
## My LoveLace Remote Card
![alt text](https://i.imgur.com/RSFluWN.png "My Shield Remote Card")

You find all info and code here https://github.com/mcfrojd/hassio_lovelace_multiremote
___
## Credit to @clapbr
Sharing the method I've been using to use the search function on Shield directly from HA/Lovelace. Works well for a bunch of stuff, including Netflix (search example: "Vikings on Netflix") 

**configuration.yaml**
```
input_text:
  androidtv_search_input:
    name: Android Search
```
**scripts.yaml**
```
'atvsearchscript':
  alias: Android TV Search
  sequence:
  - data_template:
      command: am start -a "android.search.action.GLOBAL_SEARCH" --es query "{{ states('input_text.androidtv_search_input')}}"
      entity_id: media_player.shield
    service: androidtv.adb_command
```
**Lovelace raw**
```
      - entities:
          - entity: input_text.androidtv_search_input
            type: 'custom:text-input-row'
          - action_name: Search Android TV
            icon: 'mdi:television-classic'
            name: ' '
            service: script.atvsearchscript
            type: call-service
```
___
## Credit to @JeffLIrion
How to start a Wyze cam RTSP stream in VLC:
```
"dumpsys power | grep mWakefulness | grep -qv Awake && input keyevent 4; CURRENT_APP=$(dumpsys window windows | grep mCurrentFocus) && CURRENT_APP=${CURRENT_APP#*{* * } && CURRENT_APP=${CURRENT_APP%%/*} && if [ $CURRENT_APP != 'org.videolan.vlc' ]; then monkey -p org.videolan.vlc -c android.intent.category.LAUNCHER 1 && sleep 3; fi; am start -a android.intent.action.VIEW  -d  rtsp://USER:PASSWORD@192.168.0.42/live"
```
Change the user, password, and IP address in the last part of that command.
___