SlideShare uma empresa Scribd logo
1 de 27
Baixar para ler offline
Adding multi-screen support to Android* Applicationsusing the Presentation API 
Xavier Hallade, Developer Evangelist, Intel Corporation 
ph0b.com -@ph0b
2 
Android Multi-Screen support 
Miracast 
ChromecastMirroring 
Micro-HDMI 
MHL/Slimport 
Wireless 
Yes 
Yes 
No 
No 
Charges your device 
No 
No 
No 
Yes 
Requiresexisting WiFi 
No 
Yes 
No 
No 
Directcommunication 
Yes 
Yes (withTDLS) 
Yes 
Yes 
Latency 
Low-Med 
Medium 
None 
None 
Number of Supported devices 
Most Android4.2+ devices 
13, more coming 
? 
? 
Since version 4.2, Android supports the Presentation API that allows developers to manipulate the content displayed on additional screens.
3 
Connecting a screen to your device 
Chromecast Mirroring 
Miracast 
Developer Settings
4 
Clone Mode (Default) 
After establishing the connection, user sees local screen on the remote display 
Resolution sent to remote is the same as local display’s 
No need to do anything to support this mode
5 
Extended Video Mode(Intel®Platform Specific) 
Video mode is activated automatically when user plays a video using Android* Media Player framework (ex: VideoView) 
User sees video content on the remote at the 1080p resolution (or whatever the native resolution of the content is) 
Local video rendering is turned off to save power, but UI stays untouched
6 
Dual Screen Display With Single App 
Remote screen used for content viewing 
Local screen used for control & context info 
Application can target this mode using the Android*Presentation API
7 
Dual Screen Display With Background Service 
User can navigate out of the app and play 1080p video on local screen or use any other application, including receiving a phone call without any disruption to background playback
8 
Connecting a Wireless Display on Android* 
Sony* XperiaZ 
Stock/Intel® 
Samsung* Galaxy S4
9 
Miracast* Concept 
Video Render 
Audio Render 
VideoDecode 
AudioDecode 
De-Packetize 
De-Packetize 
Link Content Protection Decrypt (Optional) 
AV DeMux 
Transport 
LLC 
WI-FiMAC (Direct Link) 
Wi-Fi PHY 
SINK 
VideoEncode 
AudioEncode 
Packetize 
Packetize 
Link Content Protection Encrypt (Optional) 
AV Mux 
Transport 
LLC 
WI-FiMAC (Direct Link) 
Wi-Fi PHY 
Video Frames 
Audio Samples 
SOURCE
10 
Adapters 
•Actiontec*ScreenBeamPro 
•Actiontec*ScreenBeamMini 2 
•Netgear*(ex: PTV3000) 
•Viewsonic(WPG-370) 
•Best Buy*Rocketfish* 
•Lenovo* 
•… 
Projectors 
•Dell* 
•Seiko Epson * 
•Ricoh* 
•LG* 
•… 
TVs 
•Samsung* 
•Toshiba* 
•LG* 
•TCL* 
•Sharp* 
•Philips* 
•… 
Miracast*Certified Sink Devices 
Full list of Miracast* certified devices can be found at 
http://www.wi-fi.org/wi-fi-certified-miracast 
Intel®WiDi Certified 
MiBox
11 
Second-Screen Enabled Devices running Android* 4.2.x 
Device 
Miracast* Certified 
HDMI*, MHL* or SlimPort* 
Samsung* Galaxy S4 
Yes 
Yes 
Samsung Galaxy Tab3 10.1 
No 
Yes 
Sony* XperiaZ 
Yes 
Yes 
LG* OptimusG 
Yes 
Yes 
Nexus* 4, 5, 7 (2013) 
Yes 
Yes 
HTC* One 
Yes 
Yes 
… Most Android 4.2+ devices 
Yes
12 
Android* Secondary Display API 
Android added Second-Screen support via the Presentation class in Android* 4.2 (API Level 17), allowing you to: 
Implement support for a second screen in your applications without having to worry about the way the displays are connected (Display agnostic) 
Works with MHL*, HDMI*, SlimPort*, Miracast* & Chromecast Mirroring* compatible devices 
You can control the output on the remote (second) screen independently of the phone screen
13 
The Presentation Object 
Dialog 
Presentation 
You need to have a fragment based navigation if you want to keep it running while navigating in the app. 
The activity should take care of pausing and resuming whatever content is playing within the presentation whenever the activity itself is paused or resumed. 
•Presentation is the based class and should be extended: 
•Presentation inherits from Dialog, and as for a Dialog its lifecycle is bound to an Activity 
public class DemoPresentation extendsPresentation { 
•Needs to be associated with a Display at creation time
14 
Using the Presentation API 
Before showing a Presentation you need to select a Display, this can be done in 2 ways: 
1.MediaRouterAPI (in API 16): system will decide the best display for you! 
also available in the Support Library v7* 
2.Display Manager API (in API 17): Enumeration of displays 
// Get the MediaRouterservice 
MediaRouter mMediaRouter= (MediaRouter)getSystemService(Context.MEDIA_ROUTER_SERVICE); 
// Care only about routes that have full video support. 
MediaRouter.RouteInfomRouteInfo = mMediaRouter.getSelectedRoute(MediaRouter.ROUTE_TYPE_LIVE_VIDEO); 
Display presentationDisplay= mRouteInfo.getPresentationDisplay(); 
// Get the DisplayManagerservice. 
DisplayManagermDisplayManager= (DisplayManager)getSystemService(Context.DISPLAY_SERVICE); 
// enumerate the displays 
Display[] presentationDisplays= mDisplayManager.getDisplays(DisplayManager.DISPLAY_CATEGORY_PRESENTATION);
15 
Presentation API 
MediaRouter. getSelectedRoute(ROUTE_TYPE_LIVE_VIDEO) 
MediaRouter. routeInfo 
getPresentationDisplay() 
new Presentation(activityContext, display) 
.show() 
Then, using MediaRouter.addCallback, you have to monitor: 
•onRouteUnselected 
•onRouteSelected 
•onRoutePresentationDisplayChanged 
How to get a Presentation displayed: 
And inside the activity owning the Presentation: 
•onResume 
•onPause
16 
Designing Layout for the Presentation 
Use a layout the same way as with a Dialog. 
Display properties are the same than with Google*TV: 
TV display is as bigger from a phone than the user sits further from a phone: screen density is comparable. 
Default theme is HoloDark: light text on dark background is easier to read on TV. 
Orientation is always… landscape! 
TV setting 
Addressable screen size 
Density Identifier 
Screen Density 
Display Resolution 
Screen size identifier 
720p 
1280 x 720 px 
tvdpi 
213 dp 
960 x 540 dp 
large 
1080p 
1920 x 1080 px 
xhdpi 
320 dp 
960 x 540 dp 
large 
source: https://developers.google.com/tv/android/docs/gtv_android_patterns
17 
Second-ScreenDemo
18 
Intel®WiDi –Dual Screen Possibilities 97 MPH 4 POS107 MPH 8 POS111 MPH 14 POSLIVE FEEDTURN 7 
App Window #1 
Configure and add select content 
on 2’ screen 
App Window #2 
View multi-angle 
Videos & more on 
10’ large screen 
Multi-video 
User configured 
Application 
EXTREME 
Content 
Driver #48-Car Cam 
Driver #10 – 
Fol ow the Car 
Track Cam 
Location 
Car Race Main Live Feed 
Driver#8-Car Cam 
Driver#99-Car Cam 
Tweet Feeds…. 
Layout 1 
Layout 4 
Layout 3 
Layout 2 
MPH / POS 
MPH / POS 
MPH //POS 
Clear All 
Follow Driver 
Driver 
Tweets 
Driver Stats 
Live Feed 
Driver 
Location 
Load Layout 
Save Layout 
THERACE 
One application, pulling content from one site, driving two screens!
19 
Ideas for Dual Screen Applications 
Enter search term 
Touchpad Mode 
Web Browser
20 
Ideas for Dual Screen Applications 
And 
Keyboard Input Mode 
w 
q 
e 
r 
t 
y 
u 
i 
o 
p 
s 
a 
d 
f 
g 
h 
j 
k 
l 
z 
 
x 
c 
v 
b 
n 
m 
&123 
/ 
space 
· 
search 
And 
Web Browser
21 
Ideas for Dual Screen Applications 
Games 
Dual Joysticks Mode
22 
Ideas for Dual Screen Applications 
Productivity App
23 
Ideas for Dual Screen Applications 
Current matches 
X vs. Y 
A vs. B 
X vs. Z 
Add Score 
11 
Player X vs. Player Z 
7 
Tournament Manager
25 
Wifi Display APIs -Android* 4.2/4.3 
All of the below APIs are internal as of Android* 4.2/4.3 
They are part of AOSP and publicly exposed, but not part of the framework so are not guaranteed to work 
android.hardware.display.DisplayManager 
… 
String ACTION_WIFI_DISPLAY_STATUS_CHANGED 
WifiDisplayStatusgetWifiDisplayStatus() 
void scanWifiDisplays() 
void connectWifiDisplay(StringdeviceAdress)¹ 
void disconnectWifiDisplay()² 
void forgetWifiDisplay(Stringaddress)² 
void renameWifiDisplay(String address,Stringalias)² 
android.hardware.display. 
WifiDisplayStatus 
intgetFeatureState() 
intgetScanState() 
intgetActiveDisplayState() 
WifiDisplaygetActiveDisplay() 
WifiDisplay[] getAvailableDisplays() 
WifiDisplay[] getRememberedDisplays() 
android.hardware.display.WifiDisplay 
StringgetDeviceAddress() 
String getDeviceName() 
String getDeviceAlias() 
String getFriendlyDisplayName() 
android.provider.Settings 
… 
String ACTION_WIFI_DISPLAY_SETTINGS 
String getDeviceAlias() 
String getFriendlyDisplayName() 
¹android.permission.CONFIGURE_WIFI_DISPLAY required for unknown devices 
²android.permission.CONFIGURE_WIFI_DISPLAY always required
26 
Adding a MediaRouteButton 
In res/menu/default.xml: <item android:title="Media Route Settings" android:actionProviderClass="android.app.MediaRouteActionProvider" android:showAsAction="always" /> //Sets Media Route Button to second screen mode 
mediaRouteActionProvider.setRouteTypes(MediaRouter.ROUTE_TYPE_LIVE_VIDEO);
27 
Some last comments 
Presentation from background service: 
•“Draw over apps” permission (SYSTEM_ALERT_WINDOW) 
•TYPE_SYSTEM_ALERTLayoutParam. 
USB Input Back Channel 
HTML5 : 
•standard: http://webscreens.github.io/presentation-api/ 
•Demo implementation in HexGLbuilt with crosswalk: https://github.com/hmin/HexGL 
•documentation: https://github.com/crosswalk-project/crosswalk- website/wiki/presentation-api-manual
Q&A

Mais conteúdo relacionado

Mais procurados

Android Camera Architecture
Android Camera ArchitectureAndroid Camera Architecture
Android Camera ArchitecturePicker Weng
 
Introduction to Android Development
Introduction to Android DevelopmentIntroduction to Android Development
Introduction to Android DevelopmentAly Abdelkareem
 
Using the Android Native Development Kit (NDK)
Using the Android Native Development Kit (NDK)Using the Android Native Development Kit (NDK)
Using the Android Native Development Kit (NDK)Xavier Hallade
 
Android's Multimedia Framework
Android's Multimedia FrameworkAndroid's Multimedia Framework
Android's Multimedia FrameworkOpersys inc.
 
Basic android-ppt
Basic android-pptBasic android-ppt
Basic android-pptSrijib Roy
 
Android - Application Framework
Android - Application FrameworkAndroid - Application Framework
Android - Application FrameworkYong Heui Cho
 
Android Architecture
Android ArchitectureAndroid Architecture
Android Architecturedeepakshare
 
Android PPT Presentation 2018
Android PPT Presentation 2018Android PPT Presentation 2018
Android PPT Presentation 2018Rao Purna
 
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspectiveAndroid graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspectiveBin Chen
 
ELCE 2012 - Dive into Android Networking: Adding Ethernet Connectivity
ELCE 2012 - Dive into Android Networking: Adding Ethernet ConnectivityELCE 2012 - Dive into Android Networking: Adding Ethernet Connectivity
ELCE 2012 - Dive into Android Networking: Adding Ethernet ConnectivityBenjamin Zores
 
Introduction to Android ppt
Introduction to Android pptIntroduction to Android ppt
Introduction to Android pptTaha Malampatti
 
Android app development ppt
Android app development pptAndroid app development ppt
Android app development pptsaitej15
 
Introduction to android
Introduction to androidIntroduction to android
Introduction to androidzeelpatel0504
 

Mais procurados (20)

Android Camera Architecture
Android Camera ArchitectureAndroid Camera Architecture
Android Camera Architecture
 
Embedded Android : System Development - Part II (HAL)
Embedded Android : System Development - Part II (HAL)Embedded Android : System Development - Part II (HAL)
Embedded Android : System Development - Part II (HAL)
 
Embedded Android : System Development - Part I
Embedded Android : System Development - Part IEmbedded Android : System Development - Part I
Embedded Android : System Development - Part I
 
Android Architecture
Android ArchitectureAndroid Architecture
Android Architecture
 
Android ppt
Android pptAndroid ppt
Android ppt
 
Introduction to Android Development
Introduction to Android DevelopmentIntroduction to Android Development
Introduction to Android Development
 
Using the Android Native Development Kit (NDK)
Using the Android Native Development Kit (NDK)Using the Android Native Development Kit (NDK)
Using the Android Native Development Kit (NDK)
 
Android's Multimedia Framework
Android's Multimedia FrameworkAndroid's Multimedia Framework
Android's Multimedia Framework
 
Basic android-ppt
Basic android-pptBasic android-ppt
Basic android-ppt
 
Android - Application Framework
Android - Application FrameworkAndroid - Application Framework
Android - Application Framework
 
Introduction to Android Window System
Introduction to Android Window SystemIntroduction to Android Window System
Introduction to Android Window System
 
Android Architecture
Android ArchitectureAndroid Architecture
Android Architecture
 
Android PPT Presentation 2018
Android PPT Presentation 2018Android PPT Presentation 2018
Android PPT Presentation 2018
 
Android architecture
Android architectureAndroid architecture
Android architecture
 
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspectiveAndroid graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
 
ELCE 2012 - Dive into Android Networking: Adding Ethernet Connectivity
ELCE 2012 - Dive into Android Networking: Adding Ethernet ConnectivityELCE 2012 - Dive into Android Networking: Adding Ethernet Connectivity
ELCE 2012 - Dive into Android Networking: Adding Ethernet Connectivity
 
Introduction to Android ppt
Introduction to Android pptIntroduction to Android ppt
Introduction to Android ppt
 
Android app development ppt
Android app development pptAndroid app development ppt
Android app development ppt
 
Flutter beyond hello world
Flutter beyond hello worldFlutter beyond hello world
Flutter beyond hello world
 
Introduction to android
Introduction to androidIntroduction to android
Introduction to android
 

Semelhante a Using the Presentation API and external screens on Android

Android Meetup, Илья Лёвин
Android Meetup, Илья ЛёвинAndroid Meetup, Илья Лёвин
Android Meetup, Илья ЛёвинGDG Saint Petersburg
 
HTC Developer - 2012
HTC Developer - 2012HTC Developer - 2012
HTC Developer - 2012Bruce Jones
 
Flash platform fitc
Flash platform fitcFlash platform fitc
Flash platform fitcMark Doherty
 
Windows phone 8 overview
Windows phone 8 overviewWindows phone 8 overview
Windows phone 8 overviewcodeblock
 
Optimizing your Android App for Mass Market Devices
Optimizing your Android App for Mass Market DevicesOptimizing your Android App for Mass Market Devices
Optimizing your Android App for Mass Market DevicesMotorola Mobility - MOTODEV
 
Android Live Streaming Box Technical
Android Live Streaming Box Technical Android Live Streaming Box Technical
Android Live Streaming Box Technical Jimmin Kurichiyil
 
Droidcon2013 miracast final2
Droidcon2013 miracast final2Droidcon2013 miracast final2
Droidcon2013 miracast final2Droidcon Berlin
 
Embedded Android Real-Time Streaming Optimization
Embedded Android Real-Time Streaming OptimizationEmbedded Android Real-Time Streaming Optimization
Embedded Android Real-Time Streaming OptimizationVIA Embedded
 
Chrysler Smart Screen
Chrysler Smart ScreenChrysler Smart Screen
Chrysler Smart ScreenMostafa Sameh
 
Hybrid App Development with PhoneGap
Hybrid App Development with PhoneGapHybrid App Development with PhoneGap
Hybrid App Development with PhoneGapDotitude
 
Windows Phone 8 Advanced Developers Conference
Windows Phone 8 Advanced Developers ConferenceWindows Phone 8 Advanced Developers Conference
Windows Phone 8 Advanced Developers ConferenceDamir Dobric
 
Adc2012 windows phone 8
Adc2012 windows phone 8Adc2012 windows phone 8
Adc2012 windows phone 8AlexanderGoetz
 
EMEA AppForum 2015 Android KitKat & Lollipop - new features for enterprise de...
EMEA AppForum 2015 Android KitKat & Lollipop - new features for enterprise de...EMEA AppForum 2015 Android KitKat & Lollipop - new features for enterprise de...
EMEA AppForum 2015 Android KitKat & Lollipop - new features for enterprise de...Pietro F. Maggi
 
Getting started with android dev and test perspective
Getting started with android   dev and test perspectiveGetting started with android   dev and test perspective
Getting started with android dev and test perspectiveGunjan Kumar
 
I phone app develoment ppt
I phone app develoment   pptI phone app develoment   ppt
I phone app develoment pptsagaroceanic11
 
I phone app develoment ppt
I phone app develoment   pptI phone app develoment   ppt
I phone app develoment pptsagaroceanic11
 
Creating Flash Content for Multiple Screens
Creating Flash Content for Multiple ScreensCreating Flash Content for Multiple Screens
Creating Flash Content for Multiple Screenspaultrani
 
Manish Chasta - Securing Android Applications
Manish Chasta - Securing Android ApplicationsManish Chasta - Securing Android Applications
Manish Chasta - Securing Android ApplicationsPositive Hack Days
 

Semelhante a Using the Presentation API and external screens on Android (20)

Android Meetup, Илья Лёвин
Android Meetup, Илья ЛёвинAndroid Meetup, Илья Лёвин
Android Meetup, Илья Лёвин
 
HTC Developer - 2012
HTC Developer - 2012HTC Developer - 2012
HTC Developer - 2012
 
Flash platform fitc
Flash platform fitcFlash platform fitc
Flash platform fitc
 
Windows phone 8 overview
Windows phone 8 overviewWindows phone 8 overview
Windows phone 8 overview
 
Sandeep_Resume
Sandeep_ResumeSandeep_Resume
Sandeep_Resume
 
Optimizing your Android App for Mass Market Devices
Optimizing your Android App for Mass Market DevicesOptimizing your Android App for Mass Market Devices
Optimizing your Android App for Mass Market Devices
 
Android Live Streaming Box Technical
Android Live Streaming Box Technical Android Live Streaming Box Technical
Android Live Streaming Box Technical
 
Droidcon2013 miracast final2
Droidcon2013 miracast final2Droidcon2013 miracast final2
Droidcon2013 miracast final2
 
Embedded Android Real-Time Streaming Optimization
Embedded Android Real-Time Streaming OptimizationEmbedded Android Real-Time Streaming Optimization
Embedded Android Real-Time Streaming Optimization
 
Chrysler Smart Screen
Chrysler Smart ScreenChrysler Smart Screen
Chrysler Smart Screen
 
Google tv
Google tvGoogle tv
Google tv
 
Hybrid App Development with PhoneGap
Hybrid App Development with PhoneGapHybrid App Development with PhoneGap
Hybrid App Development with PhoneGap
 
Windows Phone 8 Advanced Developers Conference
Windows Phone 8 Advanced Developers ConferenceWindows Phone 8 Advanced Developers Conference
Windows Phone 8 Advanced Developers Conference
 
Adc2012 windows phone 8
Adc2012 windows phone 8Adc2012 windows phone 8
Adc2012 windows phone 8
 
EMEA AppForum 2015 Android KitKat & Lollipop - new features for enterprise de...
EMEA AppForum 2015 Android KitKat & Lollipop - new features for enterprise de...EMEA AppForum 2015 Android KitKat & Lollipop - new features for enterprise de...
EMEA AppForum 2015 Android KitKat & Lollipop - new features for enterprise de...
 
Getting started with android dev and test perspective
Getting started with android   dev and test perspectiveGetting started with android   dev and test perspective
Getting started with android dev and test perspective
 
I phone app develoment ppt
I phone app develoment   pptI phone app develoment   ppt
I phone app develoment ppt
 
I phone app develoment ppt
I phone app develoment   pptI phone app develoment   ppt
I phone app develoment ppt
 
Creating Flash Content for Multiple Screens
Creating Flash Content for Multiple ScreensCreating Flash Content for Multiple Screens
Creating Flash Content for Multiple Screens
 
Manish Chasta - Securing Android Applications
Manish Chasta - Securing Android ApplicationsManish Chasta - Securing Android Applications
Manish Chasta - Securing Android Applications
 

Mais de Xavier Hallade

BCON22: oneAPI backend - Blender Cycles on Intel GPUs
BCON22: oneAPI backend - Blender Cycles on Intel GPUsBCON22: oneAPI backend - Blender Cycles on Intel GPUs
BCON22: oneAPI backend - Blender Cycles on Intel GPUsXavier Hallade
 
Apps development for Recon HUDs
Apps development for Recon HUDsApps development for Recon HUDs
Apps development for Recon HUDsXavier Hallade
 
Etendre ses applications aux smartwatches et TVs android
Etendre ses applications aux smartwatches et TVs androidEtendre ses applications aux smartwatches et TVs android
Etendre ses applications aux smartwatches et TVs androidXavier Hallade
 
Mastering the NDK with Android Studio 2.0 and the gradle-experimental plugin
Mastering the NDK with Android Studio 2.0 and the gradle-experimental pluginMastering the NDK with Android Studio 2.0 and the gradle-experimental plugin
Mastering the NDK with Android Studio 2.0 and the gradle-experimental pluginXavier Hallade
 
Power optimization for Android apps
Power optimization for Android appsPower optimization for Android apps
Power optimization for Android appsXavier Hallade
 
Getting your app on Android TV
Getting your app on Android TVGetting your app on Android TV
Getting your app on Android TVXavier Hallade
 
Android on IA devices and Intel Tools
Android on IA devices and Intel ToolsAndroid on IA devices and Intel Tools
Android on IA devices and Intel ToolsXavier Hallade
 

Mais de Xavier Hallade (7)

BCON22: oneAPI backend - Blender Cycles on Intel GPUs
BCON22: oneAPI backend - Blender Cycles on Intel GPUsBCON22: oneAPI backend - Blender Cycles on Intel GPUs
BCON22: oneAPI backend - Blender Cycles on Intel GPUs
 
Apps development for Recon HUDs
Apps development for Recon HUDsApps development for Recon HUDs
Apps development for Recon HUDs
 
Etendre ses applications aux smartwatches et TVs android
Etendre ses applications aux smartwatches et TVs androidEtendre ses applications aux smartwatches et TVs android
Etendre ses applications aux smartwatches et TVs android
 
Mastering the NDK with Android Studio 2.0 and the gradle-experimental plugin
Mastering the NDK with Android Studio 2.0 and the gradle-experimental pluginMastering the NDK with Android Studio 2.0 and the gradle-experimental plugin
Mastering the NDK with Android Studio 2.0 and the gradle-experimental plugin
 
Power optimization for Android apps
Power optimization for Android appsPower optimization for Android apps
Power optimization for Android apps
 
Getting your app on Android TV
Getting your app on Android TVGetting your app on Android TV
Getting your app on Android TV
 
Android on IA devices and Intel Tools
Android on IA devices and Intel ToolsAndroid on IA devices and Intel Tools
Android on IA devices and Intel Tools
 

Último

Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 

Último (20)

Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 

Using the Presentation API and external screens on Android

