androidtv Documentation

androidtv

androidtv package

Submodules

androidtv.androidtv module

Communicate with an Android TV device via ADB over a network.

ADB Debugging must be enabled.

class androidtv.androidtv.AndroidTV(host, adbkey='', adb_server_ip='', adb_server_port=5037)[source]

Bases: androidtv.basetv.BaseTV

Representation of an Android TV device.

DEVICE_CLASS = 'androidtv'
audio_state

Check if audio is playing, paused, or idle.

Returns:The audio state, as determined from the ADB shell command dumpsys audio, or None if it could not be determined
Return type:str, None
device

Get the current playback device.

Returns:The current playback device, or None if it could not be determined
Return type:str, None
get_properties(lazy=False)[source]

Get the properties needed for Home Assistant updates.

Parameters:lazy (bool) – Whether or not to continue retrieving properties if the device is off or the screensaver is running
Returns:
  • screen_on (bool, None) – Whether or not the device is on, or None if it was not determined
  • awake (bool, None) – Whether or not the device is awake (screensaver is not running), or None if it was not determined
  • wake_lock_size (int, None) – The size of the current wake lock, or None if it was not determined
  • media_session_state (int, None) – The state from the output of dumpsys media_session, or None if it was not determined
  • current_app (dict, None) – The current app property, or None if it was not determined
  • audio_state (str, None) – The audio state, as determined from “dumpsys audio”, or None if it was not determined
  • device (str, None) – The current playback device, or None if it was not determined
  • muted (bool, None) – Whether or not the volume is muted, or None if it was not determined
  • volume_level (int, None) – The absolute volume level, or None if it was not determined
get_properties_dict(lazy=True)[source]

Get the properties needed for Home Assistant updates and return them as a dictionary.

Parameters:lazy (bool) – Whether or not to continue retrieving properties if the device is off or the screensaver is running
Returns:A dictionary with keys 'screen_on', 'awake', 'wake_lock_size', 'media_session_state', 'current_app', 'audio_state', 'device', 'muted', and 'volume_level'
Return type:dict
muted

Whether or not the volume is muted.

Returns:Whether or not the volume is muted, or None if it could not be determined
Return type:bool, None
start_intent(uri)[source]

Start an intent on the device.

Parameters:uri (str) – The intent that will be sent is am start -a android.intent.action.VIEW -d <uri>
turn_off()[source]

Send POWER action if the device is not off.

turn_on()[source]

Send POWER action if the device is off.

update()[source]

Get the info needed for a Home Assistant update.

Returns:
  • state (str) – The state of the device
  • current_app (str) – The current running app
  • device (str) – The current playback device
  • muted (bool) – Whether or not the volume is muted
  • volume (float) – The volume level (between 0 and 1)
volume

Get the relative volume level.

Returns:The volume level (between 0 and 1), or None if it could not be determined
Return type:float, None
volume_level

Get the absolute volume level.

Returns:The absolute volume level, or None if it could not be determined
Return type:int, None
androidtv.basetv module

Communicate with an Android TV or Amazon Fire TV device via ADB over a network.

ADB Debugging must be enabled.

class androidtv.basetv.BaseTV(host, adbkey='', adb_server_ip='', adb_server_port=5037)[source]

Bases: object

Base class for representing an Android TV / Fire TV device.

_adb_shell_pure_python_adb(cmd)[source]

Send an ADB command using an ADB server.

Parameters:cmd (str) – The ADB command to be sent
Returns:The response from the device, if there is a response
Return type:str, None
_adb_shell_python_adb(cmd)[source]

Send an ADB command using the Python ADB implementation.

Parameters:cmd (str) – The ADB command to be sent
Returns:The response from the device, if there is a response
Return type:str, None
_key(key)[source]

Send a key event to device.

Parameters:key (str, int) – The Key constant
available

Check whether the ADB connection is intact.

Returns:Whether or not the ADB connection is intact
Return type:bool
awake

Check if the device is awake (screensaver is not running).

Returns:Whether or not the device is awake (screensaver is not running)
Return type:bool
back()[source]

