introduction à android - mars 2012
TRANSCRIPT
Introduction au développement d'applications mobiles
Ma formation, mon expérience, mon entreprise
Présentation
Aurélien GuillardDéveloppeur Mobile multiplateforme
AndroidBlackberryiPhoneJ2ME
[email protected] [email protected] http://www.aurelienguillard.com
Twitter : @rorolepro (oui, je sais, ce pseudo est ridicule)
Expériences professionnelles
Acutellement : Viadeo (Android, BlackBerry)
2010 : Clicmobile (Android, iPhone, Blackberry, J2ME)
2009 : Latin 3G S.A. de C.V. (Android)
2008 : GAROS (web)
2007 : e-doceo (ActionScript)
2006 : SA2EI (web)
Viadeo
40 millions de membres
1 million de nouveaux
membres par mois
7 langues
Des locaux sur toute la planèteParis, San Francisco, New Delhi, Beijing, Amsterdam, Madrid, Moscou, Casablanca, Londres, Barcelone, Milan, Dakar, Mexico
400% de croissance ces 2 dernières années
400 salariés
3 marques :
Viadeo et moi
Inscrit depuis Février 2009
3500 visites sur mon profil
Environ 3 opportunités professionnelles par semaine
Mes 2 premières expériences professionnelles acquises grâce à Viadeo !
Envie de découvrir l'envers du décor !
Un produit que j'aime
Une réussite française
Une équipe internationale
Équipe mobile créée cet étéDéjà 9 personnes !
Viadeo sur mobile
Déjà présent sur iPhone, Android, WP7, Bada et Palm
Nouveaux produits mobiles
Application
BlackBerry
Android SDKhttp://dev.viadeo.com/documentation/tools-and-samples/android-sdk/
iPhone SDKhttp://dev.viadeo.com/documentation/tools-and-samples/iphone-sdk/
Viadeo graph API
Le métier au quotidien
Estimation
Conception et architecture
Développement applications et librairies
Tests
Corrections et améliorations
Veille technologique
Android ?
Android
Startup rachetée par Google en 2007
OS open-sourceTerminaux mobilesSystèmes embarqués
Développement Java/XML (SDK) C (NDK)
Une hausse constante
Les versions
Jelly Bean5.0 ???
Ice Cream Sandwich4.0 – 4.0.2 – 4.0.3
Honeycomb3.0 – 3.1 – 3.2
Gingerbread2.3 – 2.3.2 – 2.3.3 – 2.3.7
FroYo2.2
Eclair2.1
Donut1.6
Cupcake1.5
Data collected during two weeks ending on March 5, 2012
#K4Kouign : Support the choice of Kouign-Amann as the 'K' release of the Android Operating System
Les smartphones
SonyXperia X10 Mini
240x320
SamsungGalaxy S2480x800
HTCMagic
320x480
MotorolaMilestone480x854
SamsungGalaxy Nexus
720x1280
Les tablettes
AsusEeePad Transformer
1280x800
MotorolaXoom 2
1280x720
SamsungGalaxy Tab 10.1
1920x1080
SonyTablet S
1280x720
Les systèmes embarquées
People of LavaScandinavia
SamsungRF4289HARS
ParrotAsteroid
SonySmartWatch
LogitechRevue
(Google TV)
Boutons
HomeBack SearchMenu
Recents
Hardware keys
Virtual controls
Home BackMenu
HomeBack
Android != iPhone
UINavigationBarController
UITabController
Tentative de reproduction de
"controllers" iPhone...
Les éléments de UI (User Interface)
ScrollView + Options Menu
TextView
ScrollView
Options Menu(clic sur le
bouton physique "menu")
ProgressDialog
STYLE_SPINNER
Dialog
Custom dialog
TextView
EditText
Button
ImageView
ImageView
TextView
TextView
TabHost
TabWidget
FrameLayoutListView
MapView
Pas disponible dans le framework standard nécessite la lib Google APIs
com.google.android.maps.MapView
Outils de développement
Outils de développement
Eclipsehttp://www.eclipse.org/downloads/
ADT pluginhttps://dl-ssl.google.com/android/eclipse/
Android SDK (Windows, Linux, MacOS)http://developer.android.com/sdk/
Téléchargement des plateformes depuis le SDK and AVD Manager
SDK Manager
Création d'émulateurs
DDMS
Composition d'un projet Android
Arborescence d'un projet
Java
Images
XML
Strings
Manifest
FrameworkGenerated java files
Composants d'application
Activities
Services
Broadcast receivers
Content providers
Arborescence de l'application
PhotosetListActivity ContainerActivity
PhotosActivity
PhotosListActivity PhotosMapActivity
Intents
Système de messages pour exécuter un composant (activity, service, broadcast receiver)
Possibilité d'exécuter des composants d'une même application OU/ET d'applications différentes
Android tente de répondre le mieux à chaque Intent (explicit/implicit intents)
Activity life cycle
Manifest.xml
Permissions
Plateforme cible
Activities
Numéros de versions
Intent filters
Création des vues
Une vue est décrite en XML
Assigner un layout XML à une Activity
Generated Class File Type de ressource Nom de la ressource
XML Inflate
Gestion des ressources
Types de ressource
anim/
color/
drawable/
layout/
menu/
raw/
values/
xml/
Drawable auto-scaling
Même image, même nom de fichier, mais dans des dossiers
différents, chacun lié à une densité différente
(low, medium, high)
icon72x72
icon36x36
icon48x48
Resource qualifiers
MCC and MNC : mcc310 mcc310-mnc004 mcc208-mnc00 etc.
Langage and region : en fr en-rUS fr-rFR fr-rCA etc.
Screen size : small normal large xlarge
Screen aspect : long notlong
Screen orientation : port land
Dock mode : car desk
Night mode : night notnight
Screen pixel density : ldpi mdpi hdpi xhdpi nodpi
Touchscreen type : notouch stylus finger
Keyboard availability : keysexposed keyssoft
Primary text input method : nokeys qwerty 12key
Navigation key availability : navexposed navhidden
Primary non-touch navigation method : nonav dpad trackball wheel
System version (API level) : v3 v4 v7 etc.
Connexion à un WebService
Flickr API
Formats de requêteREST, XML-RPC, SOAP
Formats de réponseREST, XML-RPC, SOAP, JSON, PHP
Flickr App Gardenhttp://www.flickr.com/services/api/
Couches applicatives
WebServiceAPIManagerContentManagerActivity
savePhotos(id) getPhotos(id) flickr.photosets.getPhotos
File responseStringJava object
Réponse API Flickr
APIManager
Connexion à l'API REST Appel non signé, sans jeton d'utilisateur Méthode GET
ContentManager
Sauvegarde des données
Shared Preferences
Accès : privé
Type : primitif (boolean, float, int, long, string)
Format : clé/valeur
Utilisé pour sauvegarder des paramètres
Internal Storage
Accès : privé
Format : fichier
External Storage
Accès : public
Format : fichier
Nécessite des vérifications : média monté sur une machine, absent, accessible qu'en lecteur, etc.
Sauvegarder ses fichiers dans :/Android/data/<package_name>/files/
Databases
Accès : privé
Format : données structurées
Type : SQLite
SQLiteOpenHelper
Google Play (ex Android Market)
Client Google Play
Client Google Play
Google Play Admin
Upload Assets
Listing details
Publishing options
« If you want porn, get an Android » – Steve Jobs
Statistics
Liens
Documentation et examples
http://developer.android.com
http://developer.android.com/design/
http://android.cyrilmottier.com
http://www.androidpatterns.com
http://code.google.com/p/android-cookbook/
http://code.google.com/p/apps-for-android/
http://www.androidsnippets.org
Actualités
http://www.frandroid.com
http://www.pointgphone.com
Aide
http://stackoverflow.com/questions/tagged/android
http://www.anddev.org
http://forum.frandroid.com
http://forum.xda-developers.com
https://groups.google.com/group/paris-android-ug
Utilitaires
http://code.google.com/p/android-ui-utils/
http://android-ui-utils.googlecode.com/hg/asset-studio/dist/index.html
http://www.droidthing.com
http://androiddrivers.net
Livres
Merci de votre attention !
J'ai hâte de tester vos applications;)