Upload
hasan-hosgel
View
437
Download
0
Embed Size (px)
Citation preview
www.immobilienscout24.de
Developing for the Big Screen - from Android TV to Chromecast DevFest Istanbul 2014 | 06.12.2014 | Hasan Hosgel
About me
+HasanHosgel
@alosdev
alosdev
hosgel
CO-Organizer
Developer
Developing for the Big Screen | Hasan Hosgel
About ImmobilienScout24
Germany’s largest real estate listing company. > 10.5 Mio. Monthly unique users > 1.5 Mio. real estates > 300 Mio. detail views > 1500 Servers ~ 8 Mio. App downloads
> 3.5 Mio. Android > 55% mobile traffic
Developing for the Big Screen | Hasan Hosgel
Once upon a time
Developing for the Big Screen | Hasan Hosgel Image Source https://www.flickr.com/photos/theinfamousgdub/1765952198
Has time to create something new
Developing for the Big Screen | Hasan Hosgel Image Source https://www.flickr.com/photos/slworking/8095803230
While sitting in the living room…
Developing for the Big Screen | Hasan Hosgel Image Source http://upload.wikimedia.org/wikipedia/commons/4/4c/Children_watching_TV.jpg
Image source: http://upload.wikimedia.org/wikipedia/commons/b/b2/Google_tv_logo.svg
Developing for the Big Screen | Hasan Hosgel
Wait
Image source: http://upload.wikimedia.org/wikipedia/commons/b/b2/Google_tv_logo.svg
Developing for the Big Screen | Hasan Hosgel
Oops
Image source: http://upload.wikimedia.org/wikipedia/commons/b/b2/Google_tv_logo.svg
Developing for the Big Screen | Hasan Hosgel
Android TV
Image source: http://www.android.com/tv/
Developing for the Big Screen | Hasan Hosgel
Device
Image source: http://www.android.com/tv/
Developing for the Big Screen | Hasan Hosgel
Let’s build the ground
Image source: http://www.flickr.com/photos/hertenberger/1434191066/
Developing for the Big Screen | Hasan Hosgel
Before we start programming
Developing for the Big Screen | Hasan Hosgel Image Source https://www.flickr.com/photos/pgautier/166610944
Prerequisite
Developing for the Big Screen | Hasan Hosgel
Prerequisite
● casual consumption - not focused like on
phone
Developing for the Big Screen | Hasan Hosgel
Prerequisite
● casual consumption - not focused like on
phone
● cinematic experience - 3 meter away
Developing for the Big Screen | Hasan Hosgel
Prerequisite
● casual consumption - not focused like on
phone
● cinematic experience - 3 meter away
● Simplicity - no touchpad
Developing for the Big Screen | Hasan Hosgel
Navigation
Developing for the Big Screen | Hasan Hosgel
Navigation
● Home
Developing for the Big Screen | Hasan Hosgel
Navigation
● Home
● Enter Button
Developing for the Big Screen | Hasan Hosgel
Navigation
● Home
● Enter Button
● Back
Developing for the Big Screen | Hasan Hosgel
Navigation
● Home
● Enter Button
● Back
● D-Pad in two axis
Developing for the Big Screen | Hasan Hosgel
Navigation with D-Pad
Source: http://www.flickr.com/photos/16210667@N02/9172895225
Developing for the Big Screen | Hasan Hosgel
Navigation
Developing for the Big Screen | Hasan Hosgel
Navigation
● use appropriate states for better
recognotion of focus/ selection
Developing for the Big Screen | Hasan Hosgel
Navigation
● use appropriate states for better
recognotion of focus/ selection
● use sound – occasionally
Developing for the Big Screen | Hasan Hosgel
Navigation
● use appropriate states for better
recognotion of focus/ selection
● use sound – occasionally
● use next focus targets - for defining own
navigation flow
Developing for the Big Screen | Hasan Hosgel
Navigation
● use appropriate states for better
recognotion of focus/ selection
● use sound – occasionally
● use next focus targets - for defining own
navigation flow
èTest it properly
Developing for the Big Screen | Hasan Hosgel
Start
Developing for the Big Screen | Hasan Hosgel Image Source https://www.flickr.com/photos/thevancats/422670456
Needed libraries
Developing for the Big Screen | Hasan Hosgel
Needed libraries
● v17 leanback support library
Developing for the Big Screen | Hasan Hosgel
Needed libraries
● v17 leanback support library
● v7 recyclerview support library
Developing for the Big Screen | Hasan Hosgel
Needed libraries
● v17 leanback support library
● v7 recyclerview support library
● v7 cardview support library
Developing for the Big Screen | Hasan Hosgel
Needed libraries
● v17 leanback support library
● v7 recyclerview support library
● v7 cardview support library
è Forces you to use also
● v4 support library
Developing for the Big Screen | Hasan Hosgel
AndroidManifest.xml changes
<manifest ...> ...
... </manifest>
Developing for the Big Screen | Hasan Hosgel
AndroidManifest.xml changes
<manifest ...> ...
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
... </manifest>
Developing for the Big Screen | Hasan Hosgel
AndroidManifest.xml changes
<manifest ...> ...
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
... </manifest>
Developing for the Big Screen | Hasan Hosgel
AndroidManifest.xml changes
<manifest ...> ...
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
... </manifest>
Developing for the Big Screen | Hasan Hosgel
AndroidManifest.xml changes
<manifest ...> ...
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
... </manifest>
Developing for the Big Screen | Hasan Hosgel
AndroidManifest.xml changes
<manifest ...> ...
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
<uses-feature android:name="android.software.leanback" android:required="true" />
... </manifest>
Developing for the Big Screen | Hasan Hosgel
AndroidManifest.xml changes
<manifest ...> ...
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
<uses-feature android:name="android.software.leanback" android:required="true" />
... </manifest>
Developing for the Big Screen | Hasan Hosgel
AndroidManifest.xml changes
<manifest ...> ...
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
<uses-feature android:name="android.software.leanback" android:required="true" />
... </manifest>
Developing for the Big Screen | Hasan Hosgel
AndroidManifest.xml changes
<manifest ...> ...
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
<uses-feature android:name="android.software.leanback" android:required="true" />
... </manifest>
Developing for the Big Screen | Hasan Hosgel
AndroidManifest.xml application changes
Developing for the Big Screen | Hasan Hosgel
AndroidManifest.xml application changes
<application android:banner="@drawable/banner" > ... </application>
Developing for the Big Screen | Hasan Hosgel
AndroidManifest.xml application changes
<application android:banner="@drawable/banner" > ... </application>
Developing for the Big Screen | Hasan Hosgel
AndroidManifest.xml application changes
<application android:banner="@drawable/banner" > ... </application>
Developing for the Big Screen | Hasan Hosgel
AndroidManifest.xml application changes
<application android:banner="@drawable/banner" > ... <activity android:name="com.example.android.TvActivity“ android:theme="@style/Theme.Leanback"> </activity> </application>
Developing for the Big Screen | Hasan Hosgel
AndroidManifest.xml application changes
<application android:banner="@drawable/banner" > ... <activity android:name="com.example.android.TvActivity“ android:theme="@style/Theme.Leanback"> </activity> </application>
Developing for the Big Screen | Hasan Hosgel
AndroidManifest.xml application changes
<application android:banner="@drawable/banner" > ... <activity android:name="com.example.android.TvActivity“ android:theme="@style/Theme.Leanback"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LEANBACK_LAUNCHER" /> </intent-filter> </activity> </application>
Developing for the Big Screen | Hasan Hosgel
AndroidManifest.xml application changes
<application android:banner="@drawable/banner" > ... <activity android:name="com.example.android.TvActivity“ android:theme="@style/Theme.Leanback"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LEANBACK_LAUNCHER" /> </intent-filter> </activity> </application>
Developing for the Big Screen | Hasan Hosgel
Not Supported Hardware Features
● android.hardware.touchscreen
● android.hardware.telephony
● android.hardware.camera
● android.hardware.nfc
● android.hardware.location.gps
● android.hardware.microphone
Developing for the Big Screen | Hasan Hosgel
avoid filtering in Playstore
Developing for the Big Screen | Hasan Hosgel
avoid filtering in Playstore
set the attribute “required” to “false” in
AndroidManifest
Developing for the Big Screen | Hasan Hosgel
avoid filtering in Playstore
set the attribute “required” to “false” in
AndroidManifest
è If you don’t to this, the application cannot
be found on the play store for TV
Developing for the Big Screen | Hasan Hosgel
Recognize TV programmatically
Developing for the Big Screen | Hasan Hosgel
Recognize TV programmatically
UiModeManager uiModeManager = (UiModeManager) getSystemService(UI_MODE_SERVICE);
Developing for the Big Screen | Hasan Hosgel
Recognize TV programmatically
UiModeManager uiModeManager = (UiModeManager) getSystemService(UI_MODE_SERVICE); if (uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION) { Log.d(TAG, "Running on a TV Device") } else { Log.d(TAG, "Running on a non-TV Device") }
Developing for the Big Screen | Hasan Hosgel
Recognize TV programmatically
UiModeManager uiModeManager = (UiModeManager) getSystemService(UI_MODE_SERVICE); if (uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION) { Log.d(TAG, "Running on a TV Device") } else { Log.d(TAG, "Running on a non-TV Device") }
Developing for the Big Screen | Hasan Hosgel
Consider Overscan
Developing for the Big Screen | Hasan Hosgel
Avoid Layout Anti-Patterns
Developing for the Big Screen | Hasan Hosgel
Avoid Layout Anti-Patterns
● Reuse of phone or tablet layout
Developing for the Big Screen | Hasan Hosgel
Avoid Layout Anti-Patterns
● Reuse of phone or tablet layout
● Usage of ActionBar
Developing for the Big Screen | Hasan Hosgel
Avoid Layout Anti-Patterns
● Reuse of phone or tablet layout
● Usage of ActionBar
● Usage of ViewPager
Developing for the Big Screen | Hasan Hosgel
Let’s take a deeper look at the used Design Pattern
Developing for the Big Screen | Hasan Hosgel Image Source https://www.flickr.com/photos/dsittig/12311006886
Model View Constroller vs. Model View Presenter
Developing for the Big Screen | Hasan Hosgel
Source: http://i.imgur.com/xbeB5.png
Model View Constroller vs. Model View Presenter
Developing for the Big Screen | Hasan Hosgel
Source: http://i.imgur.com/xbeB5.png
Some Base Classes
● BrowseFragment
Developing for the Big Screen | Hasan Hosgel
Browse Fragment
Developing for the Big Screen | Hasan Hosgel
Source: https://github.com/googlesamples/androidtv-Leanback/
Browse Fragment
Developing for the Big Screen | Hasan Hosgel
Source: https://github.com/googlesamples/androidtv-Leanback/
Some Base Classes
● BrowseFragment
● DetailFragment
Developing for the Big Screen | Hasan Hosgel
Detail Fragment
Developing for the Big Screen | Hasan Hosgel
Source: https://github.com/googlesamples/androidtv-Leanback/
Detail Fragment
Developing for the Big Screen | Hasan Hosgel
Source: https://github.com/googlesamples/androidtv-Leanback/
Some Base Classes
● BrowseFragment
● DetailFragment
● SearchFragment
Developing for the Big Screen | Hasan Hosgel
Search Fragment
Developing for the Big Screen | Hasan Hosgel
Source: https://github.com/googlesamples/androidtv-Leanback/
Some Base Classes
● BrowseFragment
● DetailFragment
● SearchFragment
● Recommendations (no base class)
Developing for the Big Screen | Hasan Hosgel
Recommendation
Developing for the Big Screen | Hasan Hosgel
Source: https://github.com/googlesamples/androidtv-Leanback/
Testing
● Emulator
● ADT-1
● Nexus Player
Developing for the Big Screen | Hasan Hosgel
Finished waiting for $$$
Source: http://www.flickr.com/photos/16210667@N02/9172895225
Developing for the Big Screen | Hasan Hosgel
Some days later a friend sends a message
Developing for the Big Screen | Hasan Hosgel Image Source https://www.flickr.com/photos/jparise/214330120
Chromecast
Developing for the Big Screen | Hasan Hosgel Image Source http://www.google.de/intl/de/chrome/devices/chromecast/
Chromecast
Developing for the Big Screen | Hasan Hosgel Image Source http://www.google.de/intl/de/chrome/devices/chromecast/
Starting the conversation
Developing for the Big Screen | Hasan Hosgel Image Source http://pixabay.com/de/katze-hauskate-tier-augen-blick-278187/
You can conquer a new world
Developing for the Big Screen | Hasan Hosgel Image Source http://pixabay.com/de/katze-wand-loch-überraschung-alt-491730/
Developing for Chomecast
● Registration (cost 5$)
Developing for the Big Screen | Hasan Hosgel
Developing for Chomecast
● Registration (cost 5$)
" Register application and developer
devices
Developing for the Big Screen | Hasan Hosgel
You can conquer a new world
Developing for the Big Screen | Hasan Hosgel
Developing for Chomecast
● Registration (cost 5$)
" Register application and developer
devices
● Create sender app
" Android, IOs, Chrome
Developing for the Big Screen | Hasan Hosgel
Developing for Chomecast
● Registration (cost 5$)
" Register application and developer
devices
● Create sender app
" Android, IOs, Chrome
Developing for the Big Screen | Hasan Hosgel
Needed libraries
Developing for the Big Screen | Hasan Hosgel
Needed libraries
● v7 appcompat support library
Developing for the Big Screen | Hasan Hosgel
Needed libraries
● v7 appcompat support library
● v7 mediarouter support library
Developing for the Big Screen | Hasan Hosgel
Needed libraries
● v7 appcompat support library
● v7 mediarouter support library
● google play services library
Developing for the Big Screen | Hasan Hosgel
Needed libraries
● v7 appcompat support library
● v7 mediarouter support library
● google play services library
è Forces you to use also
Developing for the Big Screen | Hasan Hosgel
Needed libraries
● v7 appcompat support library
● v7 mediarouter support library
● google play services library
è Forces you to use also
● v4 support library
Developing for the Big Screen | Hasan Hosgel
Developing for Chomecast
● Registration (cost 5$)
" Register application and developer
devices
● Create sender application
" Android, IOs, Chrome
● Create receiver application
" HTML
Developing for the Big Screen | Hasan Hosgel
Wait again for $$$
Source: http://www.flickr.com/photos/16210667@N02/9172895225
Developing for the Big Screen | Hasan Hosgel
Users complaining: they can’t use it on Chromecast!
Developing for the Big Screen | Hasan Hosgel Image Source http://pixabay.com/de/baby-tränen-kleinkind-traurig-443393/
After you understand the problem
Developing for the Big Screen | Hasan Hosgel Image Source http://pixabay.com/de/darstellung-porträt-schreien-schrei-89189/
Presenation API
Developing for the Big Screen | Hasan Hosgel
Presenation API
● In Android API Level 17 support for
secondary screen was added
Developing for the Big Screen | Hasan Hosgel
Presenation API
● In Android API Level 17 support for
secondary screen was added
è Android Mirroring can display different Uis
for device and what is displayed ChromeCast
Developing for the Big Screen | Hasan Hosgel
Presenation API
● In Android API Level 17 support for
secondary screen was added
è Android Mirroring can display different Uis
for device and what is displayed ChromeCast
Similar to MiraCast
Developing for the Big Screen | Hasan Hosgel
Now we can rule the world!
Developing for the Big Screen | Hasan Hosgel Image Source http://www.bhmpics.com/success_kid-wallpapers.html
Q & A
Source: http://www.flickr.com/photos/21496790@N06/5065834411/ Developing for the Big Screen | Hasan Hosgel
www.immobilienscout24.de
Thanks for your Attention! İlginiz için teşekkürler! Contact: +HasanHosgel Twitter: @alosdev Github: alosdev
Developing for the Big Screen - from Android TV to Chromecast https://de.slideshare.net/hosgel/dev-fest-istanbul2014developingforthebig-screenfromandroidtvtochromecast
material
● AndroidTV
" http://developer.android.com/training/tv/
" https://github.com/googlesamples/androidtv-Leanback
● ChromeCast
" https://developers.google.com/cast/
" https://github.com/googlecast
● Presentation API
" http://developer.android.com/reference/android/app/
Presentation.html
" https://github.com/googlecast/CastPresentation-android
Developing for the Big Screen | Hasan Hosgel