Send back action.

connect(always_log_errors=True)[source]

Connect to an Android TV / Fire TV device.

Parameters:always_log_errors (bool) – If True, errors will always be logged; otherwise, errors will only be logged on the first failed reconnect attempt
Returns:Whether or not the connection was successfully established and the device is available
Return type:bool
current_app

Return the current app.

Returns:A dictionary with keys 'package' and 'activity' if the current app was found; otherwise, None
Return type:dict
down()[source]

Send down action.

enter()[source]

Send enter action.

get_device_properties()[source]

Return a dictionary of device properties.

Returns:props – A dictionary with keys 'wifimac', 'ethmac', 'serialno', 'manufacturer', 'model', and 'sw_version'
Return type:dict
home()[source]

Send home action.

key_0()[source]

Send 0 keypress.

key_1()[source]

Send 1 keypress.

key_2()[source]

Send 2 keypress.

key_3()[source]

Send 3 keypress.

key_4()[source]

Send 4 keypress.

key_5()[source]

Send 5 keypress.

key_6()[source]

Send 6 keypress.

key_7()[source]

Send 7 keypress.

key_8()[source]

Send 8 keypress.

key_9()[source]

Send 9 keypress.

key_a()[source]

Send a keypress.

key_b()[source]

Send b keypress.

key_c()[source]

Send c keypress.

key_d()[source]

Send d keypress.

key_e()[source]

Send e keypress.

key_f()[source]

Send f keypress.

key_g()[source]

Send g keypress.

key_h()[source]

Send h keypress.

key_i()[source]

Send i keypress.

key_j()[source]

Send j keypress.

key_k()[source]

Send k keypress.

key_l()[source]

Send l keypress.

key_m()[source]

Send m keypress.

key_n()[source]

Send n keypress.

key_o()[source]

Send o keypress.

key_p()[source]

Send p keypress.

key_q()[source]

Send q keypress.

key_r()[source]

Send r keypress.

key_s()[source]

Send s keypress.

key_t()[source]

Send t keypress.

key_u()[source]

Send u keypress.

key_v()[source]

Send v keypress.

key_w()[source]

Send w keypress.

key_x()[source]

Send x keypress.

key_y()[source]

Send y keypress.

key_z()[source]

Send z keypress.

left()[source]

Send left action.

manufacturer

Get the ‘manufacturer’ property from the device.

Returns:The manufacturer of the device
Return type:str, None
media_next()[source]

Send media next action (results in fast-forward).

media_pause()[source]

Send media pause action.

media_play()[source]

Send media play action.

media_play_pause()[source]

Send media play/pause action.

media_previous()[source]

Send media previous action (results in rewind).

media_session_state

Get the state from the output of dumpsys media_session.

Returns:The state from the output of the ADB shell command dumpsys media_session, or None if it could not be determined
Return type:int, None
media_stop()[source]

Send media stop action.

menu()[source]

Send menu action.

mute_volume()[source]

Mute the volume.

power()[source]

Send power action.

right()[source]

Send right action.

screen_on

Check if the screen is on.

Returns:Whether or not the device is on
Return type:bool
sleep()[source]

Send sleep action.

space()[source]

Send space keypress.

up()[source]

Send up action.

volume_down()[source]

Send volume down action.

volume_up()[source]

Send volume up action.

wake_lock

Check for wake locks (device is playing).

Returns:Whether or not the wake_lock_size property is equal to 1.
Return type:bool
wake_lock_size

Get the size of the current wake lock.

Returns:The size of the current wake lock, or None if it could not be determined
Return type:int, None
androidtv.constants module

Constants used in the BaseTV, AndroidTV, and FireTV classes.

androidtv.firetv module

Communicate with an Amazon Fire TV device via ADB over a network.

ADB Debugging must be enabled.

class androidtv.firetv.FireTV(host, adbkey='', adb_server_ip='', adb_server_port=5037)[source]

Bases: androidtv.basetv.BaseTV

Representation of an Amazon Fire TV device.

