This package is a port of the Android TV Remote written by @louis49 to React Native
This package is not already published because it depends on a patched version of react-native-tcp-sockets.
npm install react-native-androidtv-remote
After first succeeded pairing, you can reuse generated certs with getCertificate()
by sending it in constructor options.
let host = "192.168.1.12";
let options = {
pairing_port : 6467,
remote_port : 6466,
service_name: 'com.urcompany.appname',
systeminfo: {
manufacturer: 'default-manufacturer',
model: 'default-model'
},
// Mandatory for the connection to work on android and needs patched version of
// react-native-tcp-socket
cert: {
key: null,
cert: null,
androidKeyStore: 'AndroidKeyStore',
certAlias: 'my-remotectl-atv-cert',
keyAlias: 'my-remotectl-atv',
}
}
let androidRemote = new AndroidRemote(host, options)
androidRemote.on('secret', () => {
line.question("Code : ", async (code) => {
androidRemote.sendCode(code);
});
});
androidRemote.on('powered', (powered) => {
console.debug("Powered : " + powered)
});
androidRemote.on('volume', (volume) => {
console.debug("Volume : " + volume.level + '/' + volume.maximum + " | Muted : " + volume.muted);
});
androidRemote.on('current_app', (current_app) => {
console.debug("Current App : " + current_app);
});
androidRemote.on('ready', async () => {
let cert = androidRemote.getCertificate();
androidRemote.sendKey(RemoteKeyCode.MUTE, RemoteDirection.SHORT)
androidRemote.sendAppLink("https://www.disneyplus.com");
});
let started = await androidRemote.start();
Emitted when androidtv ask for code.
Emitted when androidtv is powering on/off.
Emitted when androidtv is changing volume/mute.
Emitted when androidtv is changing current app.
Emitted when androidtv has a problem : by example when you send a wrong app_link with sendAppLink(app_link)
.
code
: You need to pass the shown code on the TV when asked
KeyCode
: Any key of https://developer.android.com/reference/android/view/KeyEvent?hl=frDirection
:START_LONG
: Start long pushEND_LONG
: Stop long pushSHORT
: Simple push
app_link
: You can find them in some Android apps by seeking 'android:host' in Android-Manifest- You can use jadx to decompile the Android app and read Android-Manifest
- Example : "https://www.netflix.com/title.*"
- If you need to decrypt some new messages from android TV, pass an Hexa form of buffer here : https://protogen.marcgravell.com/decode
- You can take a look at an other package for homebridge that use this current one: homebridge-plugin-androidtv
MIT