This document discusses integrating an Android app with Chromecast. It covers the requirements for sender and receiver apps, the discovery and connection process, and data transmission. It also introduces the CastCompanionLibrary which handles common Chromecast functionality like playback controls and notifications.
Ich zeige die Konzeption, Designentwurf und Umsetzung von 3D-Spielen anhand eines Bundeswahl-Spiels mit Angie, Frank-Walter, Guido und Jack Sparrow, präsentiert auf dem 2. Stuttgarter Barcamp am 13.09.09
InGame-Video auf www.elaspix.de
The unconventional devices for the Android video streamingMatteo Bonifazi
Streaming video is not just through Android smartphone and tablet.
The 2014 was the year where Chromecast reached its brightness, getting into 4 millions living rooms. The 2015 instead is the year of the Android TV, the Google way “to smart” the TV.
This talk we’ll give you an overview about the streaming in Android. Starting from video streaming on mobile devices, we will guide you into the evolution of the development through Chromecast up to Android TV.
Matteo Bonifazi and Alessandro Martellucci will be illustrating this talk with their experiences developing mobile television applications for the main Italian broadcaster providers.
Streaming video is not just through Android smartphone and tablet.
The 2014 was the year where Chromecast reached its brightness, getting into 4 millions living rooms. The 2015 instead is the year of the Android TV, the Google way “to smart” the TV.
This talk we’ll give you an overview about the streaming in Android. Starting from video streaming on mobile devices, we will guide you into the evolution of the development through Chromecast up to Android TV.
Matteo Bonifazi and Alessandro Martellucci will be illustrating this talk with their experiences developing mobile television applications for the main Italian broadcaster providers.
Ich zeige die Konzeption, Designentwurf und Umsetzung von 3D-Spielen anhand eines Bundeswahl-Spiels mit Angie, Frank-Walter, Guido und Jack Sparrow, präsentiert auf dem 2. Stuttgarter Barcamp am 13.09.09
InGame-Video auf www.elaspix.de
The unconventional devices for the Android video streamingMatteo Bonifazi
Streaming video is not just through Android smartphone and tablet.
The 2014 was the year where Chromecast reached its brightness, getting into 4 millions living rooms. The 2015 instead is the year of the Android TV, the Google way “to smart” the TV.
This talk we’ll give you an overview about the streaming in Android. Starting from video streaming on mobile devices, we will guide you into the evolution of the development through Chromecast up to Android TV.
Matteo Bonifazi and Alessandro Martellucci will be illustrating this talk with their experiences developing mobile television applications for the main Italian broadcaster providers.
Streaming video is not just through Android smartphone and tablet.
The 2014 was the year where Chromecast reached its brightness, getting into 4 millions living rooms. The 2015 instead is the year of the Android TV, the Google way “to smart” the TV.
This talk we’ll give you an overview about the streaming in Android. Starting from video streaming on mobile devices, we will guide you into the evolution of the development through Chromecast up to Android TV.
Matteo Bonifazi and Alessandro Martellucci will be illustrating this talk with their experiences developing mobile television applications for the main Italian broadcaster providers.
Businesses large and small are fast realizing the importance of big data and are investing huge amounts of time and money to gather it. For retailers, the ROI potential from unified big data collection is exponential. After all, retailers collect online sales data, mobile and apps data, customer footfall data, as well as enterprise integration's for loyalty, CRM and ERP.
Beacons provide businesses with endless opportunities to collect massive amounts of untapped data, such as the number of beacon hits and customer dwell time at a particular location within a specified time and date range, busiest hours throughout the day or week, number of people who walk by a location each day, etc. This data then allows retailers to accordingly make improvements to products, staff allocation in various departments and services, and so on.
Attend this session to understand how Android mobiles can make use of beacons and big data analysis to provide customer a better user experience. We will share our experience of working with beacons showing a use case study around retail stores in India.
viWave Study Group - Introduction to Google Android Development - Chapter 23 ...Ted Chien
My study group slide in 2009 for Google Android Development, describing the following topics:
Designing the Obvious,
Resources and Internationalization,
Orientation,
Adapter,
In this tutorial we will review one of the basic app components
in Android - the BroadcastReceiver. The BroadcastReceiver
for subscribing your Android app for events in clean and
simple publisher-subscriber pattern.
This presentation has been developed in the context of the Mobile Applications Development course, DISIM, University of L'Aquila (Italy), Spring 2016.
http://www.ivanomalavolta.com
Le temps est révolu où Java EE ne serait qu’à développer des applications de mise à jour de données, avec JSF / EJB / JPA. Aujourd’hui Java EE s’est assoupli et s’est ouvert sur le monde, avec CDI comme clé de voûte et a repoussé nos limites grâce à des capacités d’extension puissantes et faciles d’utilisation comme JCA.
Dans un premier temps, nous reviendrons rapidement sur la place de CDI dans JavaEE 7 et sur ses mécanismes d’extension. Dans un deuxième temps, nous verrons les techniques de connecteurs JCA et comment ils peuvent aussi constituer une possibilité d’ouverture simple à mettre en œuvre. JCA fournit des techniques pour gérer des connexions sortantes ou entrantes, sur des formats ou protocoles variés.
Businesses large and small are fast realizing the importance of big data and are investing huge amounts of time and money to gather it. For retailers, the ROI potential from unified big data collection is exponential. After all, retailers collect online sales data, mobile and apps data, customer footfall data, as well as enterprise integration's for loyalty, CRM and ERP.
Beacons provide businesses with endless opportunities to collect massive amounts of untapped data, such as the number of beacon hits and customer dwell time at a particular location within a specified time and date range, busiest hours throughout the day or week, number of people who walk by a location each day, etc. This data then allows retailers to accordingly make improvements to products, staff allocation in various departments and services, and so on.
Attend this session to understand how Android mobiles can make use of beacons and big data analysis to provide customer a better user experience. We will share our experience of working with beacons showing a use case study around retail stores in India.
viWave Study Group - Introduction to Google Android Development - Chapter 23 ...Ted Chien
My study group slide in 2009 for Google Android Development, describing the following topics:
Designing the Obvious,
Resources and Internationalization,
Orientation,
Adapter,
In this tutorial we will review one of the basic app components
in Android - the BroadcastReceiver. The BroadcastReceiver
for subscribing your Android app for events in clean and
simple publisher-subscriber pattern.
This presentation has been developed in the context of the Mobile Applications Development course, DISIM, University of L'Aquila (Italy), Spring 2016.
http://www.ivanomalavolta.com
Le temps est révolu où Java EE ne serait qu’à développer des applications de mise à jour de données, avec JSF / EJB / JPA. Aujourd’hui Java EE s’est assoupli et s’est ouvert sur le monde, avec CDI comme clé de voûte et a repoussé nos limites grâce à des capacités d’extension puissantes et faciles d’utilisation comme JCA.
Dans un premier temps, nous reviendrons rapidement sur la place de CDI dans JavaEE 7 et sur ses mécanismes d’extension. Dans un deuxième temps, nous verrons les techniques de connecteurs JCA et comment ils peuvent aussi constituer une possibilité d’ouverture simple à mettre en œuvre. JCA fournit des techniques pour gérer des connexions sortantes ou entrantes, sur des formats ou protocoles variés.
1. Integrando sua app
Android com
Chromecast
Athila Santos
athila@ciandt.com
2. Formado em Engenharia da Computação pela
Universidade Federal de Itajubá em 2007. Trabalho
com desenvolvimento Mobile desde então e com
Android desde 2009 (Android 1.5)
26
49. Descoberta de dispositivos: Media Router Selector
public class MediaRouterPlaybackActivity extends ActionBarActivity {
private MediaRouteSelector mSelector;
@Override
protected void onCreate(Bundle savedInstanceState) {
(...)
// Create a route selector for the type of routes your app supports.
mSelector = new MediaRouteSelector.Builder()
// These are the framework-supported intents
.addControlCategory(MediaControlIntent.CATEGORY_LIVE_AUDIO)
.addControlCategory(MediaControlIntent.CATEGORY_LIVE_VIDEO)
.addControlCategory(MediaControlIntent.CATEGORY_REMOTE_PLAYBACK)
.build();
(...)
}
}
50. Descoberta de dispositivos: Media Router Selector
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
// Inflate the menu and configure the media router action provider.
getMenuInflater().inflate(R.menu.sample_media_router_menu, menu);
// Attach the MediaRouteSelector to the menu item
MenuItem mediaRouteMenuItem = menu.findItem(R.id.media_route_menu_item);
MediaRouteActionProvider mediaRouteActionProvider =
(MediaRouteActionProvider) MenuItemCompat.getActionProvider(mediaRouteMenuItem);
mediaRouteActionProvider.setRouteSelector(mSelector);
// Return true to show the menu.
return true;
}
51. Sender app: Os passos para o sucesso...
1. Descoberta de dispositivos
2. Gerenciamento de sessão
3. Transimissão de dados
52. Sender app: Os passos para o sucesso...
1. Descoberta de dispositivos
2. Gerenciamento de sessão
3. Transimissão de dados
53. Gerenciamento de sessão: Media Router Callback
private final MediaRouter.Callback mMediaRouterCallback = new MediaRouter.Callback() {
@Override
public void onRouteSelected(MediaRouter router, RouteInfo route) {
}
@Override
public void onRouteUnselected(MediaRouter router, RouteInfo route) {
}
@Override
public void onRoutePresentationDisplayChanged(MediaRouter router, RouteInfo route) {
}
}
54. Gerenciamento de sessão: Media Router Callback
public class MediaRouterPlaybackActivity extends ActionBarActivity {
protected void onCreate(Bundle savedInstanceState) {
mMediaRouter = MediaRouter.getInstance(this);
}
public void onStart() {
mMediaRouter.addCallback(mSelector, mMediaRouterCallback,
MediaRouter.CALLBACK_FLAG_REQUEST_DISCOVERY);
}
public void onStop() {
mMediaRouter.removeCallback(mMediaRouterCallback);
super.onStop();
}
}
55. Gerenciamento de sessão: Media Router Callback
public class MediaRouterPlaybackActivity extends ActionBarActivity {
protected void onCreate(Bundle savedInstanceState) {
mMediaRouter = MediaRouter.getInstance(this);
}
public void onStart() {
mMediaRouter.addCallback(mSelector, mMediaRouterCallback,
MediaRouter.CALLBACK_FLAG_REQUEST_DISCOVERY);
}
public void onStop() {
mMediaRouter.removeCallback(mMediaRouterCallback);
super.onStop();
}
}
56. Gerenciamento de sessão: Media Router Callback
public class MediaRouterPlaybackActivity extends ActionBarActivity {
protected void onCreate(Bundle savedInstanceState) {
mMediaRouter = MediaRouter.getInstance(this);
}
public void onStart() {
mMediaRouter.addCallback(mSelector, mMediaRouterCallback,
MediaRouter.CALLBACK_FLAG_REQUEST_DISCOVERY);
}
public void onStop() {
mMediaRouter.removeCallback(mMediaRouterCallback);
super.onStop();
}
}
57. Sender app: Os passos para o sucesso...
1. Descoberta de dispositivos
2. Gerenciamento de sessão
3. Transimissão de dados
58. Sender app: Os passos para o sucesso...
1. Descoberta de dispositivos
2. Gerenciamento de sessão
3. Transimissão de dados
59. Sender app: Os passos para o sucesso...
1. Descoberta de dispositivos
2. Gerenciamento de sessão
3. Transimissão de dados
60. Transmissão de dados: Mensagem genérica
Cast.CastApi.sendMessage (com.google.android.gms.common.api.GoogleApiClient, NAMESPACE, message)
.setResultCallback (
new ResultCallback<Status>() {
@Overridepublic void onResult(Status result) {
if (!result.isSuccess()) {
Log.e(TAG, "Sending message failed");
}
}
});
61. Transmissão de dados: Remote playback
protected void onCreate(Bundle savedInstanceState) {
Bundle mediaInfo = new Bundle();
mediaInfo.putString(MediaMetadata.KEY_TITLE, "Big Buck Bunny");
mediaInfo.putString(MediaMetadata.KEY_SUBTITLE, "Blender Foundation");
mediaInfo.putString(MediaMetadata.KEY_STUDIO, "Fusce id nisi turpis. Praesent viverra
bibendum semper. Donec tristique, orci");
(...)
}
62. Transmissão de dados: Remote playback
public void onRouteSelected(MediaRouter router, RouteInfo route) {
mRemotePlaybackClient = new RemotePlaybackClient(this, route);
mRemotePlaybackClient.play(Uri.parse("http://meu_video.mp4"),
"video/mp4", mediaInfo, 0, null, new ItemActionCallback() {
@Override
public void onResult(Bundle data, String sessionId, MediaSessionStatus sessionStatus,
String itemId, MediaItemStatus itemStatus) {
logStatus("play: succeeded for item " + itemId);
}
@Override
public void onError(String error, int code, Bundle data) {
}
});
}