SlideShare a Scribd company logo
1 of 34
Download to read offline
Developers
Command & Control
... in the Living Room

Matthew Gaunt
Developer Advocate
Remote
         Control




Mr. Leanback




                   Favorite
                   Beverage
                              3
“ In the U.S., 88 percent of tablet
owners and 86 percent of smartphone
owners said they used their device
while watching TV... ”



 Q4 2011 Survey of Connected Device Owners
 Nielsen Company
Remote
Control

          Smartphone
                             Tablet?


             Ms. Multi-screen

            Laptop



                     Snack


                                       5
Google TV User Study
  Average Number of Actively Used Connected Devices per Household with Google TV




                                                                                   6
~3 Smartphones

                 Team More Typical




                                    Laptop
                           Tablet
People want to do more than just watch TV




                                            8
Able Remote
Turn your Android device into a customized Google TV remote




                                                              9
The Peel Smart Remote App
Experience the magic of personalized TV with Peel Smart Remote




                                                                 10
Trivialist (Locomo Labs)
Play live against everyone in your favorite sports bar!




                                                          11
MOVL
Android and web-based multi-screen apps and APIs the work with Google TV!

Cloud Connect: Real-time connections
over 3G and 4G

Direct Connect: Direct connection over
WiFi between mobile device and Google TV

KontrolTV Platform/Controller:
 - Multi-screen
 - Multi-user
 - TV to TV collaboration
 - Auto-discovery
 - Android API for Google TV
 - JS API for Chrome


                                                                            12
The Anymote Protocol
I can haz second screen.
The Anymote Protocol
                       The Anymote Protocol is a specification that defines how
                       second screen apps securely send input events to first
                       screen devices on the same network.


                       Input events include:
                         - Key events
                         - Touch/mouse events
                         - Android Intents

                       There is an Anymote Protocol Service on all Google TV
                       devices that receives and responds to Anymote messages.


                       On Google TV, whichever app is in the foreground receives
                       the Anymote events.


                                                                              14
Communication with the Anymote Protocol
Client (2nd screen app) / Server (1st screen service) Communication Model

   1.   Discovery (mDNS)

   2.   Authentication and Pairing (Pairing Protocol)
        a.   2nd screen device sends pairing request to 1st screen device (Google TV)
        b.   Google TV displays a challenge to the user
        c.   Users enters challenge into 2nd screen device
        d.   2nd screen device sends challenge to Google TV
        e.   Google TV returns a TLS key for encrypting messages


   3.   Sending Events (Anymote)




                                                                                        15
The Google TV Anymote Library
The Anymote Library

Makes Anymote easy to use


An Android Library that simplifies finding, pairing with, and sending events to Google TV
using the Anymote Protocol

 1. Implement the AnymoteClientService.ClientListener interface (3 methods)

 2. Implement a ServiceConnection to attach your ClientListener to the AnymoreClientService
 3. Bind to the AnymoteClientService service to initiate the pairing process

 4. User an AnymoteSnder to send messages to Google TV using the Anymore Protocol




                                                                                              17
Implement the ClientListener Interface
Receive the AnymoteSender for sending messages to Google TV

                                                                                              Java
public class YourActivity extends Activity implements AnymoteClientService.ClientListener {
   private AnymoteSender anymoteSender;

    @Override
    public void onConnected(AnymoteSender anymoteSender) {
       this.anymoteSender = anymoteSender; // Save for sending messages
    }

    @Override
    public void onDisconnected() { ... }

    @Override
    public void onConnectionError() { ... }

    ...

}



                                                                                                     18
Implement a ServiceConnection
Attach your ClientListener to the AnymoteClientService

                                                                                                      Java
private AnymoteClientService anymoteService;

private ServiceConnection serviceConnection = new ServiceConnection() {

     public void onServiceConnected(ComponentName name, IBinder service) {
        anymoteService = ((AnymoteClientService.AnymoteClientServiceBinder) service).getService();
        anymoteService.attachClientListener(YourActivity.this); // YourActivity is a ClientListener
     }

     public void onServiceDisconnected(ComponentName name) {
        anymoteService.detachClientListener(YourActivity.this); // Stop receiving notifications
        anymoteService = null;
     }

};




                                                                                                             19
Bind to the AnymoteClientService
Begin the pairing process

                                                                        Java
@Override
public void onCreate(Bundle savedInstanceState) {
   ...

    Intent intent = new Intent(this, AnymoteClientService.class);
    bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);
}




                                                                               20
Send Messages with the AnymoteSender

                                                                                      Java
someButton.setOnClickListener(new OnClickListener() {
   public void onClick(View v) {
      anymoteSender.sendKeyPress(KeyEvent.KEYCODE_DPAD_CENTER);
   }
});


                                                                                      Java
