Meetup live code_wear_2015

38
Développer une application Wear facilement !

Transcript of Meetup live code_wear_2015

Développer une application Wear facilement !

Twitter : @florent_champ

Présentation

Github : @florent37

MaterialViewPager Tutos Android

DaVinci

Emmet

WearMenu

PicassoPalette

MaterialImageLoading

Présentation

Projet francetv Info

Présentation

Projet francetv Info

Présentation

Projet francetv Info

Présentation

Problématiques

Projet Smartphone :

▸ Appels de Webservices : Retofit

▸ Charger des images depuis une URL : Picasso

Problématiques

String WEBSERVICE_URL = “api.github.com”

public interface GithubService{

@GET(“/users/{user}/repos)

List<Repo> listRepos(@Path(“user”) String user)

}

Retrofit

RestAdapter restAdapter = new RestAdapter.Builder()

.setEndpoint(WEBSERVICE_URL)

.build();

GitHubService service = restAdapter.create(GitHubService.class);

List<Repo> repos = service.listRepos(“florent37);

Retrofit

Retrofit

GET api.github.com/users/florent37/repos

public interface GithubService{

@GET(“/users/{user}/repos)

List<Repo> listRepos(@Path(“user”) String user)

}

Retrofit

200 OK{

"id": 34533286,

"name": "MaterialViewPager",

"full_name": "florent37/MaterialViewPager",

"owner": {

...

}

public interface GithubService{

@GET(“/users/{user}/repos)

List<Repo> listRepos(@Path(“user”) String user)

}

Retrofit

JSON -> List<Repo> repos

onSuccess(repos)

public interface GithubService{

@GET(“/users/{user}/repos)

List<Repo> listRepos(@Path(“user”) String user)

}

Picasso.with(context) .load(“http://i.imgur.com/DvpvklR.png”) .into(imageView);

Picasso

Picasso

GET http://i.imgur.com/DvpvklR.png

Picasso.with(context) .load(“http://i.imgur.com/DvpvklR.png”) .into(imageView);

Picasso Picasso.with(context) .load(“http://i.imgur.com/DvpvklR.png”) .into(imageView);

200 OKImage au format png :

010101011111000111011001101010101011010101010001010101011100110101010101010101101011101110101010100001110...

Picasso Picasso.with(context) .load(“http://i.imgur.com/DvpvklR.png”) .into(imageView);

PNG -> Bitmap

imageView.setDrawable(bitmap)

Impossible d’ouvrir des connexions HTTP

Échange de données en utilisant les Google Play Services

Transport de données via bluetooth

Android Wear

Image downloading and caching library for Android Wear

DaVinci

Image downloading and caching library for Android Wear

DaVinci.with(context) .load(“http://i.imgur.com/DvpvklR.png”) .into(imageView);

DaVinci

load http://i.imgur.com/DvpvklR.png

DaVinci.with(context) .load(“http://i.imgur.com/DvpvklR.png”) .into(imageView);

DaVinci

Picassohttp://i.imgur.com/DvpvklR.png

DaVinci.with(context) .load(“http://i.imgur.com/DvpvklR.png”) .into(imageView);

DaVinci

DaVinciDaemon

DaVinci.with(context) .load(“http://i.imgur.com/DvpvklR.png”) .into(imageView);

DaVinci

loaded http://i.imgur.com/DvpvklR.png

010101011111000111011001101010101011010101010001010101011100110101010101010101101011101110101010100001110...

DaVinciDaemon

DaVinci.with(context) .load(“http://i.imgur.com/DvpvklR.png”) .into(imageView);

DaVinci

binary -> Bitmap

imageView.setDrawable(bitmap)

DaVinciProblème : les FragmentGridAdapter

DaVinci

//le drawable affichée en background pour la ligne [row]@Overridepublic Drawable getBackgroundForRow(int row) { return Bitmap;}

DaVinci

//le drawable affichée en background pour la ligne [row]@Overridepublic Drawable getBackgroundForRow(int row) { return DaVinci.with(context).load(URL).into(this, row);}

Quel Problème ??

DaVinci

//le drawable affichée en background pour la cellule [row,column]@Overridepublic Drawable getBackgroundForRow(int row, int column) { return DaVinci.with(context).load(URL).into(this, row, column);}

Quel Problème ???

Protocol based data-transfer for Android Wear

Emmet

Protocol based data-transfer for Android Wear

public interface SmartphoneProtocol{

void pleaseSendMeRepos();

}

public interface WearProtocol{

void sendListRepos(String user, List<Repo> repos);

}

Emmet

SmartphoneProtocol

WearProtocol

public interface SmartphoneProtocol{

void pleaseSendMeRepos();

}

public interface WearProtocol{

void sendListRepos(String user, List<Repo> repos);

}

Emmet

WearModule :

SmartphoneProtocol sender = Emmet.createSender(SmartphoneProtocol.class);

sender.pleaseSendMeRepos();

SmartphoneModule :

Emmet.registerReceiver(new SmartphoneProtocol(){

void pleaseSendMeRepos(){

//Just do it

}

}

Emmet

SmartphoneModule :

WearProtocol sender = Emmet.createSender(WearProtocol.class);

sender.sendListRepos(“florent37”,repos);

WearModule :

Emmet.registerReceiver(new WearProtocol(){

void sendListRepos(String user, List<Repo> repos){

//display the repos

}

}

Emmet

Emmet

SmartphoneProtocolpleaseSendMeRepos()

SmartphoneProtocol sender = Emmet.createSender(SmartphoneProtocol.class);

sender.pleaseSendMeRepos();

SmartphoneProtocolpleaseSendMeRepos()

Emmet.registerReceiver(new SmartphoneProtocol(){

void pleaseSendMeRepos(){

//Just do it

}

}

Emmet

SmartphoneProtocolsendListRepos(String user, List<Repo> repos)

WearProtocol sender = Emmet.createSender(WearProtocol.class);

List<Repo> repos = service.listRepos(“florent37”);

sender.sendListRepos(“florent37”,repos);

Emmet

SmartphoneProtocolsendListRepos(String user, List<Repo> repos)

Emmet.registerReceiver(new WearProtocol(){

void sendListRepos(String user, List<Repo> repos){

//display the repos

}

}

Emmet