Jean-François GARREAU
-
Consultant IT chez SQLI
-
Développeur Android à mes heures perdues
-
Un des membres fondateur du GDG Nantes
-
Créateur de CineShowTime
@gdgnantes / @binomed / @uncle_bens1
@gdgnantes / @binomed / @uncle_bens1
Android ?
Concepts
Economiquement intéressant ?
Développement
Liens
Questions
Modèle choisi
Architecture
Langage
Avantages
Inconvéninents
Quelques débats existent quand à la main mise sur android par google…
Il existe aussi la possibilité de coder en php via un framework externe ASE (ajoute un interpreteur)
sinon google autorise avec le NDK du developpement C C++
Il existe aussi la possibilité de coder e,n C# avec mono android (dispo depuis peu pour android 4.0)
Sinon des solutions comme PhoneGap ou HTML5 via une webview !
De plus en plus de frameworks sont compatibles Android
Par les versions
Par le parc d’appareils
Version | Codename | API | Distribution |
---|---|---|---|
1.6 |
Donut |
4 |
0.2% |
2.1 |
Eclair |
7 |
2.4% |
2.2 |
Froyo |
8 |
9.0% |
2.3 - 2.3.2 |
Gingerbread |
9 |
0.2% |
2.3.3 - 2.3.7 |
10 |
47.4% |
|
3.1 |
Honeycomb |
12 |
0.4% |
3.2 |
13 |
1.1% |
|
4.0.3 - 4.0.4 |
Ice Cream Sandwich |
15 |
29.1% |
4.1 |
Jelly Bean |
16 |
9.0% |
4.2 |
17 |
1.2% |
Les evolutions d’api ! Car comme le système est neuf, il évolue souvent et donc il faut faire des fois du code spécifique par target.
Concernant openGL on est obligé de faire du spécifique par téléphone. Des frameworks arrivent pour aider AndEngine, PlayN
Android avait pour vocation de poser des choses communes mais au final on constate que les constructeurs ne jouent pas vraiment le jeu.
Activity
Fragments
Cycle de vie des activités
Les services
Les Intents
Les contents providers
Broadcast recivers
Le reste
Définition xml des éléments graphiques
Les filtres servent par exemple à définir quelle sera l’activité principale quand on lance l’application
Quand un process est trop longtemps mis en tache de fond il peut être killé
Les fragments sont la base à utiliser quand on envisage un développement
Les services sont très utiles pour gérer tous les traitements un minimum longs
Attention cependant à bien les lancer dans des threads car sinon il bloquent le process qui en est à l’origine.
Donner un exemple de lecteur MP3 Ou alors d’avoir les accès HTTP
Comme vous pouvez le voir, un service à la possibilité de communiquer avec un Binder (souvent son appelant) de cette manière on peut tenir au courant l’ihm des avancées du service.
Par défaut simples
Mais on peut envoyer des objets complexes
L’intent est très très important car sans lui les différents processus (activités, services, …) ne pourraient pas communiquer.
Si on veut faire passer des objets complexes, il faut que nos objets implémentent une certaine interface
L’avantage de la multi réception est d’avoir la possibilité de réécrire des briques métiers. On peut ainsi enrichir les fonctionnalités de bases.
Expliquer en quoi c’est puissant les boradcast ! Sms etc …
De cette manière on peut accéder facilement aux données du téléphone
On peut aussi offrir la possibilité de toucher aux données de son application.
De cette manière on peut agir sur la réception d’un SMS ou d’un appel.
Il resterait encore plein de notions à traiter mais parlons rapidement de celles là.
Les widgets sont des éléments graphiques propres à android et disponible uniquement depuis l’application de bureau d’android. Les widgets sont des éléments indépendants ou non de l’application auquel ils appartiennent.
La base de données est SQLLite (connu au niveau HTML5)
L’internationnalisation est très simplifée, il suffit de déclarer un fichier par langue et le framework android s’occupe du reste
Le draw9Patch : très pratique pour les ressources graphiques =» principe de déclarer uniquement les zones extensibles.
Encore bien d’autres choses….
Beaucoup d'applications sont gratuites et les gens ont du mal à acheter encore sur Android.
Les premiers utilisateurs étaient les déçus d’iphone et surtout des geeks =» on recherche beaucoup du gratuit
Il faut lancer une dynamique de payement =» ce n’est pas par ce que notre application est développée par un amateur qu’elle ne mérite pas une rétribution
L’arrivée du paiment in app est une grande avancée dans la monétisation des applications
Parler des pays ayant le market payant
Les composants graphiques
On peut aussi simuler les perturbation réseaux
On peut faire du debug
O n a accès aux logs de l’application
On peut faire des captures d'écrans
Parler de ce qu’on ne peut pas faire : BluTooth, NFC, Caméra c’est pas évident, …
Et bien d’autres …
Et il en existe encore pleins d’autres … TimePicket, DatePicker ….
On défini le nom du projet,
La version android visée
Le fait de choisir google apis, vous permet d’avoir accès aux api google du genre maps.
On doit ensuite choisir un nom de package afin d’intentifier votre application (ils sont unique pour les applis du market)
On définit une Activité par défaut
Votre code
Le code auto généré
Vos ressources dynamiques
Le manifest
Le projet est constitué d’une partie statique (votre code, vos ressources)
Et d’une partie dynamique (la partie gen) contenant toutes les constantes.
La partie res est très importante car elle contient toutes les ressources « dynamiques » extérieurs à votre projet
On peut voir différents répertoire en fonction de la résolution
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
</LinearLayout>
Déclaration d’un sumple texte dans une vue. On remarque que le texte provient d’une ressource
Parler de l’aspect multi résolution
Les xml de définitions peuvent être spécifiques =» un chaque téléphone peut avoir une présentation différente. On peut définir des agencements différents entre les différentes résolutions
On peut aussi affecter des thèmes très simplement à nos applications
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.binomed.sqli"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Convert"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="9" />
</manifest>
On retrouve le nom de l’application, l’icone, la déclaration de l’activité principale
http://developer.android.com/index.html
http://android.git.kernel.org/
http://androidcookbook.oreilly.com/
23 liens graphiques : http://goo.gl/9yxu6
Création d’icones : http://goo.gl/zCxLd
http://www.androiduipatterns.com/
Préconisations Google : http://goo.gl/OsR2L
Github Jean-François : https://github.com/organizations/binomed