new TouchHandler(someView, Mode.POINTER, anymoteSender);

                                                                                      Java
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(“http://www.google.com”));
anymoteSender.sendIntent(intent);

                                                                                      Java
Intent intent = new Intent(“com.example.yourapp.VIEW_ACTION”);
anymoteSender.sendIntent(intent);




                                                                                             21
The Anymote Library
http://code.google.com/p/googletv-android-samples/
             (check out the samples!)




                                                     22
The Anymote Protocol
• Protocol Specifications: https://developers.google.com/tv/remote/


• Discovery handled by app: Google TV Remote[1] (or use JmDNS)
• Pairing and Authentication: Pairing Protocol Reference Implementation [2] (UI in app)
• Sending Events: Anymote Protocol Reference Implementation [3]


• Pairing and Anymote Libraries use Protocol Buffers [4] (lite) for de/serializing data

    - Google TV Remote for Android: http://code.google.com/p/google-tv-remote/
    - Pairing Protocol: http://code.google.com/p/google-tv-pairing-protocol/
    - Anymote Protocol: http://code.google.com/p/anymote-protocol/
    - Protocol Buffers: http://code.google.com/p/protobuf/



                                                                                          23
API’s to Come
Fundamentals of Streaming Content
• Custom Streaming support
• Custom DRM support

• Google I/O 2012 - Get Your Content Onto Google TV
• http://www.youtube.com/watch?feature=player_embedded&v=bNbKpUqkOso




                                                                       25
More Goodies
• QoS API’s - Allows you to detect frame rate, bandwidth, buffer
  size, buffer fill rate etc . . .


• Smooth Streaming support
• PlayReady Support




                                                                  26
Publishing Time
Play Store FTW




                 28
We Filter Out Apps Where Appropriate
• This is a big old no
                                                                                XML
<activity android:screenOrientation="portrait">



• This is will definitely get you filtered out of the results
                                                                                XML
<uses-feature
   android:name="android.hardware.screen.portrait" android:required=”true” />



• Be careful how you use this, it’ll crash on GTV
                                                                                XML
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_POTRAIT);




                                                                                      29
Features Supported by GTV
• com.google.android.tv
• android.hardware.location
• android.hardware.location.network
• android.hardware.usb.host
• android.hardware.wifi
• android.software.live_wallpaper
• android.hardware.screen.landscape (API Level 13)




                                                     30
Publishing Checklist
• Tell Play that you don’t need touch events
                                                 XML
<uses-feature 
   android:name="android.hardware.touchscreen"
   android:required= “false” />



• Only targeting Google TV? No Problem
                                                 XML
<uses-feature 
   android:name="com.google.android.tv"
   android:required= “true” />




• Lastly . . . . Tell us about it <------- :)




                                                       31
Oh and the Play Store just got Native




                                        32
<Thank You!>
http://developers.google.com/tv/




mattgaunt@google.com
+matt gaunt
@gauntface
Developers

More Related Content

Viewers also liked

Kosteikko infoa 2012
Kosteikko infoa 2012Kosteikko infoa 2012
Kosteikko infoa 2012Layla Ahonen
 
Overview Of Jobhunt
Overview Of JobhuntOverview Of Jobhunt
Overview Of Jobhuntjswallace1
 
Wu - Surface topography investigation for niobium cavities and its implicatio...
Wu - Surface topography investigation for niobium cavities and its implicatio...Wu - Surface topography investigation for niobium cavities and its implicatio...
Wu - Surface topography investigation for niobium cavities and its implicatio...thinfilmsworkshop
 
Audiolingual method
Audiolingual methodAudiolingual method
Audiolingual methodPaula Chase
 
Call for paper journals 2013
Call for paper journals 2013Call for paper journals 2013
Call for paper journals 2013P singh
 
Bai 01 new
Bai 01 newBai 01 new
Bai 01 newdowsing
 
痛風者救星
痛風者救星痛風者救星
痛風者救星lys167
 

Viewers also liked (9)

Kosteikko infoa 2012
Kosteikko infoa 2012Kosteikko infoa 2012
Kosteikko infoa 2012
 
Overview Of Jobhunt
Overview Of JobhuntOverview Of Jobhunt
Overview Of Jobhunt
 
Wu - Surface topography investigation for niobium cavities and its implicatio...
Wu - Surface topography investigation for niobium cavities and its implicatio...Wu - Surface topography investigation for niobium cavities and its implicatio...
Wu - Surface topography investigation for niobium cavities and its implicatio...
 
Ferrnhills Royale Palace
Ferrnhills Royale Palace Ferrnhills Royale Palace
Ferrnhills Royale Palace
 