  • 1. Adding multi-screen support to Android* Applicationsusing the Presentation API Xavier Hallade, Developer Evangelist, Intel Corporation ph0b.com -@ph0b
  • 2. 2 Android Multi-Screen support Miracast ChromecastMirroring Micro-HDMI MHL/Slimport Wireless Yes Yes No No Charges your device No No No Yes Requiresexisting WiFi No Yes No No Directcommunication Yes Yes (withTDLS) Yes Yes Latency Low-Med Medium None None Number of Supported devices Most Android4.2+ devices 13, more coming ? ? Since version 4.2, Android supports the Presentation API that allows developers to manipulate the content displayed on additional screens.
  • 3. 3 Connecting a screen to your device Chromecast Mirroring Miracast Developer Settings
  • 4. 4 Clone Mode (Default) After establishing the connection, user sees local screen on the remote display Resolution sent to remote is the same as local display’s No need to do anything to support this mode
  • 5. 5 Extended Video Mode(Intel®Platform Specific) Video mode is activated automatically when user plays a video using Android* Media Player framework (ex: VideoView) User sees video content on the remote at the 1080p resolution (or whatever the native resolution of the content is) Local video rendering is turned off to save power, but UI stays untouched
  • 6. 6 Dual Screen Display With Single App Remote screen used for content viewing Local screen used for control & context info Application can target this mode using the Android*Presentation API
  • 7. 7 Dual Screen Display With Background Service User can navigate out of the app and play 1080p video on local screen or use any other application, including receiving a phone call without any disruption to background playback
  • 8. 8 Connecting a Wireless Display on Android* Sony* XperiaZ Stock/Intel® Samsung* Galaxy S4
  • 9. 9 Miracast* Concept Video Render Audio Render VideoDecode AudioDecode De-Packetize De-Packetize Link Content Protection Decrypt (Optional) AV DeMux Transport LLC WI-FiMAC (Direct Link) Wi-Fi PHY SINK VideoEncode AudioEncode Packetize Packetize Link Content Protection Encrypt (Optional) AV Mux Transport LLC WI-FiMAC (Direct Link) Wi-Fi PHY Video Frames Audio Samples SOURCE
  • 10. 10 Adapters •Actiontec*ScreenBeamPro •Actiontec*ScreenBeamMini 2 •Netgear*(ex: PTV3000) •Viewsonic(WPG-370) •Best Buy*Rocketfish* •Lenovo* •… Projectors •Dell* •Seiko Epson * •Ricoh* •LG* •… TVs •Samsung* •Toshiba* •LG* •TCL* •Sharp* •Philips* •… Miracast*Certified Sink Devices Full list of Miracast* certified devices can be found at http://www.wi-fi.org/wi-fi-certified-miracast Intel®WiDi Certified MiBox
  • 11. 11 Second-Screen Enabled Devices running Android* 4.2.x Device Miracast* Certified HDMI*, MHL* or SlimPort* Samsung* Galaxy S4 Yes Yes Samsung Galaxy Tab3 10.1 No Yes Sony* XperiaZ Yes Yes LG* OptimusG Yes Yes Nexus* 4, 5, 7 (2013) Yes Yes HTC* One Yes Yes … Most Android 4.2+ devices Yes
  • 12. 12 Android* Secondary Display API Android added Second-Screen support via the Presentation class in Android* 4.2 (API Level 17), allowing you to: Implement support for a second screen in your applications without having to worry about the way the displays are connected (Display agnostic) Works with MHL*, HDMI*, SlimPort*, Miracast* & Chromecast Mirroring* compatible devices You can control the output on the remote (second) screen independently of the phone screen
  • 13. 13 The Presentation Object Dialog Presentation You need to have a fragment based navigation if you want to keep it running while navigating in the app. The activity should take care of pausing and resuming whatever content is playing within the presentation whenever the activity itself is paused or resumed. •Presentation is the based class and should be extended: •Presentation inherits from Dialog, and as for a Dialog its lifecycle is bound to an Activity public class DemoPresentation extendsPresentation { •Needs to be associated with a Display at creation time
  • 14. 14 Using the Presentation API Before showing a Presentation you need to select a Display, this can be done in 2 ways: 1.MediaRouterAPI (in API 16): system will decide the best display for you! also available in the Support Library v7* 2.Display Manager API (in API 17): Enumeration of displays // Get the MediaRouterservice MediaRouter mMediaRouter= (MediaRouter)getSystemService(Context.MEDIA_ROUTER_SERVICE); // Care only about routes that have full video support. MediaRouter.RouteInfomRouteInfo = mMediaRouter.getSelectedRoute(MediaRouter.ROUTE_TYPE_LIVE_VIDEO); Display presentationDisplay= mRouteInfo.getPresentationDisplay(); // Get the DisplayManagerservice. DisplayManagermDisplayManager= (DisplayManager)getSystemService(Context.DISPLAY_SERVICE); // enumerate the displays Display[] presentationDisplays= mDisplayManager.getDisplays(DisplayManager.DISPLAY_CATEGORY_PRESENTATION);
  • 15. 15 Presentation API MediaRouter. getSelectedRoute(ROUTE_TYPE_LIVE_VIDEO) MediaRouter. routeInfo getPresentationDisplay() new Presentation(activityContext, display) .show() Then, using MediaRouter.addCallback, you have to monitor: •onRouteUnselected •onRouteSelected •onRoutePresentationDisplayChanged How to get a Presentation displayed: And inside the activity owning the Presentation: •onResume •onPause
  • 16. 16 Designing Layout for the Presentation Use a layout the same way as with a Dialog. Display properties are the same than with Google*TV: TV display is as bigger from a phone than the user sits further from a phone: screen density is comparable. Default theme is HoloDark: light text on dark background is easier to read on TV. Orientation is always… landscape! TV setting Addressable screen size Density Identifier Screen Density Display Resolution Screen size identifier 720p 1280 x 720 px tvdpi 213 dp 960 x 540 dp large 1080p 1920 x 1080 px xhdpi 320 dp 960 x 540 dp large source: https://developers.google.com/tv/android/docs/gtv_android_patterns
  • 18. 18 Intel®WiDi –Dual Screen Possibilities 97 MPH 4 POS107 MPH 8 POS111 MPH 14 POSLIVE FEEDTURN 7 App Window #1 Configure and add select content on 2’ screen App Window #2 View multi-angle Videos & more on 10’ large screen Multi-video User configured Application EXTREME Content Driver #48-Car Cam Driver #10 – Fol ow the Car Track Cam Location Car Race Main Live Feed Driver#8-Car Cam Driver#99-Car Cam Tweet Feeds…. Layout 1 Layout 4 Layout 3 Layout 2 MPH / POS MPH / POS MPH //POS Clear All Follow Driver Driver Tweets Driver Stats Live Feed Driver Location Load Layout Save Layout THERACE One application, pulling content from one site, driving two screens!
  • 19. 19 Ideas for Dual Screen Applications Enter search term Touchpad Mode Web Browser
  • 20. 20 Ideas for Dual Screen Applications And Keyboard Input Mode w q e r t y u i o p s a d f g h j k l z  x c v b n m &123 / space · search And Web Browser
  • 21. 21 Ideas for Dual Screen Applications Games Dual Joysticks Mode
  • 22. 22 Ideas for Dual Screen Applications Productivity App
  • 23. 23 Ideas for Dual Screen Applications Current matches X vs. Y A vs. B X vs. Z Add Score 11 Player X vs. Player Z 7 Tournament Manager
  • 24. 25 Wifi Display APIs -Android* 4.2/4.3 All of the below APIs are internal as of Android* 4.2/4.3 They are part of AOSP and publicly exposed, but not part of the framework so are not guaranteed to work android.hardware.display.DisplayManager … String ACTION_WIFI_DISPLAY_STATUS_CHANGED WifiDisplayStatusgetWifiDisplayStatus() void scanWifiDisplays() void connectWifiDisplay(StringdeviceAdress)¹ void disconnectWifiDisplay()² void forgetWifiDisplay(Stringaddress)² void renameWifiDisplay(String address,Stringalias)² android.hardware.display. WifiDisplayStatus intgetFeatureState() intgetScanState() intgetActiveDisplayState() WifiDisplaygetActiveDisplay() WifiDisplay[] getAvailableDisplays() WifiDisplay[] getRememberedDisplays() android.hardware.display.WifiDisplay StringgetDeviceAddress() String getDeviceName() String getDeviceAlias() String getFriendlyDisplayName() android.provider.Settings … String ACTION_WIFI_DISPLAY_SETTINGS String getDeviceAlias() String getFriendlyDisplayName() ¹android.permission.CONFIGURE_WIFI_DISPLAY required for unknown devices ²android.permission.CONFIGURE_WIFI_DISPLAY always required
  • 25. 26 Adding a MediaRouteButton In res/menu/default.xml: <item android:title="Media Route Settings" android:actionProviderClass="android.app.MediaRouteActionProvider" android:showAsAction="always" /> //Sets Media Route Button to second screen mode mediaRouteActionProvider.setRouteTypes(MediaRouter.ROUTE_TYPE_LIVE_VIDEO);
  • 26. 27 Some last comments Presentation from background service: •“Draw over apps” permission (SYSTEM_ALERT_WINDOW) •TYPE_SYSTEM_ALERTLayoutParam. USB Input Back Channel HTML5 : •standard: http://webscreens.github.io/presentation-api/ •Demo implementation in HexGLbuilt with crosswalk: https://github.com/hmin/HexGL •documentation: https://github.com/crosswalk-project/crosswalk- website/wiki/presentation-api-manual
  • 27. Q&A