63
Chromecast Ivan de Aguirre @IvAguirre [email protected] Seu aplicativo na TV

MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

  • Upload
    dextra

  • View
    169

  • Download
    3

Embed Size (px)

DESCRIPTION

Com o Chromecast aplicativos Android, iOS e Chrome agora podem interagir com a TV. Vamos explorar as novas possibilidades que se abrem e os primeiros passos para seu aplicativo se beneficiar da tela grande. -- Palestra realizada por Ivan de Aguirre no MobCamp 2014

Citation preview

Page 1: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Chromecast

Ivan de Aguirre @IvAguirre

[email protected]

Seu aplicativo na TV

Page 2: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Cast

Page 3: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre
Page 4: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Sender:

Page 5: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Sender:Android, iOS, Chrome App

Page 6: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Receiver:Sender:

Android, iOS, Chrome App

Page 7: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Receiver:HTML5Sender:

Android, iOS, Chrome App

Page 8: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre
Page 9: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre
Page 10: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre
Page 11: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Workflow

Page 12: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Workflow• Descobrir o Chromecast.

Page 13: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Workflow• Descobrir o Chromecast.• Definir CC como a Rota.

Page 14: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Workflow• Descobrir o Chromecast.• Definir CC como a Rota.• Iniciar uma Sessão (session ID).

Page 15: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Workflow• Descobrir o Chromecast.• Definir CC como a Rota.• Iniciar uma Sessão (session ID).• CC carrega o Receiver (app ID).

Page 16: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre
Page 17: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

• Envio de mensagens ao CC através de um Canal.

Page 18: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

• Envio de mensagens ao CC através de um Canal.

• Callbacks.

Page 19: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

O que enviar para o Receiver pelos Canais?

Page 20: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

O que enviar para o Receiver pelos Canais?

Texto (Custom Channel)

Page 21: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

O que enviar para o Receiver pelos Canais?

Texto (Custom Channel)

URL e Metadados: Fotos, Vídeos, etc. (Media Chanel)

Page 22: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Posso enviar conteúdo diretamente pelo Media Channel?

Page 23: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Posso enviar conteúdo diretamente pelo Media Channel?

Precisa iniciar um Web Server no

Dispositivo :/

Page 24: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Antes de tudo…

Page 25: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Antes de tudo…

developers.google.com/cast

Page 26: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Antes de tudo…

developers.google.com/cast

User Experience Guidelines

Page 27: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Antes de tudo…

developers.google.com/cast

User Experience Guidelines

Design Checklist

Page 28: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Implementando um Android Sender

Page 29: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Implementando um Android Sender

com.android.support:appcompat-v7:20.+

Page 30: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Implementando um Android Sender

com.android.support:appcompat-v7:20.+

Page 31: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Implementando um Android Sender

com.android.support:appcompat-v7:20.+

com.android.support:mediarouter-v7:20.+

Page 32: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Implementando um Android Sender

com.android.support:appcompat-v7:20.+

com.android.support:mediarouter-v7:20.+

Page 33: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Implementando um Android Sender

com.android.support:appcompat-v7:20.+

com.android.support:mediarouter-v7:20.+

com.google.android.gms:play-services:+

Page 34: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Implementando um Android Sender

Page 35: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Implementando um Android Sender• Botão de Cast na Action Bar.

Page 36: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Implementando um Android Sender• Botão de Cast na Action Bar.

• Media Router API e Google Services API: Callbacks, Callbacks everywhere!!

Page 37: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Implementando um Android Sender• Botão de Cast na Action Bar.

• Media Router API e Google Services API: Callbacks, Callbacks everywhere!!

• Gerenciar estado da Sessão. Ex.: recriação da Activity, destruição da

Activity, kill do processo, oscilações na conexão Wifi, etc..

Page 38: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Implementando um Android Sender• Botão de Cast na Action Bar.

• Media Router API e Google Services API: Callbacks, Callbacks everywhere!!

• Gerenciar estado da Sessão. Ex.: recriação da Activity, destruição da

Activity, kill do processo, oscilações na conexão Wifi, etc..

• Dica 1: se for uma Activity só mantenha os objetos pertinentes em um

Fragment com setRetainInstance(true).

Page 39: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Implementando um Android Sender• Botão de Cast na Action Bar.

• Media Router API e Google Services API: Callbacks, Callbacks everywhere!!

• Gerenciar estado da Sessão. Ex.: recriação da Activity, destruição da

Activity, kill do processo, oscilações na conexão Wifi, etc..

• Dica 1: se for uma Activity só mantenha os objetos pertinentes em um

Fragment com setRetainInstance(true).

• Dica 2: várias Activity use um Foreground Service ou um Objeto com dados

static.

Page 40: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Implementando um Android Sender• Botão de Cast na Action Bar.