Audiolingual method
Audiolingual methodAudiolingual method
Audiolingual method
 
Call for paper journals 2013
Call for paper journals 2013Call for paper journals 2013
Call for paper journals 2013
 
04 Kids Katalog
04 Kids Katalog04 Kids Katalog
04 Kids Katalog
 
Bai 01 new
Bai 01 newBai 01 new
Bai 01 new
 
痛風者救星
痛風者救星痛風者救星
痛風者救星
 

Similar to OWF12/PAUG Conf Days Google tv part2 (commande and control) matt gaunt, advocate at google

Intro to Google TV
Intro to Google TVIntro to Google TV
Intro to Google TVGauntFace
 
Second Screen Apps - On Google TV
Second Screen Apps - On Google TVSecond Screen Apps - On Google TV
Second Screen Apps - On Google TVCarmen Delessio
 
Тестирование мобильных приложений используя облачные сервисы. TestDroid, Test...
Тестирование мобильных приложений используя облачные сервисы. TestDroid, Test...Тестирование мобильных приложений используя облачные сервисы. TestDroid, Test...
Тестирование мобильных приложений используя облачные сервисы. TestDroid, Test...COMAQA.BY
 
The Ring programming language version 1.10 book - Part 83 of 212
The Ring programming language version 1.10 book - Part 83 of 212The Ring programming language version 1.10 book - Part 83 of 212
The Ring programming language version 1.10 book - Part 83 of 212Mahmoud Samir Fayed
 
DEFCON 18- These Aren't the Permissions You're Looking For
DEFCON 18- These Aren't the Permissions You're Looking ForDEFCON 18- These Aren't the Permissions You're Looking For
DEFCON 18- These Aren't the Permissions You're Looking ForMichael Scovetta
 
Automation testing by Durgasoft in Hyderabad
Automation testing by Durgasoft in HyderabadAutomation testing by Durgasoft in Hyderabad
Automation testing by Durgasoft in HyderabadDurga Prasad
 
Automation testing material by Durgasoft,hyderabad
Automation testing material by Durgasoft,hyderabadAutomation testing material by Durgasoft,hyderabad
Automation testing material by Durgasoft,hyderabadDurga Prasad
 
[Android Codefest] Using the Second-Screen API & Intel® Wireless Display From...
[Android Codefest] Using the Second-Screen API & Intel® Wireless Display From...[Android Codefest] Using the Second-Screen API & Intel® Wireless Display From...
[Android Codefest] Using the Second-Screen API & Intel® Wireless Display From...BeMyApp
 
Building IoT Solutions using Windows IoT Core
Building IoT Solutions using Windows IoT CoreBuilding IoT Solutions using Windows IoT Core
Building IoT Solutions using Windows IoT CoreWinWire Technologies Inc
 
OAuth for QuickBooks Online REST Services
OAuth for QuickBooks Online REST ServicesOAuth for QuickBooks Online REST Services
OAuth for QuickBooks Online REST ServicesIntuit Developer
 
9781305078444 ppt ch10
9781305078444 ppt ch109781305078444 ppt ch10
9781305078444 ppt ch10Terry Yoast
 
Android Programming Basics
Android Programming BasicsAndroid Programming Basics
Android Programming BasicsEueung Mulyana
 
Synapseindia android application development tutorial
Synapseindia android application development tutorialSynapseindia android application development tutorial
Synapseindia android application development tutorialSynapseindiappsdevelopment
 
Synapseindia android apps development tutorial
Synapseindia android apps  development tutorialSynapseindia android apps  development tutorial
Synapseindia android apps development tutorialSynapseindiappsdevelopment
 
Getting your app on Android TV
Getting your app on Android TVGetting your app on Android TV
Getting your app on Android TVXavier Hallade
 
Mitigating data theft_in_android
Mitigating data theft_in_androidMitigating data theft_in_android
Mitigating data theft_in_androidRashmi Bhandari
 

Similar to OWF12/PAUG Conf Days Google tv part2 (commande and control) matt gaunt, advocate at google (20)

Intro to Google TV
Intro to Google TVIntro to Google TV
Intro to Google TV
 
Android101
Android101Android101
Android101
 
Google tv
Google tv Google tv
Google tv
 
Deep Inside Android Hacks
Deep Inside Android HacksDeep Inside Android Hacks
Deep Inside Android Hacks
 
Second Screen Apps - On Google TV
Second Screen Apps - On Google TVSecond Screen Apps - On Google TV
Second Screen Apps - On Google TV
 