DEVICE_CLASS = 'firetv'
_send_intent(pkg, intent, count=1)[source]

Send an intent to the device.

Parameters:
  • pkg (str) – The command that will be sent is monkey -p <intent> -c <pkg> <count>; echo $?
  • intent (str) – The command that will be sent is monkey -p <intent> -c <pkg> <count>; echo $?
  • count (int, str) – The command that will be sent is monkey -p <intent> -c <pkg> <count>; echo $?
Returns:

A dictionary with keys 'output' and 'retcode', if they could be determined; otherwise, an empty dictionary

Return type:

dict

get_properties(get_running_apps=True, lazy=False)[source]

Get the properties needed for Home Assistant updates.

Parameters:
  • get_running_apps (bool) – Whether or not to get the running_apps property
  • lazy (bool) – Whether or not to continue retrieving properties if the device is off or the screensaver is running
Returns:

  • screen_on (bool, None) – Whether or not the device is on, or None if it was not determined
  • awake (bool, None) – Whether or not the device is awake (screensaver is not running), or None if it was not determined
  • wake_lock_size (int, None) – The size of the current wake lock, or None if it was not determined
  • media_session_state (int, None) – The state from the output of dumpsys media_session, or None if it was not determined
  • current_app (dict, None) – The current app property, or None if it was not determined
  • running_apps (list, None) – A list of the running apps, or None if it was not determined

get_properties_dict(get_running_apps=True, lazy=True)[source]

Get the properties needed for Home Assistant updates and return them as a dictionary.

Parameters:
  • get_running_apps (bool) – Whether or not to get the running_apps property
  • lazy (bool) – Whether or not to continue retrieving properties if the device is off or the screensaver is running
Returns:

A dictionary with keys 'screen_on', 'awake', 'wake_lock_size', 'media_session_state', 'current_app', and 'running_apps'

Return type:

dict

launch_app(app)[source]

Launch an app.

Parameters:app (str) – The ID of the app that will be launched
Returns:A dictionary with keys 'output' and 'retcode', if they could be determined; otherwise, an empty dictionary
Return type:dict
running_apps

Return a list of running user applications.

Returns:A list of the running apps
Return type:list
stop_app(app)[source]

Stop an app.

Parameters:app (str) – The ID of the app that will be stopped
Returns:The output of the am force-stop ADB shell command, or None if the device is unavailable
Return type:str, None
turn_off()[source]

Send SLEEP action if the device is not off.

turn_on()[source]

Send POWER and HOME actions if the device is off.

update(get_running_apps=True)[source]

Get the info needed for a Home Assistant update.

Parameters:get_running_apps (bool) – Whether or not to get the running_apps property
Returns:
  • state (str) – The state of the device
  • current_app (str) – The current running app
  • running_apps (list) – A list of the running apps if get_running_apps is True, otherwise the list [current_app]

Module contents

Connect to a device and determine whether it’s an Android TV or an Amazon Fire TV.

ADB Debugging must be enabled.

androidtv.setup(host, adbkey='', adb_server_ip='', adb_server_port=5037, device_class='auto')[source]

Connect to a device and determine whether it’s an Android TV or an Amazon Fire TV.

Parameters:
  • host (str) – The address of the device in the format <ip address>:<host>
  • adbkey (str) – The path to the adbkey file for ADB authentication; the file adbkey.pub must be in the same directory
  • adb_server_ip (str) – The IP address of the ADB server
  • adb_server_port (int) – The port for the ADB server
  • device_class (str) – The type of device: 'auto' (detect whether it is an Android TV or Fire TV device), 'androidtv', or 'firetv'`
Returns:

aftv – The representation of the device

Return type:

AndroidTV, FireTV

androidtv is a Python 3 package that provides state information and control of Android TV and Fire TV devices via ADB. This package is used by the Android TV integration in Home Assistant.

Installation

Be sure you install into a Python 3.x environment.

pip install androidtv

Acknowledgments

This is based on python-firetv by happyleavesaoc and the androidtv component for Home Assistant by a1ex4, and it depends on python-adb and pure-python-adb.

Indices and tables