SlideShare a Scribd company logo
From	Custom	Hardware	
to	Android	TV	and	
Beyond
Valentin	Nagacevschi
Summary
• Custom Hardware ?
• What is Android TV and why develop for it ?
• Think different!
• React Native & Android TV
• Start developing for Android TV
• Takeaways
Custom
Hardware,
still Android
What is Android TV ?
Smart TV Market Share
2018
2017
2016
2015
Smart TV Other TV
Smart TV OS Share
Android
40%
Tizen
23%
WebOS
13%
Roku 6%
Other
40%
Why Android TV ?
Why Android TV ?
• Larger screen
Why Android TV ?
• Larger screen
• Real life shared experiences
Why Android TV ?
• Larger screen
• Real life shared experiences
• Less SMOBIES !!
Less SMOBIES!
React Native on Android TV
Think Different!
Think Different!
• Smartphone without touch
Think Different!
• Smartphone without touch
• Everything is focus oriented
Think Different!
• Smartphone without touch
• Everything is focus oriented
• Use background images, it’s a large screen
Think Different!
• Smartphone without touch
• Everything is focus oriented
• Use background images, it’s a large screen
• Avoid keyboard input
Think Different!
• Smartphone without touch
• Everything is focus oriented
• Use background images, it’s a large screen
• Avoid keyboard input
• Use the microphone
Think Different!
• Smartphone without touch
• Everything is focus oriented
• Use background images, it’s a large screen
• Avoid keyboard input
• Use the microphone
• Use Recommendations
React Native on Android TV
Leanback Support Library
React Native & Android TV
React Native & Android TV
• Supported since RN 0.55 (March, 2018)
React Native & Android TV
• Supported since RN 0.55 (March, 2018)
• Limited if any changes - works of the shelf
React Native & Android TV
• Supported since RN 0.55 (March, 2018)
• Limited if any changes - works of the shelf
• Can be published as usual in Google Play
React Native on Android TV
Use Your Imagination
• Use focus and selectors
• Animated State List - horizontal or 2D scrolling
• Focusable components
• Full-screen background images
D-Pad Control
Navigation using Remote Control
How to Start the Development?
How to Start the Development?
How to Start the Development?
How to Start the Development?
How to Start the Development?
Connect to the Android TV
> adb connect 10.0.208.153:5555
connected to 10.0.208.153:5555
> adb devices
List of devices attached
10.0.208.153:5555 device
> react-native run android
Android Manifest File
<uses-feature android:name="android.hardware.microphone" android:required="false" />
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
<application
…
android:label="@string/app_name"
android:banner="@drawable/videos_by_google_banner"
android:logo=“@drawable/videos_by_google_banner">
<activity
…
android:label="@string/app_name"
android:logo="@drawable/videos_by_google_banner"
android:screenOrientation="landscape">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
</intent-filter>
</activity>
Focusable Button
<TouchableOpacity
style={[styles.button, this.state.currentStyle]}
onPress={this.onPress}
onFocus={() => this.setState({ currentStyle: { borderColor: '#62DBFB' }})}
onBlur={() => this.setState({ currentStyle: { borderColor: '#CC0000' }})}
>
<Text style={styles.text} >Press Me</Text>
</TouchableOpacity>
Remote Control Events
const TVEventHandler = require(‘TVEventHandler’);
...
componentDidMount() {
this.tvEventHandler = new TVEventHandler();
this.tvEventHandler.enable(this, (cmp, evt) => {
console.log('TVEvent' , evt);
});
}
TVEvent, { eventType: 'up' }
TVEvent, { eventType: 'right' }
TVEvent, { eventType: 'down' }
TVEvent, { eventType: 'left' }
TVEvent, { eventType: 'select' }
TVEvent, { eventType: 'rewind' }
TVEvent, { eventType: 'fastForward' }
TVEvent, { eventType: 'playstop' }
TVEvent, { eventType: 'focus' }
TVEvent, { eventType: ‘blur' }
React Native Voice
import Voice from ‘react-native-voice';
constructor(props) {
Voice.onSpeechStart = this.onSpeechStartHandler.bind(this);
Voice.onSpeechEnd = this.onSpeechEndHandler.bind(this);
Voice.onSpeechResults = this.onSpeechResultsHandler.bind(this);
}
onPress = (e) => {
Voice.start('en-GB');
}
onSpeechResultsHandler = ({ value }) => {
console.log(‘RESULT', value);
}
React Native Music Control
import MusicControl from 'react-native-music-control';
MusicControl.enableControl('setRating', false);
MusicControl.enableControl('volume', true);
...
MusicControl.setNowPlaying({
title: ‘Stay With Me',
artwork: 'https://i.imgur.com/e1cpwdo.png',
artist: ‘Sam Smith',
album: ‘In the Lonely Hour',
genre: 'Ballad, Rhythm and Blues, Pop',
duration: 294,
description: '',
color: 0xFFFFFF,
date: ‘2014-01-02T00:00:00Z',
rating: 84,
notificationIcon: 'my_custom_icon'
});
ADB Goodies
/* launch developer menu */

adb shell input keyevent KEYCODE_MENU

/* go back */

adb shell input keyevent KEYCODE_BACK

/* input keyevent */

adb shell input keyevent 19 // DPAD_DOWN

/* input text */

adb shell input text "my.email@domain.com"

/* install apk */

adb install -r /path-to-your-apk/app-debug.apk

/* run app */

adb shell monkey -p com.magicworks.androidtv -c

/* run main intent with deep link params */

adb shell am start -a android.intent.action.MAIN -d "tvapp://ok"

/* launch settings options */

adb shell am start -a android.settings.SETTINGS
Takeaways
Takeaways
• No better time to start developing for Android TV
Takeaways
• No better time to start developing for Android TV
• React Native just works
Takeaways
• No better time to start developing for Android TV
• React Native just works
• Be creative when designing for Android TV
Takeaways
• No better time to start developing for Android TV
• React Native just works
• Be creative when designing for Android TV
• No touch, no keyboard, use focus, microphone, background images
Takeaways
• No better time to start developing for Android TV
• React Native just works
• Be creative when designing for Android TV
• No touch, no keyboard, use focus, microphone, background images
• AndroidX (with LeanBack included) support on RN 0.60
Questions?	
Thank	you	!
linkedin.com/in/vnagacevschi/

More Related Content

PDF
Android TV: Building apps with Google’s Leanback Library
ODP
BDD with Cucumber
PDF
AEM Best Practices for Component Development
PDF
Reactjs workshop (1)
PPTX
Different types of mobile apps
PPTX
Hidden Camera 3 APIs in Android 4.4 (KitKat)
PPT
Introduction to Android, Architecture & Components
PDF
SonarQube
Android TV: Building apps with Google’s Leanback Library
BDD with Cucumber
AEM Best Practices for Component Development
Reactjs workshop (1)
Different types of mobile apps
Hidden Camera 3 APIs in Android 4.4 (KitKat)
Introduction to Android, Architecture & Components
SonarQube

What's hot (20)

PPTX
Appium ppt
PPTX
Flutter Road Map.pptx
PPTX
Introductory Virtual Reality in Unity3d
PDF
Tracking and improving software quality with SonarQube
PDF
PPTX
Inside Zalo: Developing a mobile messenger for the audience of millions - VN ...
PPTX
Android Operating System
PPT
Android Presentation
PDF
What is flutter and why should i care?
PPTX
React Native
PPTX
Step by step - Selenium 3 web-driver - From Scratch
PDF
Android
PDF
Appium: Automation for Mobile Apps
PDF
Hands On with Selenium and WebDriver
ZIP
Android Application Development
PPTX
How native is React Native? | React Native vs Native App Development
PPTX
API First Workflow: How could we have better API Docs through DevOps pipeline
PPT
PDF
Capacitor 1.0 launch
PDF
Ionic & Angular
Appium ppt
Flutter Road Map.pptx
Introductory Virtual Reality in Unity3d
Tracking and improving software quality with SonarQube
Inside Zalo: Developing a mobile messenger for the audience of millions - VN ...
Android Operating System
Android Presentation
What is flutter and why should i care?
React Native
Step by step - Selenium 3 web-driver - From Scratch
Android
Appium: Automation for Mobile Apps
Hands On with Selenium and WebDriver
Android Application Development
How native is React Native? | React Native vs Native App Development
API First Workflow: How could we have better API Docs through DevOps pipeline
Capacitor 1.0 launch
Ionic & Angular
Ad

Similar to React Native on Android TV (20)

PDF
Trilha Android - Android Evolved
PDF
Do relogio ao carro
PDF
Getting your app on Android TV
ODP
Migrating to Android TV
PPTX
[Ultracode Munich Meetup #7] Building Apps for Nexus Player & Android TV
PDF
Developing for Android TV and the Nexus player - Mihai Risca & Alexander Wegg...
PPTX
Google IO 2014 overview
PPTX
Second Screen Apps - On Google TV
PDF
Essentials of developing_tizen_web_application_en_1.0
PPTX
Android Meetup, Илья Лёвин
PDF
Christian Kurzke; Getting Your Content on the Big Screen
PDF
Developing Android Applications for Google TV - Android Developer Lab 2011
PDF
Mobile Saturday. Тема 3. Особенности тестирования приложения на Android: Huma...
PPTX
Android Mobile Application Testing: Human Interface Guideline, Tools
PDF
Using the Presentation API and external screens on Android
ODP
Android TV Overview
PPTX
Introduction to ICS
ODP
Serenity for Android: Designing for Android TV Devices
PDF
Google TV For Fun
PDF
Google TV - Droidcon Murcia
Trilha Android - Android Evolved
Do relogio ao carro
Getting your app on Android TV
Migrating to Android TV
[Ultracode Munich Meetup #7] Building Apps for Nexus Player & Android TV
Developing for Android TV and the Nexus player - Mihai Risca & Alexander Wegg...
Google IO 2014 overview
Second Screen Apps - On Google TV
Essentials of developing_tizen_web_application_en_1.0
Android Meetup, Илья Лёвин
Christian Kurzke; Getting Your Content on the Big Screen
Developing Android Applications for Google TV - Android Developer Lab 2011
Mobile Saturday. Тема 3. Особенности тестирования приложения на Android: Huma...
Android Mobile Application Testing: Human Interface Guideline, Tools
Using the Presentation API and external screens on Android
Android TV Overview
Introduction to ICS
Serenity for Android: Designing for Android TV Devices
Google TV For Fun
Google TV - Droidcon Murcia
Ad

Recently uploaded (20)

PDF
Odoo Companies in India – Driving Business Transformation.pdf
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PDF
AI in Product Development-omnex systems
PPTX
Essential Infomation Tech presentation.pptx
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PPTX
CHAPTER 2 - PM Management and IT Context
PDF
Nekopoi APK 2025 free lastest update
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PPTX
L1 - Introduction to python Backend.pptx
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PDF
Digital Strategies for Manufacturing Companies
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PPTX
ai tools demonstartion for schools and inter college
PPTX
Reimagine Home Health with the Power of Agentic AI​
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Odoo Companies in India – Driving Business Transformation.pdf
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
AI in Product Development-omnex systems
Essential Infomation Tech presentation.pptx
Upgrade and Innovation Strategies for SAP ERP Customers
CHAPTER 2 - PM Management and IT Context
Nekopoi APK 2025 free lastest update
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
L1 - Introduction to python Backend.pptx
Navsoft: AI-Powered Business Solutions & Custom Software Development
Design an Analysis of Algorithms I-SECS-1021-03
PTS Company Brochure 2025 (1).pdf.......
2025 Textile ERP Trends: SAP, Odoo & Oracle
Digital Strategies for Manufacturing Companies
wealthsignaloriginal-com-DS-text-... (1).pdf
ai tools demonstartion for schools and inter college
Reimagine Home Health with the Power of Agentic AI​
Design an Analysis of Algorithms II-SECS-1021-03
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises

React Native on Android TV

  • 2. Summary • Custom Hardware ? • What is Android TV and why develop for it ? • Think different! • React Native & Android TV • Start developing for Android TV • Takeaways
  • 5. Smart TV Market Share 2018 2017 2016 2015 Smart TV Other TV
  • 6. Smart TV OS Share Android 40% Tizen 23% WebOS 13% Roku 6% Other 40%
  • 8. Why Android TV ? • Larger screen
  • 9. Why Android TV ? • Larger screen • Real life shared experiences
  • 10. Why Android TV ? • Larger screen • Real life shared experiences • Less SMOBIES !!
  • 15. Think Different! • Smartphone without touch • Everything is focus oriented
  • 16. Think Different! • Smartphone without touch • Everything is focus oriented • Use background images, it’s a large screen
  • 17. Think Different! • Smartphone without touch • Everything is focus oriented • Use background images, it’s a large screen • Avoid keyboard input
  • 18. Think Different! • Smartphone without touch • Everything is focus oriented • Use background images, it’s a large screen • Avoid keyboard input • Use the microphone
  • 19. Think Different! • Smartphone without touch • Everything is focus oriented • Use background images, it’s a large screen • Avoid keyboard input • Use the microphone • Use Recommendations
  • 22. React Native & Android TV
  • 23. React Native & Android TV • Supported since RN 0.55 (March, 2018)
  • 24. React Native & Android TV • Supported since RN 0.55 (March, 2018) • Limited if any changes - works of the shelf
  • 25. React Native & Android TV • Supported since RN 0.55 (March, 2018) • Limited if any changes - works of the shelf • Can be published as usual in Google Play
  • 27. Use Your Imagination • Use focus and selectors • Animated State List - horizontal or 2D scrolling • Focusable components • Full-screen background images
  • 30. How to Start the Development?
  • 31. How to Start the Development?
  • 32. How to Start the Development?
  • 33. How to Start the Development?
  • 34. How to Start the Development?
  • 35. Connect to the Android TV > adb connect 10.0.208.153:5555 connected to 10.0.208.153:5555 > adb devices List of devices attached 10.0.208.153:5555 device > react-native run android
  • 36. Android Manifest File <uses-feature android:name="android.hardware.microphone" android:required="false" /> <uses-feature android:name="android.hardware.touchscreen" android:required="false" /> <application … android:label="@string/app_name" android:banner="@drawable/videos_by_google_banner" android:logo=“@drawable/videos_by_google_banner"> <activity … android:label="@string/app_name" android:logo="@drawable/videos_by_google_banner" android:screenOrientation="landscape"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LEANBACK_LAUNCHER" /> </intent-filter> </activity>
  • 37. Focusable Button <TouchableOpacity style={[styles.button, this.state.currentStyle]} onPress={this.onPress} onFocus={() => this.setState({ currentStyle: { borderColor: '#62DBFB' }})} onBlur={() => this.setState({ currentStyle: { borderColor: '#CC0000' }})} > <Text style={styles.text} >Press Me</Text> </TouchableOpacity>
  • 38. Remote Control Events const TVEventHandler = require(‘TVEventHandler’); ... componentDidMount() { this.tvEventHandler = new TVEventHandler(); this.tvEventHandler.enable(this, (cmp, evt) => { console.log('TVEvent' , evt); }); } TVEvent, { eventType: 'up' } TVEvent, { eventType: 'right' } TVEvent, { eventType: 'down' } TVEvent, { eventType: 'left' } TVEvent, { eventType: 'select' } TVEvent, { eventType: 'rewind' } TVEvent, { eventType: 'fastForward' } TVEvent, { eventType: 'playstop' } TVEvent, { eventType: 'focus' } TVEvent, { eventType: ‘blur' }
  • 39. React Native Voice import Voice from ‘react-native-voice'; constructor(props) { Voice.onSpeechStart = this.onSpeechStartHandler.bind(this); Voice.onSpeechEnd = this.onSpeechEndHandler.bind(this); Voice.onSpeechResults = this.onSpeechResultsHandler.bind(this); } onPress = (e) => { Voice.start('en-GB'); } onSpeechResultsHandler = ({ value }) => { console.log(‘RESULT', value); }
  • 40. React Native Music Control import MusicControl from 'react-native-music-control'; MusicControl.enableControl('setRating', false); MusicControl.enableControl('volume', true); ... MusicControl.setNowPlaying({ title: ‘Stay With Me', artwork: 'https://i.imgur.com/e1cpwdo.png', artist: ‘Sam Smith', album: ‘In the Lonely Hour', genre: 'Ballad, Rhythm and Blues, Pop', duration: 294, description: '', color: 0xFFFFFF, date: ‘2014-01-02T00:00:00Z', rating: 84, notificationIcon: 'my_custom_icon' });
  • 41. ADB Goodies /* launch developer menu */ adb shell input keyevent KEYCODE_MENU /* go back */ adb shell input keyevent KEYCODE_BACK /* input keyevent */ adb shell input keyevent 19 // DPAD_DOWN /* input text */ adb shell input text "my.email@domain.com" /* install apk */ adb install -r /path-to-your-apk/app-debug.apk /* run app */ adb shell monkey -p com.magicworks.androidtv -c /* run main intent with deep link params */ adb shell am start -a android.intent.action.MAIN -d "tvapp://ok" /* launch settings options */ adb shell am start -a android.settings.SETTINGS
  • 43. Takeaways • No better time to start developing for Android TV
  • 44. Takeaways • No better time to start developing for Android TV • React Native just works
  • 45. Takeaways • No better time to start developing for Android TV • React Native just works • Be creative when designing for Android TV
  • 46. Takeaways • No better time to start developing for Android TV • React Native just works • Be creative when designing for Android TV • No touch, no keyboard, use focus, microphone, background images
  • 47. Takeaways • No better time to start developing for Android TV • React Native just works • Be creative when designing for Android TV • No touch, no keyboard, use focus, microphone, background images • AndroidX (with LeanBack included) support on RN 0.60