Тестирование мобильных приложений используя облачные сервисы. TestDroid, Test...
Тестирование мобильных приложений используя облачные сервисы. TestDroid, Test...Тестирование мобильных приложений используя облачные сервисы. TestDroid, Test...
Тестирование мобильных приложений используя облачные сервисы. TestDroid, Test...
 
The Ring programming language version 1.10 book - Part 83 of 212
The Ring programming language version 1.10 book - Part 83 of 212The Ring programming language version 1.10 book - Part 83 of 212
The Ring programming language version 1.10 book - Part 83 of 212
 
DEFCON 18- These Aren't the Permissions You're Looking For
DEFCON 18- These Aren't the Permissions You're Looking ForDEFCON 18- These Aren't the Permissions You're Looking For
DEFCON 18- These Aren't the Permissions You're Looking For
 
Automation testing by Durgasoft in Hyderabad
Automation testing by Durgasoft in HyderabadAutomation testing by Durgasoft in Hyderabad
Automation testing by Durgasoft in Hyderabad
 
Automation testing material by Durgasoft,hyderabad
Automation testing material by Durgasoft,hyderabadAutomation testing material by Durgasoft,hyderabad
Automation testing material by Durgasoft,hyderabad
 
[Android Codefest] Using the Second-Screen API & Intel® Wireless Display From...
[Android Codefest] Using the Second-Screen API & Intel® Wireless Display From...[Android Codefest] Using the Second-Screen API & Intel® Wireless Display From...
[Android Codefest] Using the Second-Screen API & Intel® Wireless Display From...
 
Building IoT Solutions using Windows IoT Core
Building IoT Solutions using Windows IoT CoreBuilding IoT Solutions using Windows IoT Core
Building IoT Solutions using Windows IoT Core
 
OAuth for QuickBooks Online REST Services
OAuth for QuickBooks Online REST ServicesOAuth for QuickBooks Online REST Services
OAuth for QuickBooks Online REST Services
 
9781305078444 ppt ch10
9781305078444 ppt ch109781305078444 ppt ch10
9781305078444 ppt ch10
 
Android Programming Basics
Android Programming BasicsAndroid Programming Basics
Android Programming Basics
 
Synapseindia android application development tutorial
Synapseindia android application development tutorialSynapseindia android application development tutorial
Synapseindia android application development tutorial
 
Synapseindia android apps development tutorial
Synapseindia android apps  development tutorialSynapseindia android apps  development tutorial
Synapseindia android apps development tutorial
 
citus™ iot ecosystem
citus™ iot ecosystemcitus™ iot ecosystem
citus™ iot ecosystem
 
Getting your app on Android TV
Getting your app on Android TVGetting your app on Android TV
Getting your app on Android TV
 
Mitigating data theft_in_android
Mitigating data theft_in_androidMitigating data theft_in_android
Mitigating data theft_in_android
 

More from Paris Open Source Summit

#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...
#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...
#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...Paris Open Source Summit
 
#OSSPARIS19 : A virtual machine approach for microcontroller programming : th...
#OSSPARIS19 : A virtual machine approach for microcontroller programming : th...#OSSPARIS19 : A virtual machine approach for microcontroller programming : th...
#OSSPARIS19 : A virtual machine approach for microcontroller programming : th...Paris Open Source Summit
 
#OSSPARIS19 : RIOT: towards open source, secure DevOps on microcontroller-bas...
#OSSPARIS19 : RIOT: towards open source, secure DevOps on microcontroller-bas...#OSSPARIS19 : RIOT: towards open source, secure DevOps on microcontroller-bas...
#OSSPARIS19 : RIOT: towards open source, secure DevOps on microcontroller-bas...Paris Open Source Summit
 
#OSSPARIS19 : The evolving (IoT) security landscape - Gianluca Varisco, Arduino
#OSSPARIS19 : The evolving (IoT) security landscape - Gianluca Varisco, Arduino#OSSPARIS19 : The evolving (IoT) security landscape - Gianluca Varisco, Arduino
#OSSPARIS19 : The evolving (IoT) security landscape - Gianluca Varisco, ArduinoParis Open Source Summit
 
#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...
#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...
#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...Paris Open Source Summit
 
#OSSPARIS19 : Detecter des anomalies de séries temporelles à la volée avec Wa...
#OSSPARIS19 : Detecter des anomalies de séries temporelles à la volée avec Wa...#OSSPARIS19 : Detecter des anomalies de séries temporelles à la volée avec Wa...
#OSSPARIS19 : Detecter des anomalies de séries temporelles à la volée avec Wa...Paris Open Source Summit
 