• Media Router API e Google Services API: Callbacks, Callbacks everywhere!!

• Gerenciar estado da Sessão. Ex.: recriação da Activity, destruição da

Activity, kill do processo, oscilações na conexão Wifi, etc..

• Dica 1: se for uma Activity só mantenha os objetos pertinentes em um

Fragment com setRetainInstance(true).

• Dica 2: várias Activity use um Foreground Service ou um Objeto com dados

static.

Page 41: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Implementando um Android Sender• Botão de Cast na Action Bar.

• Media Router API e Google Services API: Callbacks, Callbacks everywhere!!

• Gerenciar estado da Sessão. Ex.: recriação da Activity, destruição da

Activity, kill do processo, oscilações na conexão Wifi, etc..

• Dica 1: se for uma Activity só mantenha os objetos pertinentes em um

Fragment com setRetainInstance(true).

• Dica 2: várias Activity use um Foreground Service ou um Objeto com dados

static.

github.com/googlecast/CastCompanionLibrary-android

Page 42: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

CastCompanionLibrary Ex!

private VideoCastManager mVideoCastMgr;!!

protected void onCreate(Bundle ! savedState){! (…) ! ! mVideoCastMgr.reconnectSessionIfPossible(! this, true, 5 /*seconds*/);!}!!

Page 43: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

CastCompanionLibrary ExDbxChooser.Result result = new DbxChooser.Result(data);!Uri link = result.getLink();!!MediaMetadata mediaMetadata =! new MediaMetadata(MediaMetadata.MEDIA_TYPE_MOVIE);!mediaMetadata.putString(MediaMetadata.KEY_TITLE, ! result.getName());!mediaMetadata.putString(MediaMetadata.KEY_SUBTITLE,! "Some text");!(…)!MediaInfo mediaInfo = new MediaInfo.Builder(link.toString())! .setContentType("video/mp4")! .setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)! .setMetadata(mediaMetadata)! .build();!!mVideoCastMgr! .startCastControllerActivity(this, mediaInfo, 0, true);!

Page 44: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Receiver

Page 45: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Receiver• Default Receiver

Page 46: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Receiver• Default Receiver

• Styled Media Receiver

Page 47: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Receiver• Default Receiver

• Styled Media Receiver

• Custom Receiver

Page 48: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Receiver• Default Receiver

• Styled Media Receiver

• Custom Receiver

• cast.google.com/publish

Page 49: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Styled Receiver

Page 50: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Custom Receiver<html>!<head>! <title>Example minimum receiver</title>! <script src="//www.gstatic.com/cast/sdk/libs/receiver/2.0.0/cast_receiver.js"></script>!</head>!<body>! <video id='media'/>! <script>! window.onload = function() {! window.mediaElement = document.getElementById('media');! window.mediaManager = new ! cast.receiver.MediaManager(window.mediaElement);! window.castReceiverManager = ! cast.receiver.CastReceiverManager.getInstance();! window.castReceiverManager.start();! }! </script>!</body>!

Page 51: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Mirror & Presentation

Page 52: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Mirror

Page 53: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Mirror

Page 54: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Presentation

Page 55: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Presentation• É preciso estar em Mirror.

Page 56: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Presentation• É preciso estar em Mirror.

• Layout exibido somente na

tela de Mirror.

Page 57: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre
Page 58: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

class DemoPresentation extends Presentation {!!

public DemoPresentation(Context context, ! Display display) {! super(context, display);! }!!

@Override! protected void onCreate(Bundle savedState{! super.onCreate(savedInstanceState);! setContentView(R.layout.test_secondary);! (…)! }

Page 59: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

RouteInfo route = mMediaRouter.getSelectedRoute(! MediaRouter.ROUTE_TYPE_LIVE_VIDEO);! Display presentationDisplay =! route != null ? route.getPresentationDisplay() : null;!! if (mPresentation != null! && mPresentation.getDisplay() != presentationDisplay) {! mPresentation.dismiss();! mPresentation = null;! }!! if (mPresentation == null && presentationDisplay != null) {! mPresentation = new DemoPresentation(this, ! presentationDisplay);! mPresentation.setOnDismissListener(mOnDismissListener);! try {! mPresentation.show();! } catch (WindowManager.InvalidDisplayException ex){! Log.w(TAG, "Display was removed.", ex);! mPresentation = null;! }! }

Page 60: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Lembrando…

iOS

Google Chrome

Page 61: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Mãos à Obra!!

developers.google.com/cast

github.com/googlecast

github.com/ivan-aguirre/chromecast_samples

Comunidade G+: Google Cast Developers

Page 62: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Obrigado!!

@IvAguirre

[email protected]

Page 63: MobCamp 2014 :: Chromecast seu aplicativo na TV - Ivan de Aguirre

Cast your question :)