Cette conférence vous expliquera en détail pourquoi mettre en place cette authentification et surtout comment la mettre en place.
Vous découvrirez ainsi:
la console des GoogleService,
comment utiliser l’objet PlusClient et ConnectionResult pour gérer l’identification de votre utilisateur,
comment mettre en place la « magic connexion » et la « manual connexion »,
comment mettre en place cette authentification au sein du cycle de vie de votre application,
comment charger le graphe social de l’utilisateur, faire des posts interactifs et des « application activities »…
Un grand moment pour tous ceux qui se demandent encore quelle est la meilleure stratégie pour authentifier son utilisateur.
Cette conférence s’associe:
d’un tutorial que vous pouvez retrouver sur GitHub: SignInWithGoogleTutorial(https://github.com/MathiasSeguy-Android2EE/SignInWithGoogleTutorial) sur GitHub.
d’une application mettant en place cette authentification que vous pouvez retrouver sur GooglePlay: MyPublicGoogleProfile (https://play.google.com/store/apps/details?id=com.android2ee.project.gplus.signin.publicid&hl=fr).
Et bien sûr la conférence va être disponible sur Android2EE dès le Vendredi 20 au rayon OpenResource\Conférences.
Vous aussi, authentifiez vos utilisateurs, inter-agissez avec eux et simplifiez leur la vie:
En espérant que vous y découvrirez votre bonheur :) .
La conférence « ProTips » de Mathias Seguy (Android2EE).
Cette conférence a eu lieu lors du BarCamp de la DroidCon Paris, Lundi 17 Juin 2013.
Si vous êtes un JUG ou un AUG et que cette conférence vous interesse, n'hésitez pas à me contacter.
Si vous souhaitez apprendre la technologie Android, contacter moi: mathias.seguy@android2ee.com, je suis formateur Android et les formations Android que je dispense sont exceptionnelles.
Speaker:Mathias est le fondateur de la société Android2ee spécialisée dans la technologie Android.
Il est :
• formateur Android,
• expert logiciel Android,
• speaker Android sur de grandes conférences Java : AndroidCon, Devoxx France, Eclipse Day Toulouse, JCertif Africa, Toulouse JUG, CocoAhead,…
• Rédacteur Android sur Developpez.com ;
• Programmateur Android : MyLight, MyTorch, MySensors, JCertifMobile disponibles sur GooglePlay ;
• Docteur en Mathématiques Fondamentales et Ingénieur de l’ENSEEIHT ;
• Expert technique de l’agence nationale de la recherche française ;
Il présentera au cours de cette conférence sa vision sur la mise en place d’une architecture d’une application Android pertinente et partagera les meilleurs pro-tips (astuces de pro) de sa connaissance. A ne pas manquez.
Mathias Séguy
mathias.seguy@android2ee.com
Fondateur Android2EE
Formation – Expertise – Consulting Android.
Ebooks pour apprendre la programmation sous Android.
Mobile 2.0 Open Ideas WorkShop: Building Social Media Enabled Apps on AndroidAlberto Ruibal
We provide some examples on how to integrate social media on Android apps, from the simple “Share” button to more complex integrations like using Twitter, LinkedIn or Facebook APIs, including logging-in with social media.
As an example we developed a open source “Social Media Demo” application with all the examples in this presentation.
Modularizing a project is never easy, a lot of files to move and the dependencies between them is not always what we expect. Then the Dagger configuration used in a single module project often doesn't scale well to a multi module project. Hilt is opinionated about the configuration to use (we don't need to argue anymore about using component dependencies or subcomponents!) and this configuration works perfectly even in a multi module project. In this talk we'll see first an introduction to Hilt and a comparison with Dagger to understand why it's easier to configure. Then we'll see how to leverage it in a multi module project (both in a standard layered architecture and in a Clean Architecture that uses the Dependency Inversion) to improve build speed and code testability. Spoiler alert: using sample apps that include a single feature in the app helps a lot!
La conférence « ProTips » de Mathias Seguy (Android2EE).
Cette conférence a eu lieu lors du BarCamp de la DroidCon Paris, Lundi 17 Juin 2013.
Si vous êtes un JUG ou un AUG et que cette conférence vous interesse, n'hésitez pas à me contacter.
Si vous souhaitez apprendre la technologie Android, contacter moi: mathias.seguy@android2ee.com, je suis formateur Android et les formations Android que je dispense sont exceptionnelles.
Speaker:Mathias est le fondateur de la société Android2ee spécialisée dans la technologie Android.
Il est :
• formateur Android,
• expert logiciel Android,
• speaker Android sur de grandes conférences Java : AndroidCon, Devoxx France, Eclipse Day Toulouse, JCertif Africa, Toulouse JUG, CocoAhead,…
• Rédacteur Android sur Developpez.com ;
• Programmateur Android : MyLight, MyTorch, MySensors, JCertifMobile disponibles sur GooglePlay ;
• Docteur en Mathématiques Fondamentales et Ingénieur de l’ENSEEIHT ;
• Expert technique de l’agence nationale de la recherche française ;
Il présentera au cours de cette conférence sa vision sur la mise en place d’une architecture d’une application Android pertinente et partagera les meilleurs pro-tips (astuces de pro) de sa connaissance. A ne pas manquez.
Mathias Séguy
mathias.seguy@android2ee.com
Fondateur Android2EE
Formation – Expertise – Consulting Android.
Ebooks pour apprendre la programmation sous Android.
Mobile 2.0 Open Ideas WorkShop: Building Social Media Enabled Apps on AndroidAlberto Ruibal
We provide some examples on how to integrate social media on Android apps, from the simple “Share” button to more complex integrations like using Twitter, LinkedIn or Facebook APIs, including logging-in with social media.
As an example we developed a open source “Social Media Demo” application with all the examples in this presentation.
Modularizing a project is never easy, a lot of files to move and the dependencies between them is not always what we expect. Then the Dagger configuration used in a single module project often doesn't scale well to a multi module project. Hilt is opinionated about the configuration to use (we don't need to argue anymore about using component dependencies or subcomponents!) and this configuration works perfectly even in a multi module project. In this talk we'll see first an introduction to Hilt and a comparison with Dagger to understand why it's easier to configure. Then we'll see how to leverage it in a multi module project (both in a standard layered architecture and in a Clean Architecture that uses the Dependency Inversion) to improve build speed and code testability. Spoiler alert: using sample apps that include a single feature in the app helps a lot!
Compose is stable, it's time to integrate it into our apps! But it can be harder than expected and there are some questions to answer. Can the same architecture of a View-based app be reused or should we change it? Should the Compose code be aware of the architecture at all? And should the non UI code be changed to start using Compose? What can be replaced with a Composable, only the layouts or also something else?
Probably the best answer to all these questions is “it depends”, in this talk we’ll see some reasons and how to leverage Compose and the other tools to create a good architecture. Compose is more than just a UI framework and it can seem appealing to use it in a big portion of an app, a good architecture can be useful to limit this portion and use it only when necessary.
Eclispe daytoulouse combining the power of eclipse with android_fr_1024_768_s...Mathias Seguy
Cette présentation a été donnée à l'Eclipse Day Toulouse 2012 par Android2EE - Mathias Seguy (1/2h).
L’objectif est de présenter l'utilisation du plugin Android pour eclipse, en particulier la Vue DDMS. Cette présentation se finit par la mise en place de la chasse d'une fuite mémoire dans un programme Android avec l'utilisation du Heap dump et du plugin MAT d'eclipse (Memory analysis Tool).
Cette présentation est une présentation d’Android2EE, entreprise spécialisée dans l’expertise, le consulting et la formation Android. Vous souhaitez apprendre la programmation Android, Android2EE vous accompagne au-travers ses EBooks ou ses formations.
Laissez moi vous raconter mon histoire concernant cette entreprise. En 2010, je me suis penché sur la technologie Android, j’ai écrit trois EBooks sur l’art de la programmation Android (disponible sur Android2EE). J’ai quitté ma précédente entreprise et j’ai créé l’entreprise Android2EE (Android To Enterprise Edition) dont l’objectif est la formation, l’expertise et le consulting Android. J’ai quelques contrats en tant que consultant et aussi en tant que formateur. J’ai monté un ensemble de formations Android pour les entreprises:
Formation Initiale : Devenir autonome (3j).
Formation Approfondissement (2j).
Formation Spécificité Tablette et Graphisme(2j).
Formation Applications complexes (2j).
Formation chef de projet - responsable technique (1j).
Formation Mutlimédia (2j).
Formation sur mesure (2 à 3j).
Je pratique ces formations en donnant des cours dans les universités et les écoles d’ingénieurs de Toulouse ainsi que dans de grandes conférences Java:
CESI-EXIA, EPITECH, Sup-Info, IUP ISI, InfoSup, IUP SI, IUP ISI, IngeSup, INSA
Et bien sûr: Devoxx France (LA conférence Java française de 2012), Mercredi 18 Avril 2012,
Et
JCertif Afrique 2012 (LA conférence Java du continent Africain) Septembre 2012 Conférence et Cours
Enfin, j’ai investi l’espace numérique, voici quelques uns des ces sites:
http://www.android2ee.com/
http://mathias-seguy.developpez.com/
http://blog.developpez.com/android2ee-mathias-seguy/
http://android2ee.blogspot.com/
La critique de mon livre « Android A Complete course » par developpez.com (dont je ne suis pas peu fier, quand même):
http://android.developpez.com/livres/#L9791090388000
J’ai des articles sur Developpez.com concernant Android.
Ah oui, j’oubliais, mon cv se trouve ici (si jamais) : http://mathias-seguy.developpez.com/MathiasSeguyCV201106/
How to build Vaadin apps with managed beans? How to use Spring or CDI with Vaadin? How to create abstractions that are powerful but abstract, How to do dependency inversion with Vaadin apps?
Mise en place de l'ActionBarCompat dans vos projets Android.Mathias Seguy
Petite conférence sur la mise en place de l'ActionBarCompat dans votre application Android avec:
Mise en place de l'ActionBarCompat
Ajout de MenuItem
Mise en place d'une ActionView de recherche
Mise en place de l'ActionMode.
ToulouseAndroidUserGroup du 5 Juin 2014
DroidConUk 2016 [Barcamp]
In this conference, I want to talk about treatments.
By treatments, I mean where and how do you implement your business logic, the way your application handles data, your global algorithms,
And to do that, I need first to talk you about Architecture. But in Android, when you say "Architecture" every boby answers MVP / MVVM / ... so we will first have a look to those patterns, from an history point of view then we will discover that we have missed some layer to split concerns accross the application.
So we will talk about layer architecture (yep, also known as N-Tier architecture).
So, we have a better idea of what a generic architecture should be, now let's apply it on Android: Let's talk about the application object, and the service services layer, in particular we'll dive into the problem "do our business services have to be implemented extending Service ?".
Then I talk to you about a ServiceManager, that we have to implement, to centralize the management of all your services and all your threads pools.
And some much more :)
Enjoy the talk,
Compose is stable, it's time to integrate it into our apps! But it can be harder than expected and there are some questions to answer. Can the same architecture of a View-based app be reused or should we change it? Should the Compose code be aware of the architecture at all? And should the non UI code be changed to start using Compose? What can be replaced with a Composable, only the layouts or also something else?
Probably the best answer to all these questions is “it depends”, in this talk we’ll see some reasons and how to leverage Compose and the other tools to create a good architecture. Compose is more than just a UI framework and it can seem appealing to use it in a big portion of an app, a good architecture can be useful to limit this portion and use it only when necessary.
Eclispe daytoulouse combining the power of eclipse with android_fr_1024_768_s...Mathias Seguy
Cette présentation a été donnée à l'Eclipse Day Toulouse 2012 par Android2EE - Mathias Seguy (1/2h).
L’objectif est de présenter l'utilisation du plugin Android pour eclipse, en particulier la Vue DDMS. Cette présentation se finit par la mise en place de la chasse d'une fuite mémoire dans un programme Android avec l'utilisation du Heap dump et du plugin MAT d'eclipse (Memory analysis Tool).
Cette présentation est une présentation d’Android2EE, entreprise spécialisée dans l’expertise, le consulting et la formation Android. Vous souhaitez apprendre la programmation Android, Android2EE vous accompagne au-travers ses EBooks ou ses formations.
Laissez moi vous raconter mon histoire concernant cette entreprise. En 2010, je me suis penché sur la technologie Android, j’ai écrit trois EBooks sur l’art de la programmation Android (disponible sur Android2EE). J’ai quitté ma précédente entreprise et j’ai créé l’entreprise Android2EE (Android To Enterprise Edition) dont l’objectif est la formation, l’expertise et le consulting Android. J’ai quelques contrats en tant que consultant et aussi en tant que formateur. J’ai monté un ensemble de formations Android pour les entreprises:
Formation Initiale : Devenir autonome (3j).
Formation Approfondissement (2j).
Formation Spécificité Tablette et Graphisme(2j).
Formation Applications complexes (2j).
Formation chef de projet - responsable technique (1j).
Formation Mutlimédia (2j).
Formation sur mesure (2 à 3j).
Je pratique ces formations en donnant des cours dans les universités et les écoles d’ingénieurs de Toulouse ainsi que dans de grandes conférences Java:
CESI-EXIA, EPITECH, Sup-Info, IUP ISI, InfoSup, IUP SI, IUP ISI, IngeSup, INSA
Et bien sûr: Devoxx France (LA conférence Java française de 2012), Mercredi 18 Avril 2012,
Et
JCertif Afrique 2012 (LA conférence Java du continent Africain) Septembre 2012 Conférence et Cours
Enfin, j’ai investi l’espace numérique, voici quelques uns des ces sites:
http://www.android2ee.com/
http://mathias-seguy.developpez.com/
http://blog.developpez.com/android2ee-mathias-seguy/
http://android2ee.blogspot.com/
La critique de mon livre « Android A Complete course » par developpez.com (dont je ne suis pas peu fier, quand même):
http://android.developpez.com/livres/#L9791090388000
J’ai des articles sur Developpez.com concernant Android.
Ah oui, j’oubliais, mon cv se trouve ici (si jamais) : http://mathias-seguy.developpez.com/MathiasSeguyCV201106/
How to build Vaadin apps with managed beans? How to use Spring or CDI with Vaadin? How to create abstractions that are powerful but abstract, How to do dependency inversion with Vaadin apps?
Mise en place de l'ActionBarCompat dans vos projets Android.Mathias Seguy
Petite conférence sur la mise en place de l'ActionBarCompat dans votre application Android avec:
Mise en place de l'ActionBarCompat
Ajout de MenuItem
Mise en place d'une ActionView de recherche
Mise en place de l'ActionMode.
ToulouseAndroidUserGroup du 5 Juin 2014
DroidConUk 2016 [Barcamp]
In this conference, I want to talk about treatments.
By treatments, I mean where and how do you implement your business logic, the way your application handles data, your global algorithms,
And to do that, I need first to talk you about Architecture. But in Android, when you say "Architecture" every boby answers MVP / MVVM / ... so we will first have a look to those patterns, from an history point of view then we will discover that we have missed some layer to split concerns accross the application.
So we will talk about layer architecture (yep, also known as N-Tier architecture).
So, we have a better idea of what a generic architecture should be, now let's apply it on Android: Let's talk about the application object, and the service services layer, in particular we'll dive into the problem "do our business services have to be implemented extending Service ?".
Then I talk to you about a ServiceManager, that we have to implement, to centralize the management of all your services and all your threads pools.
And some much more :)
Enjoy the talk,
Architecture et Bonnes pratiques Android #DevoxxFr2016 Part2Mathias Seguy
Depuis maintenant 7 ans que je développe sous Android, ma principale préoccupation a toujours été l'architecture.
Et si nous prenions quelques heures pour en discuter ?
Je vous propose une vision globale et synthétique s'appuyant sur des exemples concrets, sur les principes et conseils de référence des équipes Google et sur des modèles d'architecture (MVP/n-tiers) et leur mises en place.
Au programme:
Le contexte Android,
L'objectif utilisateur,
La responsabilité du développeur,
Les bonnes pratiques (celles de Chet Haase, Romain Guy et les miennes),
Les principes d'architecture (n-tiers, MVP et MVVM),
Leur application sur Android (services, threads, Application ...),
Le déploiement continue,
Les librairies incontournables du moment,
Un exemple concret d'utilisation d'un service REST (up et download)
et bien sûr un projet github est associé à cette conférence pour que le code soit avec vous !
Conférence "Architecture Android" du 19 Mars 2013 par Mathias Seguy fondateur...Mathias Seguy
La conférence « Architecture Android » de Mathias Seguy (Android2EE).
Si l’architecture d’applications Android vous questionne, vous intéresse, vous mystifie cette conférence est faîte pour vous.
Elle s’attachera à décrire les design patterns, contraintes et bonnes pratiques Android. Cela nous permettra de concevoir une architecture propre aux applications Android.
La conférence se conclura en donner les pro-tips Android provenant des GoogleIO et Devoxx qu’il faut connaitre pour concevoir des applications pertinentes sous Android.
Cette conférence a eu lieu le mardi 19 Mars 2013, à 19h.
Si vous êtes un JUG ou un AUG et que cette conférence vous interesse, n'hésitez pas à me contacter.
Si vous souhaitez apprendre la technologie Android, contacter moi: mathias.seguy@android2ee.com, je suis formateur Android et les formations Android que je dispense sont exceptionnelles.
Speaker:Mathias est le fondateur de la société Android2ee spécialisée dans la technologie Android.
Il est :
• formateur Android,
• expert logiciel Android,
• speaker Android sur de grandes conférences Java : Devoxx France, Eclipse Day Toulouse, JCertif Africa, Toulouse JUG, CocoAhead,…
• Rédacteur Android sur Developpez.com ;
• Programmateur Android : MyLight, MyTorch, MySensors, JCertifMobile disponibles sur GooglePlay ;
• Docteur en Mathématiques Fondamentales et Ingénieur de l’ENSEEIHT ;
• Expert technique de l’agence nationale de la recherche française ;
Il présentera au cours de cette conférence sa vision sur la mise en place d’une architecture d’une application Android pertinente et partagera les meilleurs pro-tips (astuces de pro) de sa connaissance. A ne pas manquez.
Mathias Séguy
mathias.seguy@android2ee.com
Fondateur Android2EE
Formation – Expertise – Consulting Android.
Ebooks pour apprendre la programmation sous Android.
Cette présentation a été faite en Mai 2012 au CocoaHeads Toulouse par Mathias Seguy de l'entreprise Android2EE.
Elle présente de manière très générale Android à des développeurs iOs.
Cette présentation est une présentation d’Android2EE, entreprise spécialisée dans l’expertise, le consulting et la formation Android. Vous souhaitez apprendre la programmation Android, Android2EE vous accompagne au-travers ses EBooks ou ses formations.
Laissez moi vous raconter mon histoire concernant cette entreprise. En 2010, je me suis penché sur la technologie Android, j’ai écrit trois EBooks sur l’art de la programmation Android (disponible sur Android2EE). J’ai quitté ma précédente entreprise et j’ai créé l’entreprise Android2EE (Android To Enterprise Edition) dont l’objectif est la formation, l’expertise et le consulting Android. J’ai quelques contrats en tant que consultant et aussi en tant que formateur. J’ai monté un ensemble de formations Android pour les entreprises:
Formation Initiale : Devenir autonome (3j).
Formation Approfondissement (2j).
Formation Spécificité Tablette et Graphisme(2j).
Formation Applications complexes (2j).
Formation chef de projet - responsable technique (1j).
Formation Mutlimédia (2j).
Formation sur mesure (2 à 3j).
Je pratique ces formations en donnant des cours dans les universités et les écoles d’ingénieurs de Toulouse ainsi que dans de grandes conférences Java:
CESI-EXIA, EPITECH, Sup-Info, IUP ISI, InfoSup, IUP SI, IUP ISI, IngeSup, INSA
Et bien sûr: Devoxx France (LA conférence Java française de 2012), Mercredi 18 Avril 2012,
Et
JCertif Afrique 2012 (LA conférence Java du continent Africain) Septembre 2012 Conférence et Cours
Enfin, j’ai investi l’espace numérique, voici quelques uns des ces sites:
http://www.android2ee.com/
http://mathias-seguy.developpez.com/
http://blog.developpez.com/android2ee-mathias-seguy/
http://android2ee.blogspot.com/
La critique de mon livre « Android A Complete course » par developpez.com (dont je ne suis pas peu fier, quand même):
http://android.developpez.com/livres/#L9791090388000
J’ai des articles sur Developpez.com concernant Android.
Ah oui, j’oubliais, mon cv se trouve ici (si jamais) : http://mathias-seguy.developpez.com/MathiasSeguyCV201106/
Voyage en monde Android. Trucs et astuces tout au long de la route.Mathias Seguy
Conférence donnée au Paris Android User Group du 18/06/2014
Toi, oui, toi, le développeur Android, expert ou débutant, prends ton billet, je t’emmène.
Je te propose un périple au sein du monde du développement Android. Je te parlerai de Design et d'UX, de techniques de dèv, d'asynchronicité et de sécurité, de bonnes pratiques, d'architecture, de librairies, de stratégies réseau... et de bien d'autres choses encore. De tous ces détails qui font qu'une application devient une application d'excellence.
Je te montrerai la rue des pro-tips, l'avenue des bonnes pratiques, les monts d'archis. Tu parcourras avec moi tous ces chemins qui amélioreront ton développement, ta pensée, ta conception, ton application Android.
Et quand, je te ramènerai dans ton port d'origine, les yeux qui brillent tu auras et mettre à jour ton application Android tu iras.
Simple matelot ou capitaine de navire, ne laisse pas passer ce voyage, il t'ouvrira de nouvelles voies du monde Android.
Animate Me, if you don't do it for me do it for chet (DroidCon Paris)Mathias Seguy
This is the slide of the conference gave at the DroidCon Paris 2015 by Mathias Seguy.
The pitch:
Animation is a key point when building your application….
But, “Animation is complicated with Android”, is your feeling.
Well, in fact, it’s not. I will show you how simples they are, how magic they could be and how fun your application can become.
I will explains which animation to use for which version of the system, what are your choices and what is your strategy. We will have a complete overview on the Android Animation framework.
So I hope to see you in the room for this conference, because at the end, your application will be enhanced :)
Android2EE training: Tutorials list of Android projectsMathias Seguy
This is the list of the projects and tutorials associated with the Android training of Android2EE.
I mean each Android2EE's trainee received a USB key that contains all those Android projects (in an Eclipse workspace) and each project can be used freely (except for training) in personal and professional projects.
Animate Me! if you don't do it for me, do it for Chet - DroidconLondon2015Mathias Seguy
This is the slide of the conference gave at the DroidCon London 2015 by Mathias Seguy.
The pitch:
Animation is a key point when building your application….
But, “Animation is complicated with Android”, is your feeling.
Well, in fact, it’s not. I will show you how simples they are, how magic they could be and how fun your application can become.
I will explains which animation to use for which version of the system, what are your choices and what is your strategy. We will have a complete overview on the Android Animation framework.
So I hope to see you in the room for this conference, because at the end, your application will be enhanced :)
Animate me, If you don't do it for me do it for Chet :)Mathias Seguy
This is the slide of the conference gave at the DroidCon Greece 2015 by Mathias Seguy.
The pitch:
Animation is a key point when building your application….
But, “Animation is complicated with Android”, is your feeling.
Well, in fact, it’s not. I will show you how simples they are, how magic they could be and how fun your application can become.
I will explains which animation to use for which version of the system, what are your choices and what is your strategy. We will have a complete overview on the Android Animation framework.
So I hope to see you in the room for this conference, because at the end, your application will be enhanced :)
Présentation et bonnes pratiques du pattern MVVM - MIC BelgiqueDenis Voituron
Le Model View ViewModel (MVVM) est une architecture et une méthode de conception utilisée dans le génie logiciel. Apparu en 2004, MVVM est adapté pour le développement des applications basées sur les technologies Windows (desktop, tablette ou mobile), mais également Web/HTML5. Cette méthode permet de séparer la vue de la logique et de l'accès aux données en accentuant les principes de binding et d’événement. Une bonne vue générale a été donnée par Laurent Bugnion, le père du MVVMLight, dans le podcast #11 de DevApps (http://devapps.be/podcast/11).
http://www.meetup.com/fr-FR/micbelgique/events/228368909/?eventId=228368909
Architecture et Bonnes pratiques Android #DevoxxFr2016 Part1Mathias Seguy
Depuis maintenant 7 ans que je développe sous Android, ma principale préoccupation a toujours été l'architecture.
Et si nous prenions quelques heures pour en discuter ?
Je vous propose une vision globale et synthétique s'appuyant sur des exemples concrets, sur les principes et conseils de référence des équipes Google et sur des modèles d'architecture (MVP/n-tiers) et leur mises en place.
Au programme:
Le contexte Android,
L'objectif utilisateur,
La responsabilité du développeur,
Les bonnes pratiques (celles de Chet Haase, Romain Guy et les miennes),
Les principes d'architecture (n-tiers, MVP et MVVM),
Leur application sur Android (services, threads, Application ...),
Le déploiement continue,
Les librairies incontournables du moment,
Un exemple concret d'utilisation d'un service REST (up et download)
et bien sûr un projet github est associé à cette conférence pour que le code soit avec vous !
Thinking about free marketing ? Want to give the opportunity to your user to share your app with their friends ? Maybe you just need more downloads ? Not sure where to start? Android App Invite is one of the answer you were looking for.
You will learn more about app invite is all about and why you need to care about. This talk will teach you exactly what you need to know to integrate app invite in your application.
At the end of this class, you will learn how to:
- integrate app invite in your app
- test your app invite for sending and reception of invites
- Manage invites tracking using Google Analytics API
Exploring Google (Cloud) APIs with Python & JavaScriptwesley chun
Half-hour tech talk given at user groups or technical conferences to introducing developers to integrating with Google (Cloud) APIs from Python or JavaScript.
ABSTRACT
Want to integrate Google technologies into the web+mobile apps that you build? Google has various open source libraries & developer tools that help you do exactly that. Users who have run into roadblocks like authentication or found our APIs confusing/challenging, are welcome to come and make these non-issues moving forward. Learn how to leverage the power of Google technologies in the next apps you build!!
Встреча Google Post IO ( Владимир Иванов, Катерина Заворотченко и Сергей Комлач)Alina Vilk
Украина на Google I/O.
эмоции и впечатления с крупнейшего ежегодного события для всех Google Developerов, презентации с подробностями и фотоотчетами, и девайсы (новый Chromebook, колонку Google Home и Google Pixel).
Saindo da zona de conforto… resolvi aprender androidDaniel Baccin
Palestra sobre Android realizada na Secomp - UECE. A ideia dessa palestra é motivar estudantes, profissionais e “devs”, em geral, a conhecer um pouco mais sobre o desenvolvimento de aplicativos na plataforma Android. Além disso, será discutido sobre os desafios enfrentados durante o aprendizado, oportunidades existentes no mercado, perspectivas futuras sobre a plataforma e experiências já adquiridas na área. Também, será abordando conceitos básicos e intermediários através de exemplos práticos, ferramentas utilizadas e dicas de boas práticas para o desenvolvimento.
Presented at London Web Standards Pick 'n' Mix, 18th January 2011
Numerous tips and advice on writing JavaScript code that avoids most common pitfalls, is unmaintainable, inaccessible or slow as a dog.
Futher explanation and links to articles mentioned can be found at http://rossbruniges.posterous.com/
2. Android2EE est référencé en tant qu’organisme de formation, vous pouvez faire prendre en charge tout ou partie
du montant de cette formation par votre OPCA. Cette formation Initiation avancée à Android est éligible au titre
du DIF et CIF.
Lieu : Paris, Toulouse, Lyon
Durée : 3 jours
Prix : 1680 €
Lieu : Paris, Toulouse, Lyon
Durée : 5 jours
Prix : 2980 €
Lieu : Paris, Toulouse, Lyon
Durée : 3 jours
Prix : 1780 €
3. 3
Wes Tarle Lee Denison
And of course thanks to
https://developers.google.com/events/io/sessions/324806378
4. Google+ SignIn Késako ?o?(p7)
Mise en place de l'environnement (p10)
Service Google : Vérifier la présence sur l'appareil
cible(p18)
PlusClient - Principe de connexion(p18)
•OverView (p19)
•Reconnexion Magique(p21)
•Connexion Manuelle(p23)
•Suppression des droits (p24)
•Cycle de vie (p25)
PlusClient - Features(p18)
•Utilisateur (p28)
•Unique Id (p29)
•Graphe Social (p30)
4
Beyond the blue dot (p18):
•Interactives Posts
•Application Activities : So called Moment
Disponible sur Github, SlideShare, GooglePlay et sur
Android2ee
7. Enregistre l'utilisateur pas le device
Sur Android l'utilisateur possède déjà une
identité => pas besoin de mot de passe
Pas besoin de permission !!!
7
OAuth2.0 Authentification encapsulée, masquée
mais présente
Ré-utilisation de cet identification pour accéder
aux autres services Google (via le token OAuth et
l'ajout de scope)
11. 11
Dans OverView, choisissez votre
projectID.
Pas de pression, il doit juste être unique,
un votreNomDePackage.replace(".","-")
devrait suffire.
<-Là
Ce qui donne
12. 12
1. Créez la page GooglePlus de votre projet
2. Associez son identifiant à votre projet
dans les Google Service
3. Dans votre page de projet GooglePlus,
tableau de bord/services connectés
acceptez la connexion
4. Vous pouvez voir vos statistiques <-Là
2
3
4
13. 13
Dans l'onglet Service, Choisissez "Google + API"
Allez dans l'onglet API ACCESS, créez votre "OAuth 2.0 Client ID""
N'oubliez pas d'enregistrer votre clef de Debug et votre clef de Production
<-Là
<-Là
<-Là
<-Là
14. 14
Et voilà, c'est fini pour l'enregistrement de votre projet au sein des services Google.
23. 23
/**
* The PlusClient
*/
private PlusClient mPlusClient;
/**
* The connectionResult returned by the last connection try
*/
private ConnectionResult mConnectionResult;
Activity
24. 24
// Build your GPlus Person:
//First create the builder (Context, connectionCallbacks , connectionFailedListener )
mPlusClient = new PlusClient.Builder(this, this, this)
//Then define/register the AppActivity you want to set possible for that client:
.setVisibleActivities("http://schemas.google.com/AddActivity",
"http://schemas.google.com/CommentActivity",
"http://schemas.google.com/DiscoverActivity")
//AddActivity: This type of app activity is the generic fallback type. Use it when no other app activity type is appropriate.
// DiscoverActivity: Use this type when your user discovers something in your app, such as discovering a new album.
// CommentActivity: Use this type when your user comments on an article, blog entry, or other creative work.
//And so on, the list is here: https://developers.google.com/+/api/moment-types/
// And define your application scope (writeMoment requires the PLUS_LOGIN OAuth 2.0 scope)
.setScopes(
Scopes.PLUS_LOGIN, // for accessing the user's name, basic profile info, list of people in the user's circles, and writing app activities to Google
Scopes.PLUS_PROFILE, // OAuth 2.0 scope for accessing the user's Google+ profile data.
Scopes.APP_STATE, // Scope for using the App State service.
Scopes.GAMES) // Scope for accessing data from Google Play Games.
//And then build the PlusClient
.build();
26. Première connexion
26
Si votre utilisateur s'est déjà connecté et a accordé les droits à l'application, il est en cache.
L'appel à mPlusClient.connect() marche directement.
@Override
protected void onStart() {
super.onStart();
// Ensure calling that method in onStart not in onResume (because onResume is
called to often and to late in the activity life cycle.
if (!mPlusClient.isConnected() && !mPlusClient.isConnecting()) {
mPlusClient.connect();
}
}
Connexions suivantes
27. 27
@Override
public void onConnected(Bundle connectionHint) {
// The PlusClient is build, you can use it
Person accountOwner = mPlusClient.getCurrentPerson();
}
@Override
public void onDisconnected() {
// When using AccessRevoked, this method is never called
// Just disconnect the user, next call on connect, will connect him again
smoothly
// He will have the same account and the same grants as before
// disconnect the user
mPlusClient.disconnect();
// Kill the connectionResult
mConnectionResult = null;
}
28. 28
@Override
public void onConnectionFailed(ConnectionResult result) {
// Store the result (meaning a connexion has been tried)
mConnectionResult = result;
// you want to automagicly display him the solution to its problem
either by showing the native SignIn
// Activity or the createAccount one. It's handle by the google team
throught the GoogleService Api
try {
// if auto-connection failed then ensure to display the SignIn
Activity to the user for him to be able
// to sign in if it's a Sign_In_Required else just try to find a
solution
if (result.hasResolution()) {
result.startResolutionForResult(this,
requestCodeResolverError);
}
} catch (SendIntentException e) {
Log.e(TAG, "onConnectionFailed " + result, e);
}
}
/** * The request code for the Intent connection launch by
startActivityForResult */
private final static int requestCodeResolverError = 12354;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// This method is called when the activity of connection started by
// mConnectionResult.startResolutionForResult(this, requestCodeResolverError); has
finished
// It has displayed the connection activity made by Google Fellow.
if (requestCode == requestCodeResolverError && resultCode == RESULT_OK) {
// hey now you have the rights granted the call to connect will work
mConnectionResult = null;
mPlusClient.connect();
} else {
// ensure the connection is reset, because it has been consume
mConnectionResult = null;
super.onActivityResult(requestCode, resultCode, data);
}
}
30. /** * Called when the SignIn button is hit */
private void gPlusSignInClicked() {
connectionAskedByUser = true;
if (!mPlusClient.isConnected() && !mPlusClient.isConnecting() && mConnectionResult != null) {
// In this case you have already called mPlusClient.connect (because mConnRes!=null) but it failed. So you try to launch the resolution of that failure by calling
startResolution which you should display the G+SignIn flow
try {
mConnectionResult.startResolutionForResult(this, requestCodeResolverError);
} catch (SendIntentException e) {
// It also failed, you' re a lucky guy, today is your day :). So you restart the connection process again.
mConnectionResult = null;
mPlusClient.connect();
signInButton.setEnabled(false);
}
} else if (!mPlusClient.isConnected() && !mPlusClient.isConnecting() && mConnectionResult == null) {
// This case is called when you haven't already try to connect (meaning you don't have the mPlusClient.connect in your onResume or onStart method)
// In our case, we will never go through this code just try to connect
mPlusClient.connect();
signInButton.setEnabled(false);
} else {
// Something forgotten or what ?
}
}
30
31. /** * Called when the SignIn button is hit */
private void gPlusSignInClicked() {
connectionAskedByUser = true;
if (!mPlusClient.isConnected() && !mPlusClient.isConnecting() && mConnectionResult !=
null) {
// In this case you have already called mPlusClient.connect (because mConnRes!=null) but it failed.
So you try to launch the resolution of that failure by calling startResolution which you should
display the G+SignIn flow
try {
mConnectionResult.startResolutionForResult(this, requestCodeResolverError);
} catch (SendIntentException e) {
// It also failed, you' re a lucky guy today. So you restart the connection process again.
mConnectionResult = null;
mPlusClient.connect();
signInButton.setEnabled(false);
}
} else if (!mPlusClient.isConnected() && !mPlusClient.isConnecting() && mConnectionResult
== null) {
// This case is called when you haven't already try to connect (meaning you don't have the
mPlusClient.connect in your onResume or onStart method)
// In our case, we will never go through this code just try to connect
mPlusClient.connect();
signInButton.setEnabled(false);
} else {
// Something forgotten or what ?
}
} 31
@Override
public void onConnectionFailed(ConnectionResult
result) {
// You can just set the mConnectionResult for your
user to be able to connect using the signInButton
// @see gPlusSignInClicked()
if (!connectionAskedByUser) {
// This case is when you want your user to
click the g+connection button to connect
// and not hide it by an automatic
connection
mConnectionResult = result;
} else {
// Usual case : @see slide "Implementing
GooglePlayServicesClient.OnConnectionFaile
dListener"
.....
}
}
33. Just disconnect the user, next call on
connect, will connect him again
smoothly
Give your user the ability to choose an
another account at the next connection
Give your user the ability to reset its grants
for your application
33
private void clear() {
if (mPlusClient.isConnected()) {
mPlusClient.clearDefaultAccount();
// You should call disconnect, else
nothing will happens (an exception
in fact)
// disconnect the user
mPlusClient.disconnect();
// Kill the connectionResult
mConnectionResult = null;
}
}
private void revoke() {
if (mPlusClient.isConnected()) {
mPlusClient.revokeAccessAndDisconnect(new
OnAccessRevokedListener() {
@Override
public void onAccessRevoked(ConnectionResult
status) {
// do a stuff
userAccessRevoked(status);
}
});
}
}
private void disconnect() {
if (mPlusClient.isConnected()) {
// disconnect the user
mPlusClient.disconnect();
// Kill the connectionResult
mConnectionResult = null;}
}
34. 34
Et si j'ai plusieurs Activity dans mon application... comment que je fais pour assurer l'authentification de l'utilisateur quelques soit
la manière dont je rentre dans l'application (backstack pop, onResume, startActivity...)?
Mise en place dans l'objet Application ?
Application doit implémenter la pattern (onConnected, onDisconnected, onConnectionFailed, PlusClient.connect...) dans
onCreate ...
×Fuite mémoire (impossible d'appeler disconnect);
×Complexité de sa mise en place;
×Fausse bonne idée.
35. 35
Et si j'ai plusieurs Activity dans mon application... comment que je fais pour assurer l'authentification de l'utilisateur quelques soit
la manière dont je rentre dans l'application (backstack pop, onResume, startActivity...)?
Mise en place d'une Activity mère qui implémente la connexion et héritage de cette activité par toutes vos activités.
Préconsié par Wes Tarle dans sa conférence
N'est pas centralisé, ne peut être partagé entre les activités, les services,...
36. Stockage dans l'objet Application ?
Application stocke l'instance de PlusClient courante et possède la méthode disconect (qui fait PlusClient.disconnect)
Existence d'une Activity de type GPlusConnectionActivity qui quand elle instancie PlusClient le stocke dans Application;
Chaque Activity vérifie (dans sa méthode onStart) si l'instance de PlusClient est dans Application, s'il n'existe pas lance
l'Activity de connexion: GPlusConnectionActivity
Chaque Activity appèle Application.disconect() dans sa méthode onStop
Pas de duplication de code;
Pas de fuite mémoire;
Workflow simple et compréhensible par tous (développeurs et utilisateurs);
L'objet PlusClient est accessible par tous au sein de l'application (Activity/Service/BroadcastReceiever...)
Peut-être utilisé par vos services.
36
Et si j'ai plusieurs Activity dans mon application... comment que je fais pour assurer l'authentification de l'utilisateur quelques soit
la manière dont je rentre dans l'application (backstack pop, onResume, startActivity...)?
44. 44
On Android device In Browser
ContentTarget
ContentURL
ActionTarget
ContentTarget
ContentURL
ActionTarget
ContentURL: 2 façons de les mettre en place
psBuilder.setContentDeepLinkId(
contentDeepLinkIdUrl, // content_deepl_id_url
contentDeepLinkTitleUrl,// content_deepl_title_url
contentDeepLinkDescUrl,// content_deepl_descr_url
contentDeepLinkThumbURI);// my picture but why ?o?
// The ContentUrl content_url with project page
psBuilder.setContentUrl(Uri.parse(contentUrl));
45. 45
private void sendInteractivePost(String message, String userId) {
PlusShare.Builder psBuilder = new PlusShare.Builder(this, mPlusClient);
// Build the post itself
// The message of the post
psBuilder.setText(message);
// The content url of the post
psBuilder.setContentUrl(Uri.parse(https://plus.google.com/%1$s/about));
// Add the CallToAction
// add_call_uri=https://plus.google.com/%1$s/about
String addCallUri = getString(R.string.add_call_uri, userId);
Uri addCallURI = Uri.parse(addCallUri);
// Set the call to Action
psBuilder.addCallToAction("CONNECT", addCallURI, "user/%1$s?action=see");
// And then drop the moment in your user stream
startActivityForResult(psBuilder.getIntent(), 0);
}
46. 46
public class InteractivePostCallBackActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Retrieve the DeepLink
Uri deepLink = Uri.parse(PlusShare.getDeepLinkId(getIntent()));
// Define the Activity that will be launched
Intent target = new Intent();
if (deepLink.isHierarchical() && deepLink.getPath().startsWith("/user/")) {
// Get extra to better target the activity to launch
target.putExtra("profileId", deepLink.getLastPathSegment());//
// Do the same for parameters
if (deepLink.getQueryParameter("action") != null) {
if (deepLink.getQueryParameter("action").contains("see")) {
target.putExtra("action", "see");
}
}
//Then decide which activity you want to launch
target.setClass(getApplicationContext(), MainActivity.class);
}else {
Log.e("InteractivePostCallBackActivity", "Not starting with user");
}
//Launch the target activity
startActivity(target);
// and die
finish();
}}
47. 47
public class InteractivePostCallBackActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Retrieve the DeepLink
Uri deepLink = Uri.parse(PlusShare.getDeepLinkId(getIntent()));
// Define the Activity that will be launched
Intent target = new Intent();
if (deepLink.isHierarchical() && deepLink.getPath().startsWith("/user/")) {
// Get extra to better target the activity to launch
target.putExtra("profileId", deepLink.getLastPathSegment());//
// Do the same for parameters
if (deepLink.getQueryParameter("action") != null) {
if (deepLink.getQueryParameter("action").contains("see")) {
target.putExtra("action", "see");
}
}
//Then decide which activity you want to launch
target.setClass(getApplicationContext(), MainActivity.class);
}else {
Log.e("InteractivePostCallBackActivity", "Not starting with user");
}
//Launch the target activity
startActivity(target);
// and die
finish();
}}
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android2ee.tuto.gplus.signin.publicid"
android:versionCode="1"
android:versionName="1.0" >
<activity
android:name="com.android2ee.tuto.gplus.signin.publicid.InteractivePostCallBackActivity"
android:exported="true" >
<intent-filter>
<action android:name="com.google.android.apps.plus.VIEW_DEEP_LINK" />
<data android:scheme="vnd.google.deeplink" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>
50. 50
void writeMomentInStream() {
String userId=mPlusClient.getCurrentPerson().getId();
Person owner = mPlusClient.getCurrentPerson();
ItemScope target = new ItemScope.Builder()
// Also, use ItemScope.setId() to create a unique application specific ID for the item you are writing.
.setId("user/ userId?action=see ")// It should NOT be set as the Google+ user ID. It's your DeepLinkId!
.setText("Your message")
.setDescription(" A description for that")
.setThumbnailUrl(owner.getImage().getUrl())
.setType("http://schema.org/Comment")
.build();
// Ensure in your new PlusClient.Builder(this, this, this).setVisibleActivities("http://schemas.google.com/CommentActivity",
"http://schemas.google.com/ListenActivity").build()
// You have define the activity you want to add as your moment type
Moment moment = new Moment.Builder()
.setType("http://schemas.google.com/CommentActivity")
.setTarget(target)
.build();
if (mPlusClient.isConnected()) {
mPlusClient.writeMoment(moment);
}
Toast.makeText(this, "Moment has been sent", Toast.LENGTH_SHORT).show();
}
Define DeepLinkId
And How Google has to render it
Handle the internet status
and write the moment when connectivity is back
53. 53
Smart, smooth and magic Authentification.
(you can believe in google authentification)
Spread your application.
using the Android install via web to mobile delivery
(interactive posts).
Be part of your user's life and experience
(be in his Google Plus, again interactive posts & application activity).
Be in your user social life
BUT DON'T BE INTRUSIVE
55. 55
L'application My Google Public Profile est disponible sur GitHub :
https://play.google.com/store/apps/details?id=com.android2ee.project.gplus.signin.publicid&hl=fr
56. 56
Retrouvez cette conférence sur SlideShare ou sur Android2ee.com
http://fr.slideshare.net/Android2EE/presentations
http://www.android2ee.com/fr/slideshare/