#OSSPARIS19 : Supervision d'objets connectés industriels - Eric DOANE, Zabbix
#OSSPARIS19 : Supervision d'objets connectés industriels - Eric DOANE, Zabbix#OSSPARIS19 : Supervision d'objets connectés industriels - Eric DOANE, Zabbix
#OSSPARIS19 : Supervision d'objets connectés industriels - Eric DOANE, ZabbixParis Open Source Summit
 
#OSSPARIS19: Introduction to scikit-learn - Olivier Grisel, Inria
#OSSPARIS19: Introduction to scikit-learn - Olivier Grisel, Inria#OSSPARIS19: Introduction to scikit-learn - Olivier Grisel, Inria
#OSSPARIS19: Introduction to scikit-learn - Olivier Grisel, InriaParis Open Source Summit
 
#OSSPARIS19 - Fostering disruptive innovation in AI with JEDI - André Loesekr...
#OSSPARIS19 - Fostering disruptive innovation in AI with JEDI - André Loesekr...#OSSPARIS19 - Fostering disruptive innovation in AI with JEDI - André Loesekr...
#OSSPARIS19 - Fostering disruptive innovation in AI with JEDI - André Loesekr...Paris Open Source Summit
 
#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches ...
#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches  ...#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches  ...
#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches ...Paris Open Source Summit
 
#OSSPARIS19 : MDPH : une solution collaborative open source pour l'instructio...
#OSSPARIS19 : MDPH : une solution collaborative open source pour l'instructio...#OSSPARIS19 : MDPH : une solution collaborative open source pour l'instructio...
#OSSPARIS19 : MDPH : une solution collaborative open source pour l'instructio...Paris Open Source Summit
 
#OSSPARIS19 - Understanding Open Source Governance - Gilles Gravier, Wipro Li...
#OSSPARIS19 - Understanding Open Source Governance - Gilles Gravier, Wipro Li...#OSSPARIS19 - Understanding Open Source Governance - Gilles Gravier, Wipro Li...
#OSSPARIS19 - Understanding Open Source Governance - Gilles Gravier, Wipro Li...Paris Open Source Summit
 
#OSSPARIS19 : Publier du code Open Source dans une banque : Mission impossibl...
#OSSPARIS19 : Publier du code Open Source dans une banque : Mission impossibl...#OSSPARIS19 : Publier du code Open Source dans une banque : Mission impossibl...
#OSSPARIS19 : Publier du code Open Source dans une banque : Mission impossibl...Paris Open Source Summit
 
#OSSPARIS19 : Libre à vous ! Raconter les libertés informatiques à la radio -...
#OSSPARIS19 : Libre à vous ! Raconter les libertés informatiques à la radio -...#OSSPARIS19 : Libre à vous ! Raconter les libertés informatiques à la radio -...
#OSSPARIS19 : Libre à vous ! Raconter les libertés informatiques à la radio -...Paris Open Source Summit
 
#OSSPARIS19 - Le logiciel libre : un enjeu politique et social - Etienne Gonn...
#OSSPARIS19 - Le logiciel libre : un enjeu politique et social - Etienne Gonn...#OSSPARIS19 - Le logiciel libre : un enjeu politique et social - Etienne Gonn...
#OSSPARIS19 - Le logiciel libre : un enjeu politique et social - Etienne Gonn...Paris Open Source Summit
 
#OSSPARIS19 - Conflits d’intérêt & concurrence : la place de l’éditeur dans l...
#OSSPARIS19 - Conflits d’intérêt & concurrence : la place de l’éditeur dans l...#OSSPARIS19 - Conflits d’intérêt & concurrence : la place de l’éditeur dans l...
#OSSPARIS19 - Conflits d’intérêt & concurrence : la place de l’éditeur dans l...Paris Open Source Summit
 
#OSSPARIS19 - Table ronde : souveraineté des données
#OSSPARIS19 - Table ronde : souveraineté des données #OSSPARIS19 - Table ronde : souveraineté des données
#OSSPARIS19 - Table ronde : souveraineté des données Paris Open Source Summit
 
#OSSPARIS19 - Comment financer un projet de logiciel libre - LUDOVIC DUBOST, ...
#OSSPARIS19 - Comment financer un projet de logiciel libre - LUDOVIC DUBOST, ...#OSSPARIS19 - Comment financer un projet de logiciel libre - LUDOVIC DUBOST, ...
#OSSPARIS19 - Comment financer un projet de logiciel libre - LUDOVIC DUBOST, ...Paris Open Source Summit
 
#OSSPARIS19 - BlueMind v4 : les dessous technologiques de 10 ans de travail p...
#OSSPARIS19 - BlueMind v4 : les dessous technologiques de 10 ans de travail p...#OSSPARIS19 - BlueMind v4 : les dessous technologiques de 10 ans de travail p...
#OSSPARIS19 - BlueMind v4 : les dessous technologiques de 10 ans de travail p...Paris Open Source Summit
 
#OSSPARIS19 - Tuto de première installation de VITAM, un système d'archivage ...
#OSSPARIS19 - Tuto de première installation de VITAM, un système d'archivage ...#OSSPARIS19 - Tuto de première installation de VITAM, un système d'archivage ...
#OSSPARIS19 - Tuto de première installation de VITAM, un système d'archivage ...Paris Open Source Summit
 

More from Paris Open Source Summit (20)

#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...
#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...
#OSSPARIS19 : Control your Embedded Linux remotely by using WebSockets - Gian...
 
#OSSPARIS19 : A virtual machine approach for microcontroller programming : th...
#OSSPARIS19 : A virtual machine approach for microcontroller programming : th...#OSSPARIS19 : A virtual machine approach for microcontroller programming : th...
#OSSPARIS19 : A virtual machine approach for microcontroller programming : th...
 
#OSSPARIS19 : RIOT: towards open source, secure DevOps on microcontroller-bas...
#OSSPARIS19 : RIOT: towards open source, secure DevOps on microcontroller-bas...#OSSPARIS19 : RIOT: towards open source, secure DevOps on microcontroller-bas...
#OSSPARIS19 : RIOT: towards open source, secure DevOps on microcontroller-bas...
 
#OSSPARIS19 : The evolving (IoT) security landscape - Gianluca Varisco, Arduino
#OSSPARIS19 : The evolving (IoT) security landscape - Gianluca Varisco, Arduino#OSSPARIS19 : The evolving (IoT) security landscape - Gianluca Varisco, Arduino
#OSSPARIS19 : The evolving (IoT) security landscape - Gianluca Varisco, Arduino
 
#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...
#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...
#OSSPARIS19: Construire des applications IoT "secure-by-design" - Thomas Gaza...
 
#OSSPARIS19 : Detecter des anomalies de séries temporelles à la volée avec Wa...
#OSSPARIS19 : Detecter des anomalies de séries temporelles à la volée avec Wa...#OSSPARIS19 : Detecter des anomalies de séries temporelles à la volée avec Wa...
#OSSPARIS19 : Detecter des anomalies de séries temporelles à la volée avec Wa...
 
#OSSPARIS19 : Supervision d'objets connectés industriels - Eric DOANE, Zabbix
#OSSPARIS19 : Supervision d'objets connectés industriels - Eric DOANE, Zabbix#OSSPARIS19 : Supervision d'objets connectés industriels - Eric DOANE, Zabbix
#OSSPARIS19 : Supervision d'objets connectés industriels - Eric DOANE, Zabbix
 
#OSSPARIS19: Introduction to scikit-learn - Olivier Grisel, Inria
#OSSPARIS19: Introduction to scikit-learn - Olivier Grisel, Inria#OSSPARIS19: Introduction to scikit-learn - Olivier Grisel, Inria
#OSSPARIS19: Introduction to scikit-learn - Olivier Grisel, Inria
 
#OSSPARIS19 - Fostering disruptive innovation in AI with JEDI - André Loesekr...
#OSSPARIS19 - Fostering disruptive innovation in AI with JEDI - André Loesekr...#OSSPARIS19 - Fostering disruptive innovation in AI with JEDI - André Loesekr...
#OSSPARIS19 - Fostering disruptive innovation in AI with JEDI - André Loesekr...
 
#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches ...
#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches  ...#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches  ...
#OSSPARIS19 : Comment ONLYOFFICE aide à organiser les travaux de recherches ...
 
#OSSPARIS19 : MDPH : une solution collaborative open source pour l'instructio...
#OSSPARIS19 : MDPH : une solution collaborative open source pour l'instructio...#OSSPARIS19 : MDPH : une solution collaborative open source pour l'instructio...
#OSSPARIS19 : MDPH : une solution collaborative open source pour l'instructio...
 
#OSSPARIS19 - Understanding Open Source Governance - Gilles Gravier, Wipro Li...
#OSSPARIS19 - Understanding Open Source Governance - Gilles Gravier, Wipro Li...#OSSPARIS19 - Understanding Open Source Governance - Gilles Gravier, Wipro Li...
#OSSPARIS19 - Understanding Open Source Governance - Gilles Gravier, Wipro Li...
 
#OSSPARIS19 : Publier du code Open Source dans une banque : Mission impossibl...
#OSSPARIS19 : Publier du code Open Source dans une banque : Mission impossibl...#OSSPARIS19 : Publier du code Open Source dans une banque : Mission impossibl...
#OSSPARIS19 : Publier du code Open Source dans une banque : Mission impossibl...
 
#OSSPARIS19 : Libre à vous ! Raconter les libertés informatiques à la radio -...
#OSSPARIS19 : Libre à vous ! Raconter les libertés informatiques à la radio -...#OSSPARIS19 : Libre à vous ! Raconter les libertés informatiques à la radio -...
#OSSPARIS19 : Libre à vous ! Raconter les libertés informatiques à la radio -...
 
#OSSPARIS19 - Le logiciel libre : un enjeu politique et social - Etienne Gonn...
#OSSPARIS19 - Le logiciel libre : un enjeu politique et social - Etienne Gonn...#OSSPARIS19 - Le logiciel libre : un enjeu politique et social - Etienne Gonn...
#OSSPARIS19 - Le logiciel libre : un enjeu politique et social - Etienne Gonn...
 
#OSSPARIS19 - Conflits d’intérêt & concurrence : la place de l’éditeur dans l...
#OSSPARIS19 - Conflits d’intérêt & concurrence : la place de l’éditeur dans l...#OSSPARIS19 - Conflits d’intérêt & concurrence : la place de l’éditeur dans l...
#OSSPARIS19 - Conflits d’intérêt & concurrence : la place de l’éditeur dans l...
 
#OSSPARIS19 - Table ronde : souveraineté des données
#OSSPARIS19 - Table ronde : souveraineté des données #OSSPARIS19 - Table ronde : souveraineté des données
#OSSPARIS19 - Table ronde : souveraineté des données
 
#OSSPARIS19 - Comment financer un projet de logiciel libre - LUDOVIC DUBOST, ...
#OSSPARIS19 - Comment financer un projet de logiciel libre - LUDOVIC DUBOST, ...#OSSPARIS19 - Comment financer un projet de logiciel libre - LUDOVIC DUBOST, ...
#OSSPARIS19 - Comment financer un projet de logiciel libre - LUDOVIC DUBOST, ...
 
#OSSPARIS19 - BlueMind v4 : les dessous technologiques de 10 ans de travail p...
#OSSPARIS19 - BlueMind v4 : les dessous technologiques de 10 ans de travail p...#OSSPARIS19 - BlueMind v4 : les dessous technologiques de 10 ans de travail p...
#OSSPARIS19 - BlueMind v4 : les dessous technologiques de 10 ans de travail p...
 
#OSSPARIS19 - Tuto de première installation de VITAM, un système d'archivage ...
#OSSPARIS19 - Tuto de première installation de VITAM, un système d'archivage ...#OSSPARIS19 - Tuto de première installation de VITAM, un système d'archivage ...
#OSSPARIS19 - Tuto de première installation de VITAM, un système d'archivage ...
 

OWF12/PAUG Conf Days Google tv part2 (commande and control) matt gaunt, advocate at google

  • 2. Command & Control ... in the Living Room Matthew Gaunt Developer Advocate
  • 3. Remote Control Mr. Leanback Favorite Beverage 3
  • 4. “ In the U.S., 88 percent of tablet owners and 86 percent of smartphone owners said they used their device while watching TV... ” Q4 2011 Survey of Connected Device Owners Nielsen Company
  • 5. Remote Control Smartphone Tablet? Ms. Multi-screen Laptop Snack 5
  • 6. Google TV User Study Average Number of Actively Used Connected Devices per Household with Google TV 6
  • 7. ~3 Smartphones Team More Typical Laptop Tablet
  • 8. People want to do more than just watch TV 8
  • 9. Able Remote Turn your Android device into a customized Google TV remote 9
  • 10. The Peel Smart Remote App Experience the magic of personalized TV with Peel Smart Remote 10
  • 11. Trivialist (Locomo Labs) Play live against everyone in your favorite sports bar! 11
  • 12. MOVL Android and web-based multi-screen apps and APIs the work with Google TV! Cloud Connect: Real-time connections over 3G and 4G Direct Connect: Direct connection over WiFi between mobile device and Google TV KontrolTV Platform/Controller: - Multi-screen - Multi-user - TV to TV collaboration - Auto-discovery - Android API for Google TV - JS API for Chrome 12
  • 13. The Anymote Protocol I can haz second screen.
  • 14. The Anymote Protocol The Anymote Protocol is a specification that defines how second screen apps securely send input events to first screen devices on the same network. Input events include: - Key events - Touch/mouse events - Android Intents There is an Anymote Protocol Service on all Google TV devices that receives and responds to Anymote messages. On Google TV, whichever app is in the foreground receives the Anymote events. 14
  • 15. Communication with the Anymote Protocol Client (2nd screen app) / Server (1st screen service) Communication Model 1. Discovery (mDNS) 2. Authentication and Pairing (Pairing Protocol) a. 2nd screen device sends pairing request to 1st screen device (Google TV) b. Google TV displays a challenge to the user c. Users enters challenge into 2nd screen device d. 2nd screen device sends challenge to Google TV e. Google TV returns a TLS key for encrypting messages 3. Sending Events (Anymote) 15
  • 16. The Google TV Anymote Library
  • 17. The Anymote Library Makes Anymote easy to use An Android Library that simplifies finding, pairing with, and sending events to Google TV using the Anymote Protocol 1. Implement the AnymoteClientService.ClientListener interface (3 methods) 2. Implement a ServiceConnection to attach your ClientListener to the AnymoreClientService 3. Bind to the AnymoteClientService service to initiate the pairing process 4. User an AnymoteSnder to send messages to Google TV using the Anymore Protocol 17
  • 18. Implement the ClientListener Interface Receive the AnymoteSender for sending messages to Google TV Java public class YourActivity extends Activity implements AnymoteClientService.ClientListener { private AnymoteSender anymoteSender; @Override public void onConnected(AnymoteSender anymoteSender) { this.anymoteSender = anymoteSender; // Save for sending messages } @Override public void onDisconnected() { ... } @Override public void onConnectionError() { ... } ... } 18
  • 19. Implement a ServiceConnection Attach your ClientListener to the AnymoteClientService Java private AnymoteClientService anymoteService; private ServiceConnection serviceConnection = new ServiceConnection() { public void onServiceConnected(ComponentName name, IBinder service) { anymoteService = ((AnymoteClientService.AnymoteClientServiceBinder) service).getService(); anymoteService.attachClientListener(YourActivity.this); // YourActivity is a ClientListener } public void onServiceDisconnected(ComponentName name) { anymoteService.detachClientListener(YourActivity.this); // Stop receiving notifications anymoteService = null; } }; 19
  • 20. Bind to the AnymoteClientService Begin the pairing process Java @Override public void onCreate(Bundle savedInstanceState) { ... Intent intent = new Intent(this, AnymoteClientService.class); bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE); } 20
  • 21. Send Messages with the AnymoteSender Java someButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { anymoteSender.sendKeyPress(KeyEvent.KEYCODE_DPAD_CENTER); } }); Java new TouchHandler(someView, Mode.POINTER, anymoteSender); Java Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(“http://www.google.com”)); anymoteSender.sendIntent(intent); Java Intent intent = new Intent(“com.example.yourapp.VIEW_ACTION”); anymoteSender.sendIntent(intent); 21
  • 23. The Anymote Protocol • Protocol Specifications: https://developers.google.com/tv/remote/ • Discovery handled by app: Google TV Remote[1] (or use JmDNS) • Pairing and Authentication: Pairing Protocol Reference Implementation [2] (UI in app) • Sending Events: Anymote Protocol Reference Implementation [3] • Pairing and Anymote Libraries use Protocol Buffers [4] (lite) for de/serializing data - Google TV Remote for Android: http://code.google.com/p/google-tv-remote/ - Pairing Protocol: http://code.google.com/p/google-tv-pairing-protocol/ - Anymote Protocol: http://code.google.com/p/anymote-protocol/ - Protocol Buffers: http://code.google.com/p/protobuf/ 23
  • 25. Fundamentals of Streaming Content • Custom Streaming support • Custom DRM support • Google I/O 2012 - Get Your Content Onto Google TV • http://www.youtube.com/watch?feature=player_embedded&v=bNbKpUqkOso 25
  • 26. More Goodies • QoS API’s - Allows you to detect frame rate, bandwidth, buffer size, buffer fill rate etc . . . • Smooth Streaming support • PlayReady Support 26
  • 29. We Filter Out Apps Where Appropriate • This is a big old no XML <activity android:screenOrientation="portrait"> • This is will definitely get you filtered out of the results XML <uses-feature android:name="android.hardware.screen.portrait" android:required=”true” /> • Be careful how you use this, it’ll crash on GTV XML setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_POTRAIT); 29
  • 30. Features Supported by GTV • com.google.android.tv • android.hardware.location • android.hardware.location.network • android.hardware.usb.host • android.hardware.wifi • android.software.live_wallpaper • android.hardware.screen.landscape (API Level 13) 30
  • 31. Publishing Checklist • Tell Play that you don’t need touch events XML <uses-feature  android:name="android.hardware.touchscreen" android:required= “false” /> • Only targeting Google TV? No Problem XML <uses-feature  android:name="com.google.android.tv" android:required= “true” /> • Lastly . . . . Tell us about it <------- :) 31
  • 32. Oh and the Play Store just got Native 32