Fa q Android

30
FAQ Android Date de publication : 10/03/2010 Dernière mise à jour : 08/12/2010 Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums de http://www.developpez.com et de l'expérience personnelle des auteurs. Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose sont correctes. Les auteurs font leur maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez nous aider en devenant rédacteur, lisez Comment participer à cette faq ?. Sur ce, nous vous souhaitons une bonne lecture. L'équipe Java

Transcript of Fa q Android

FAQ Android

Date de publication : 10/03/2010

Dernière mise à jour : 08/12/2010

Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums dehttp://www.developpez.com et de l'expérience personnelle des auteurs.

Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informationsqu'elle propose sont correctes. Les auteurs font leur maximum, mais l'erreur esthumaine. Cette FAQ ne prétend pas non plus être complète. Si vous trouvez une erreur,ou que vous souhaitez nous aider en devenant rédacteur, lisez Comment participer àcette faq ?.

Sur ce, nous vous souhaitons une bonne lecture.

L'équipe Java

Ont contribué à cette FAQ :

Le Trocquer Mickaël - L'équipe Java -

FAQ Android

- 3 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://android.developpez.com/faq/

1. Informations générales (5) .........................................................................................................................................................42. Environnement Eclipse (4) ........................................................................................................................................................ 63. Architecture d'un projet (8) ....................................................................................................................................................... 94. Périphériques (8) ......................................................................................................................................................................125. Manipulation de l'IHM (9) ...................................................................................................................................................... 196. Accès aux contenus (2) ........................................................................................................................................................... 237. Utilisation du SDK (5) ............................................................................................................................................................ 258. Divers (3) ................................................................................................................................................................................. 289. Exemple de configuration de mobiles (5) ...............................................................................................................................29

FAQ Android

- 4 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://android.developpez.com/faq/

Sommaire > Informations générales

Comment bien utiliser cette faq ?

Auteurs : L'équipe Java ,

Le but : la faq a été conçue pour être la plus simple possible d'utilisation. Elle tente d'apporter des réponses simples etcomplètes aux questions auxquelles sont confrontés tous les débutants (et les autres).

L'organisation : les questions sont organisées par thème, les thèmes pouvant eux-mêmes contenir des sous-thèmes.Lorsqu'une question porte sur plusieurs thèmes, celle-ci est insérée dans chacun des thèmes rendant la recherche plusfacile.

Les réponses : les réponses contiennent des explications et des codes sources. Certaines sont complétées de fichier àtélécharger contenant un programme de démonstration. Ces programmes sont volontairement très simples afin qu'ilsoit aisé de localiser le code intéressant. Les réponses peuvent également être complétées de liens vers d'autres réponses,vers la documentation en ligne de Sun ou vers un autre site en rapport.

Nouveautés et mises à jour : lors de l'ajout ou de la modification d'une question/réponse, un indicateur est placé à cotédu titre de la question. Cet indicateur reste visible pour une durée de 15 jours afin de vous permettre de voir rapidementles modifications apportées.

J'espère que cette faq pourra répondre à vos questions. N'hésitez pas à nous faire part de tous commentaires/remarques/critiques.

lien : Comment participer à cette faq ?

Comment participer à cette faq ?

Auteurs : L'équipe Java ,

Cette faq est ouverte à toute collaboration. Pour éviter la multiplication des versions, il serait préférable que toutes lescollaborations soient transmises aux administrateurs de la faq.Plusieurs compétences sont actuellement recherchées pour améliorer cette faq :

Rédacteur :Bien évidemment, toute nouvelle question/réponse est la bienvenue.

Correcteur :Malgré nos efforts, des fautes d'orthographe ou de grammaire peuvent subsister. Merci de contacter les administrateurssi vous en débusquez une... Idem pour les liens erronés.

lien : Quels sont les droits de reproduction de cette FAQ ?

Quels sont les droits de reproduction de cette FAQ ?

Auteurs : L'équipe Java ,

Les codes sources présentés sur cette page sont libres de droits, et vous pouvez les utiliser à votre convenance. Pour lereste, ce document constitue une ?uvre intellectuelle protégée par les droits d'auteurs.

Ce document issu de http://www.developpez.com est soumis à : Copyright © 2004 Developpez LLC : Tous droits réservésDeveloppez LLC. Aucune reproduction, ne peux en être faite sans l'autorisation expresse de Developpez LLC. Sinon

FAQ Android

- 5 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://android.developpez.com/faq/

vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposéeà la SACD.

Où trouver d'autres sources d'information ?

Auteurs : L'équipe Java ,

• Les cours et didacticiels de www.developpez.com• Le forum Android de www.developpez.com• La Javadoc : toutes les informations utiles sur les classes, leurs méthodes ... à toujours avoir sous la main.

Remerciements

Auteurs : L'équipe Java ,

Un grand merci à tous ceux qui ont pris de leur temps pour la réalisation de cette FAQ.

Aux rédacteurs :Remerciements tout d'abord à tous ceux qui ont rédigé les questions et les réponses.

Aux correcteurs :Remerciements également aux personnes qui ont relu les textes pour supprimer un maximum de fautes de français.pixelomilcouleurs, Baptiste Wicht, Claude Leloup

Aux visiteurs :Remerciements, enfin, à tous ceux qui ont consulté cette FAQ, et qui, par leurs remarques, nous ont aidé à laperfectionner.

Et pour finir, un merci tout spécial à Mickaël Le Trocquer, qui est à l'origine de cette FAQ et à tous les membres del'équipe qui nous ont fourni outils et logiciels nécessaires pour la réalisation de ce document.

FAQ Android

- 6 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://android.developpez.com/faq/

Sommaire > Environnement Eclipse

Comment configurer un proxy sur Eclipse ?

Auteurs : Le Trocquer Mickaël ,

Suivant la version d'Eclipse, il y a plusieurs moyens de paramétrer l'accès à internet :• Version 3.4

Window > Preferences dans le panneau General > Network Connections.• Version 3.5

Window > Preferences Dans le panneau General > Network Connections. Avec cette version, il est possible que l'accèssoit toujours bloqué. Ce bug est référencé, et peut être contourné de la façon suivante : il suffit de modifier son eclipse.iniet rajouter les valeurs suivantes :

-Dorg.eclipse.ecf.provider.filetransfer.excludeContributors=org.eclipse.ecf.provider.filetransfer.httpclient-Dhttp.proxyPort=8080-Dhttp.proxyHost=myproxy-Dhttp.proxyUser=mydomain\myusername-Dhttp.proxyPassword=mypassword-Dhttp.nonProxyHosts=localhost|127.0.0.1

(cf http://blog.dahanne.net/2009/07/01/eclipse-galileo-3-5-problemes_proxy/)

Comment installer le plugin Eclipse ?

Auteurs : Le Trocquer Mickaël ,

Téléchargez la dernière version du SDK d'Android fournie sur le site http://developer.android.com/sdk/index.html.Installez ce SDK sur votre ordinateur. Lancez Eclipse et ajoutez un nouveau site pour les plugins : https://dl-ssl.google.com/android/eclipse/ Récupérez ce nouveau plugin et installez le. Il reste maintenant à le configurer pourqu'il pointe sur le SDK précédemment installé : Allez dans "Window > Preferences" , sélectionnez "Android" puisrenseignez le champ texte "SDK Location" avec le chemin où vous avez précédemment installé le SDK.

Que fournit le plugin Eclipse ?

Auteurs : Le Trocquer Mickaël ,

Avec le plugin, vous pouvez télécharger et installer toutes les versions du SDK d'Android ainsi que les "add-on" deGoogle. Pour vérifier les versions installées ou en installer de nouvelles, il faut passer par l'AVD Manager d'Eclipse.Ce plugin offre également à Eclipse une nouvelle perspective "DDMS" ainsi que plusieurs nouvelles "View". Une des

FAQ Android

- 7 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://android.developpez.com/faq/

view importante est "LogCat" qui permet de surveiller les logs de votre téléphone Android et le bon déroulement devos programmes (avec la classe Log offerte par le SDK).

Quelles sont les versions disponibles du SDK ?

Auteurs : Le Trocquer Mickaël ,

Versionofficielle

Numéro interne Date de sortie Type de version Principauxchangements

2.2 API Level 8 Juillet 2010 mineur • Ajout desprojetslibrairiespourAndroid

• Ajout duwidgetRecherche

• Reconnaissancevocale(+API)

2.1 API Level 7 Janvier 2010 majeur • Gestiondes LiveWallpapers

• Améliorationdu WebKit

2.0.1 API Level 6 Décembre 2009 mineur 2.0 API Level 5 Octobre 2009 majeur • Amélioration

de lamessageries(multi-compte)

• Ajout defonctionnalitéssurl'appareilphoto

• Améliorationdunavigateur

1.6 API Level 4 Décembre 2009 mineur 1.5 API Level 3 Avril 2009 majeur • Amélioration

desélémentsgraphiques

• Gestion del'accéléromètre

• Gestion destransitionsentreécransvia desanimations

FAQ Android

- 8 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://android.developpez.com/faq/

• Ajout d'unclaviervirtuel

• ...1.1 API Level 2 Février 2009 mineur 1.0 API Level 1 majeur

FAQ Android

- 9 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://android.developpez.com/faq/

Sommaire > Architecture d'un projet

Que sont les Activity et View ?

Auteurs : Le Trocquer Mickaël ,

Une activité est la composante principale d'une application sous Android. L'activity est le métier de l'application etpossède généralement une View au minimum, c'est à dire un écran graphique. Ainsi dans une application standard,on pourrait trouver une activité qui liste des contacts, une activité qui ajoute un nouveau contact, et une activité quiaffiche le détail d'un contact. Le tout forme un ensemble cohérent, mais chaque activité pourrait fonctionner de manièreautonome.

Que représentent les Intents et les Intent Filters ?

Auteurs : Le Trocquer Mickaël ,

Les Intents permettent de communiquer entre les différentes activités de notre application, mais aussi du téléphone. Ilssont en quelque sorte le "messager" pour lancer une activité. Ainsi une activité peut en lancer une autre soit en passantun intent vide, soit en y passant des paramètres. Les Intent Filters jouent le rôle de filtre. Ils permettent de contrôlerd'où provient l'Intent (ou d'autres paramètres) afin de lancer ou non l'activité.

Que contient le fichier AndroidManifest.xml ?

Auteurs : Le Trocquer Mickaël ,

Le fichier manifest permet de décrire votre application. On y retrouve :

• le nom du package de l'application. Il servira d'identifiant unique.• tous les composants de l'application (Activities, Services, BroadCast Receivers, Content providers). On y décrit

également les classes qui implémentent ces composants et leurs capacités (par exemple les Intents qu'ellesattendent). Ces déclarations permettent à Android de savoir quels composants sont présents et dans quellesconditions ils s'exécutent.

• on détermine dans quels processus les composants de l'application seront contenus.• les permissions nécessaires pour le bon fonctionnement de l'application.• les permissions nécessaires pour que les autres applications utilisent les composants de votre application.• les informations contenant les versions de l'Android API requis pour exécuter votre application.• les librairies utilisées par votre application.

Qu'est ce qu'un Service ?

Auteurs : Le Trocquer Mickaël ,

Un service ne possède pas d'interface graphique, mais permet de dérouler un algorithme sur un temps indéfini. Ils'arrêtera lorsque sa tâche sera finie ou lorsqu'il sera arrêté. Il peut être soit exécuté lors du lancement du téléphone

FAQ Android

- 10 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://android.developpez.com/faq/

(ou tout autre mécanisme interceptable : arrivée d'un appel, d'un sms, etc), soit au cours d'une action particulière dansvotre application via un broadcast receivers.

Que sont les Content Providers ?

Auteurs : Le Trocquer Mickaël ,

Les content providers permettent d'accéder à un ensemble de données depuis une application. Vous pouvez ainsi accéderaux contacts, à l'agenda, aux photos, et autres données et informations de votre téléphone via des content providers.Vous pouvez également définir vos propres content providers pour accéder à vos objets, mais également pour qued'autres applications utilisent vos données.

Que sont les Broadcast Receivers ?

Auteurs : Le Trocquer Mickaël ,

Un Broadcast Receiver permet d'écouter ce qui se passe sur le système et éventuellement de déclencher une action sibesoin. C'est souvent par ce mécanisme que les services sont lancés.

J'ai souvent cette erreur : "classe Ressource (R) 'cannot be resolved'"

Auteurs : Le Trocquer Mickaël ,

Le fichier R.java est un fichier généré par le SDK Android.Ce fichier se génère automatiquement une fois que tout le code de votre projet peut être compilé (pas d'erreur sur votreprojet).Ce qui veut dire que si ce fichier n'est pas présent, c'est qu'il y a soit :- des erreurs dans votre projet :

• XML : problèmes d'accents, de majuscules, de ressources mal créées, de balises mal écrites, etc.• Java : Une erreur java empêche la compilation de votre projet.• Manifest : Des éléments / attributs présents dans le manifest sont incorrects.

- qu'il ne peut pas le générer automatiquement, car l'action "Build automatique" n'est pas sélectionnée sur le projet.

Comment changer l'icône de mon application ?

Auteurs : Le Trocquer Mickaël ,

Il faut changer la valeur de la propriété "icon" dans le manifest de votre application. L'icône doit être une image situéedans le dossier drawable. L'attribut est obligatoire, il n'y a pas de valeur par défaut.Exemple :

manifest.xml

<application <b>android:icon="@drawable/mon_icon"</b> android:label="@string/app_name"

Pour information, il est également possible de spécifier une icône par activité de votre application.

FAQ Android

- 11 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://android.developpez.com/faq/

Plus de détails : http://developer.android.com/guide/topics/manifest/application-element.html#icon

FAQ Android

- 12 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://android.developpez.com/faq/

Sommaire > Périphériques

Comment lister les « sensors » disponibles sur l'appareil ?

Auteurs : Le Trocquer Mickaël ,

Voici un bout de code permettant de lister tous les Sensors disponibles sur le système :

Valide 1.5

//Initialisation du managerSensorManager m_SensorMgr = (SensorManager) m_Context.getSystemService(Context.SENSOR_SERVICE);

List<Sensor> listSensor = m_SensorMgr.getSensorList(Sensor.TYPE_ALL);for(Sensor sen : listSensor) { Log.d("Sensor" ,sen.getName());}

Par exemple si vous souhaitez utiliser l'accéléromètre :

Valide 1.5

Sensor m_AcceloSensor = m_SensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

Comment prendre une photo avec l'appareil photo en utilisant l'action Android ?

Auteurs : Le Trocquer Mickaël ,

Voici une méthode pour prendre une photo en utilisant l'appareil photo disponible sur le téléphone :

Valide 1.5

private void doTakePhotoAction() { // http://2009.hfoss.org/Tutorial:Camera_and_Gallery_Demo // http://stackoverflow.com/questions/1050297/how-to-get-the-url-of-the-captured-image // http://www.damonkohler.com/2009/02/android-recipes.html // http://www.firstclown.us/tag/android/ // The one I used to get everything working: http://groups.google.com/group/android-developers/msg/2ab62c12ee99ba30

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

//Wysie_Soh: Create path for temp file File fTmp = new File(Environment.getExternalStorageDirectory(),"tmp_contact_" + String.valueOf(System.currentTimeMillis()) + ".jpg") mImageCaptureUri = Uri.fromFile(fTmp);

intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mImageCaptureUri);

try { intent.putExtra("return-data", true); startActivityForResult(intent, PICK_FROM_CAMERA); } catch (ActivityNotFoundException e) { Log.e("doTakePhotoAction", e); }}

protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode != RESULT_OK) { return; }

FAQ Android

- 13 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://android.developpez.com/faq/

Valide 1.5 switch (requestCode) {

case CROP_FROM_CAMERA: { //Wysie_Soh: After a picture is taken, it will go to PICK_FROM_CAMERA, which will then come here //after the image is cropped.

final Bundle extras = data.getExtras();

if (extras != null) { Bitmap photo = extras.getParcelable("data");

mPhoto = photo; mPhotoChanged = true; mPhotoImageView.setImageBitmap(photo); setPhotoPresent(true); }

//Wysie_Soh: Delete the temporary file File f = new File(mImageCaptureUri.getPath()); if (f.exists()) { f.delete(); }

InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); mgr.showSoftInput(mPhotoImageView, InputMethodManager.SHOW_IMPLICIT);

break; }

case PICK_FROM_CAMERA: { //Wysie_Soh: After an image is taken and saved to the location of mImageCaptureUri, come here //and load the crop editor, with the necessary parameters (96x96, 1:1 ratio)

Intent intent = new Intent ("com.android.camera.action.CROP"); intent.setClassName("com.android.camera", "com.android.camera.CropImage");

intent.setData(mImageCaptureUri); intent.putExtra("outputX", 96); intent.putExtra("outputY", 96); intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); intent.putExtra("scale", true); intent.putExtra("return-data", true); startActivityForResult(intent, CROP_FROM_CAMERA);

break;

} }}

Comment afficher la vidéo issue de la caméra ?

Auteurs : Le Trocquer Mickaël ,

Voici un code basique permettant d'afficher la prévisualisation vidéo de la caméra dans un composant :

Valide 1.5

public class CustomCameraView extends SurfaceView implements SurfaceHolder.Callback {

FAQ Android

- 14 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://android.developpez.com/faq/

Valide 1.5 SurfaceHolder holder; Camera camera;

public CustomCameraView(Context context) { super(context); setId(ID_CAMERA_VIEW); holder = this.getHolder(); holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); holder.addCallback(this); }

@Override public void surfaceCreated(SurfaceHolder holder) { camera = Camera.open(); try { camera.setPreviewDisplay(holder); } catch (Exception e) { e.printStackTrace(); } }

@Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { Parameters params = camera.getParameters(); camera.setParameters(params); camera.startPreview(); }

@Override public void surfaceDestroyed(SurfaceHolder holder) { camera.stopPreview(); camera.release(); }}

Comment obtenir les coordonnées GPS ?

Auteurs : Le Trocquer Mickaël ,

Voici un exemple de code permettant d'initialiser et de récupérer les coordonnées GPS :

Valide 1.5

//gps systemLocationManager locationManager = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);LocationListener gpsListener = new LocationListener() { @Override public void onLocationChanged(Location location) { //TODO : faire quelques choses avec les nouvelles coordonnées }

@Override public void onProviderDisabled(String arg0) { }

@Override public void onProviderEnabled(String arg0) { }

@Override public void onStatusChanged(String arg0, int arg1, Bundle arg2) {

FAQ Android

- 15 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://android.developpez.com/faq/

Valide 1.5 } }; Criteria criteria = new Criteria();criteria.setAccuracy(Criteria.ACCURACY_FINE);criteria.setAltitudeRequired(false);criteria.setBearingRequired(false);criteria.setCostAllowed(true);criteria.setPowerRequirement(Criteria.POWER_MEDIUM); locationManager.requestLocationUpdates(locationManager.getBestProvider(criteria, true), 100, 1, gpsListener);

Comment obtenir les données de la boussole ?

Auteurs : Le Trocquer Mickaël ,

Voici comment obtenir des informations sur la boussole :

Valide 1.5

//orientation sensorSensorEventListener sensorListener = new SensorEventListener(){ @Override public void onSensorChanged(SensorEvent evt) { float values[] = evt.values; if(evt.sensor.getType() == Sensor.TYPE_ORIENTATION) { int azimuth = int) values[0]; int pitch = (int) values[1]; int roll = (int) values[2]; //TODO : faire quelques choses avec ces valeurs } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy){ }}; SensorManager sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE); sensorManager.registerListener(sensorListener,sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),SensorManager.SENSOR_DELAY_FASTEST);

Comment obtenir les informations de l'accéléromètre ?

Auteurs : Le Trocquer Mickaël ,

Tout d'abord, il faut initialiser le sensor. Ensuite, il faut utiliser le listener qui se chargera de traiter les informationsprovenant de l'accéléromètre :

Valide 1.5

MonListener acceleroListener = new MonListener();//Initialisation de l'accélèromètreboolean accelSupported = m_SensorMgr.registerListener(this, m_AcceloSensor, SENSOR_DELAY_GAME);if (! accelSupported) { Log.e(TAG, "Acceleromètre inactif");

FAQ Android

- 16 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://android.developpez.com/faq/

Valide 1.5 m_SensorMgr.unregisterListener(this, m_AcceloSensor);}

Et voici le code du listener :

Valide 1.5

public class MonListener implements SensorEventListener { publoc boolean m_SensorOnPause = false; private long m_LastSensorUpdate = -1; public MonListener() { } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) {}

@Override public void onSensorChanged(SensorEvent event) { if (m_SensorOnPause) { return ; }

float dirX; float dirY;

if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { long curTime = System.currentTimeMillis(); // On autorise uniquement les mise à jours toutes les 50ms, sinon c'est trop rapide if (m_LastSensorUpdate == -1 || (curTime - m_LastSensorUpdate) > 30) { m_LastSensorUpdate = curTime; dirX = event.values[DATA_X]; dirY = event.values[DATA_Y];

//TODO : faire quelques choses avec les données... //.... } }

}}

Comment enregistrer un son ?

Auteurs : Le Trocquer Mickaël ,

La classe MediaRecorder permet de gérer les enregistrements audio et vidéo. On peut définir le format d'enregistrement(setOutputFormat) ainsi que l'encodage du flux (setAudioEncoder).

Valide 1.5

private MediaRecorder recorder; public void StartRecording() { Log.d("StartRecording", "On lance l'enregistrement"); recorder = new MediaRecorder(); recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

FAQ Android

- 17 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://android.developpez.com/faq/

Valide 1.5 recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); recorder.setOutputFile(path_file); try { recorder.prepare(); } catch (IllegalStateException e) { Log.e("StartRecording", "IllegalStateException " + e.getMessage()); e.printStackTrace(); } catch (IOException e) { Log.e("StartRecording", "IOException " + e.getMessage()); e.printStackTrace(); } recorder.start(); // Recording is now started}

public void StopRecording() { Log.e("StopRecording", "On stop l'enregistrement"); recorder.stop(); recorder.reset(); // You can reuse the object by going back to setAudioSource() step recorder.release(); // Now the object cannot be reused}

Comment prendre une photo avec l'appareil photo ?

Auteurs : Le Trocquer Mickaël ,

Voici une méthode pour prendre une photo en utilisant l'appareil photo disponible sur le téléphone.La photo est stockée dans le Canvas lors de l'appel à la méthode "capture".

Valide 1.5

private CameraDevice device = null;private int width = 320;private int height = 240;

public boolean open() { if (device != null) return true; device = CameraDevice.open(); if (device == null) return false; //parameters for the device mostly as specified in sample app CameraDevice.CaptureParams param = new CameraDevice.CaptureParams(); param.type = 1; // preview param.srcWidth = 1280; param.srcHeight = 960; param.leftPixel = 0; param.topPixel = 0; param.outputWidth = width; param.outputHeight = height; param.dataFormat = 2; // RGB_565 //attempt to configure the device here if (!device.setCaptureParams(param)) { device.close(); device = null; return false; } return true;}

FAQ Android

- 18 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://android.developpez.com/faq/

Valide 1.5public void close() { if (device == null) return; device.close(); device = null;}

public boolean capture(Canvas canvas) { if (device == null) { return false; } return device.capture(canvas);}

FAQ Android

- 19 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://android.developpez.com/faq/

Sommaire > Manipulation de l'IHM

Comment afficher une boîte de progression pendant un traitement long ?

Auteurs : Le Trocquer Mickaël ,

Il faut afficher la boîte de dialogue, puis lancer votre traitement potentiellement long.A la fin de votre opération, via un Handler, vous désactivez la boîte de dialogue.Voici un exemple :

Gérer une boîte de progression

public class MaClass extends Activity implements Runnable { private ProgressDialog pd; //... public void launchWait() { pd = ProgressDialog.show(this, "Patientez...", "En cours d'action longue", true,false); Thread thread = new Thread(this); thread.start(); } public void run() { //Ici mettre le code qui effectue une opération "longue" //... //... //Une fois l'opération finie, prévenir la boîte de dialogue //qu'elle peut se fermer : handler.sendEmptyMessage(0); } private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { //Le handler a reçu une notification //On ferme la boîte de dialogue //Les bonnes pratiques voudraient qu'on teste le msg ... pd.dismiss(); } };}

Comment masquer le clavier depuis le code ?

Auteurs : Le Trocquer Mickaël ,

Forcer le clavier à se cacher

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);

FAQ Android

- 20 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://android.developpez.com/faq/

Forcer le clavier à se cacherimm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);

Comment afficher des images dans un composant ?

Auteurs : Le Trocquer Mickaël ,

Il est possible d'insérer des images près d'un composant, sans déclarer un nouveau composant de type ImageView.Ceci peut se faire depuis la description xml via les attributs : "drawableLeft", "drawableRight", "drawableTop","drawableBottom".

Afficher une image à gauche d'un bouton

<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableLeft="@drawable/icon" android:text="Exemple image à gauche" android:minWidth="180dp" />

Comment réaliser rapidement les icônes pour votre application ?

Auteurs : Le Trocquer Mickaël ,

Google a mis en place un outil pour vous simplifier la création d'icônes. En quelques clics, l'icône sera téléchargeableet contiendra les versions low/middle/high dmi.http://android-ui-utils.googlecode.com/hg/asset-studio/dist/index.html

Comment enlever la barre de titre de vos applications Android ?

Auteurs : Le Trocquer Mickaël ,

Soit vous le faites depuis votre manifest.xml :

<activity android:theme="@android:style/Theme.NoTitleBar" ... />

Soit depuis votre code :

/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //Renseigner ce code avant l'appel à 'setContentView' this.requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.main); //...}

Ceci vous permet de masquer la barre sur chacune de vos activités.Il est également possible de masquer la barre pour toute l'application via le fichier manifest :

FAQ Android

- 21 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://android.developpez.com/faq/

<application android:theme="@android:style/Theme.NoTitleBar" ... />

Comment changer la valeur d'un Toast en cours d'affichage ?

Auteurs : Le Trocquer Mickaël ,

Il faut mémoriser l'instance du Toast affiché, puis changer son texte :

private Toast toast; private void showToast(String message){ if(toast!=null){ toast.setText(message); }else{ toast = Toast.makeText(this, message,Toast.LENGTH_SHORT); } toast.show();} public void maMethode() { //On affiche un premier Toast showToast("message1"); //... //On affiche ou modifie le Toast showToast("message2");}

Comment forcer une Activity à rester en mode portrait ?

Auteurs : Le Trocquer Mickaël ,

Il suffit de rajouter des paramètres pour décrire votre activité dans le fichier manifest.xml :

android:screenOrientation="portrait" android:configChanges="orientation"

Comment changer le design de mon bouton lors d'un clic ?

Auteurs : Le Trocquer Mickaël ,

Le SDK d'Android propose un mécanisme de "Selector" pour simplifier la tâche des développeurs pour gérer lesdifférents états d'un composant.Ainsi, via un fichier XML, vous pouvez décrire le comportement (visuel) de votre composant et indiquer un graphismeà adopter lorsque votre composant passe à l'état "pressé" ou qu'il obtient le focus etc.Exemple :

selector_bouton.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_focused="true" android:color="@color/testcolor1"/> <item android:state_pressed="true" android:state_enabled="false" android:color="@color/testcolor2" /> <item android:state_enabled="false" android:color="@color/testcolor3" />

FAQ Android

- 22 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://android.developpez.com/faq/

selector_bouton.xml <item android:color="@color/testcolor5"/> </selector>

Ainsi, via ce code, votre bouton changera de couleur en fonction de son état (enable/disable, pressed, focused, normal).Pour affecter un Selector à votre composant, cela se passe dans votre layout XML :

monlayout.xml

android:background="@drawable/selector_bouton"

Ici dans l'exemple, c'est la propriété "background" qui est impactée.Plus de détails par ici : http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList

Mon composant peut changer de taille, comment adapter le décor de ce dernier ?

Auteurs : Le Trocquer Mickaël ,

Le SDK d'Android propose un mécanisme de "9-patch" pour simplifier la tâche des développeurs pour gérerefficacement le graphisme des composants susceptibles de changer de taille.A partir de votre dessin initial, vous spécifiez des zones extensibles. Ces zones s'adapteront automatiquement en fonctionde la taille désirée.Un outil existe pour convertir vos graphismes en 9-patch : Draw9patch.Plus de détails par ici : http://developer.android.com/guide/topics/resources/drawable-resource.html#NinePatch

FAQ Android

- 23 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://android.developpez.com/faq/

Sommaire > Accès aux contenus

Comment accéder aux calendriers ?

Auteurs : Le Trocquer Mickaël ,

L'API permettant et manipuler les données du calendrier n'est pas encore ouverte au grand public, il faut donc allerinspecter un peu dans le code source d'Android afin de pouvoir travailler avec le calendrier.Ainsi pour récupérer, par exemple, la liste des calendriers de l'utilisateur :

Valide 1.5

static public void loadCalendar(Context context){ ContentResolver contentResolver = context.getContentResolver();

// Fetch a list of all calendars synced with the device, their display names and whether the // user has them selected for display. inal Cursor cursor = contentResolver.query(Uri.parse("content://calendar/calendars"), (new String[] { "_id", "displayName", "selected","color" }), null, null, null); // For a full list of available columns see http://tinyurl.com/yfbg76w

ArrayList<PersonnalCalendar> calendarList = new ArrayList<PersonnalCalendar>(); while (cursor.moveToNext()) {

final String _id = cursor.getString(0); final String displayName = cursor.getString(1); final Boolean selected = !cursor.getString(2).equals("0"); final Integer color = cursor.getInt(3); Log.e("LoadCalendar", "Id: " + _id + " Display Name: " + displayName + " Selected: " + selected); } }

Pour avoir la liste complète des champs utilisables dans le provider du Calendar, rendez vous à cette adresse :Calendar.java

Comment accéder aux contacts ?

Auteurs : Le Trocquer Mickaël ,

L'accès aux contacts se fait via les Content Providers. Suivant les versions du SDK, il y a plusieurs manières d'accéderà la liste des contacts.

Valide 1.5

public static void initContact(Activity anActivity) {

//Création de la projection String[] phoneProjection = new String[] { Contacts.Phones.PERSON_ID, Contacts.Phones.NAME, Contacts.Phones.NUMBER}; // Création et initialisation du curseur Cursor contactPhoneCursor = anActivity.getContentResolver().query(Contacts.Phones.CONTENT_URI, phoneProjection, null, null, null); // On laisse l'activity gérer le curseur anActivity.startManagingCursor(contactPhoneCursor);

FAQ Android

- 24 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://android.developpez.com/faq/

Valide 1.5 // On parcours le curseur if (contactPhoneCursor.moveToFirst()) { do { long personId = contactPhoneCursor.getLong(contactCursor.getColumnIndex(Contacts.Phones.PERSON_ID)); String name = contactPhoneCursor.getString(contactCursor.getColumnIndex(Contacts.Phones.NAME)); String phone = contactPhoneCursor.getString(contactCursor.getColumnIndex(Contacts.Phones.NUMBER)); //TODO : faire quelques choses avec ces informations... } while(contactCursor.moveToNext()); } }

A partir du SDK 2.0, il faut passer par la classe ContactsContract . Un exemple d'utilisation se trouve sur le site desdéveloppeurs Android : http://developer.android.com/resources/samples/ContactManager/index.html

FAQ Android

- 25 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://android.developpez.com/faq/

Sommaire > Utilisation du SDK

Comment jouer un son ?

Auteurs : Le Trocquer Mickaël ,

Voici le code pour lire un fichier son :

Valide 1.5

MediaPlayer mp = new MediaPlayer();try { mp.setDataSource(m_Path_file);} catch (IllegalArgumentException e) { Log.e("setDataSource", "IllegalArgumentException " + e.getMessage()); e.printStackTrace();} catch (IllegalStateException e) { Log.e("setDataSource", "IllegalStateException " + e.getMessage()); e.printStackTrace();} catch (IOException e) { Log.e("setDataSource", "IOException " + e.getMessage()); e.printStackTrace();}try { mp.prepare();} catch (IllegalStateException e) { Log.e("prepare", "IllegalStateException " + e.getMessage()); e.printStackTrace();} catch (IOException e) { Log.e("prepare", "IOException " + e.getMessage()); e.printStackTrace();}mp.start();mp.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { btStart.setEnabled(true); btStart.setImageResource(R.drawable.magneto_rec); btPlay.setEnabled(true); }});

Note : Référez-vous aux caractéristiques de votre mobile pour voir les formats lisibles. Certains formats sont lisiblespar défaut en fonction de la version du SDK (cf : http://developer.android.com/guide/appendix/media-formats.html )

Comment télécharger un fichier depuis une URL ?

Auteurs : Le Trocquer Mickaël ,

Voici une méthode pour télécharger et sauvegarder un fichier sur le téléphone à partir d'une URL :

public File getFile(String urlStr, String destFilePath) throws IOException, URISyntaxException { if (urlStr == null) { Log.d("getFile", "null"); return null; } URL url = null; url = new URL(urlStr); HttpURLConnection con; con = (HttpURLConnection) url.openConnection(); con.setUseCaches(true); InputStream is = con.getInputStream();

FAQ Android

- 26 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://android.developpez.com/faq/

BufferedInputStream bis = new BufferedInputStream(is, 8192); File streamFile = new File(destFilePath);

if (!streamFile.exists()) { FileOutputStream fw = new FileOutputStream(streamFile); while ((current = bis.read()) != -1) { fw.write((byte) current); } /* //ou : byte[] buffer = new byte[1024]; int bytes_read; while ((bytes_read = is.read(buffer)) != -1) { fw.write(buffer, 0, bytes_read); } */

fw.flush(); fw.close(); } else { return streamFile; } return streamFile; }

Comment afficher un "Toast" ?

Auteurs : Le Trocquer Mickaël ,

Les Toasts permettent d'afficher un petit message rapide à l'utilisateur. C'est moins intrusif qu'un popup, mais c'estréservé à des petites notifications.

Toast msg = Toast.makeText(Main.this, "Message", Toast.LENGTH_LONG);

msg.setGravity(Gravity.CENTER, msg.getXOffset() / 2, msg.getYOffset() / 2);

msg.show();

Comment afficher une boite de dialogue ?

Auteurs : Le Trocquer Mickaël ,

Voici le code pour afficher une boite de dialogue :

Valide 1.5

Builder builder = new AlertDialog.Builder(this); builder.setTitle("monTitre"); builder.setMessage("Voulez vous continuer ?"); builder.setPositiveButton("ok", null); builder.setNegativeButton("cancel", null);

FAQ Android

- 27 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://android.developpez.com/faq/

Valide 1.5 builder.show();

Comment se déplacer dynamiquement dans une liste ?

Auteurs : Le Trocquer Mickaël ,

int aPosition = 10;maList.setSelection(aPosition);

FAQ Android

- 28 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://android.developpez.com/faq/

Sommaire > Divers

Comment faire pivoter l'émulateur ?

Auteurs : Le Trocquer Mickaël ,

Vous pouvez faire pivoter l'écran de l'émulateur en utilisant la combinaison de touche CTRL-F12

Que faire en cas de perte de connexion avec le device ?

Auteurs : Le Trocquer Mickaël ,

Une perte de la connexion entre le device et ADB peut se produire.Cela se traduit par une impossibilité de piloter le périphérique (émulateur ou vrai téléphone) via le programme ADB(et donc via Eclipse et le plugin DDMS).Pour pallier à ce problème, il suffit de redémarrer le serveur gérant les transactions. En le tuant d'abord :

adb kill-server

Puis en le redémarrant :

adl start-server

Ensuite, pour vérifier la bonne gestion des devices, il suffit de vérifier lesquels sont connectés via la commande :

adb devices

Que faire si les logs dans la vue LogCat ne s'affichent plus ?

Auteurs : Le Trocquer Mickaël ,

Il arrive de temps en temps que les logs ne s'affichent plus correctement dans Eclipse dans la vue LogCat. Afin deretrouver le comportement normal, allez dans la vue "Devices" et présélectionnez votre device. Ceci devrait résoudrele problème et afficher de nouveau les logs dans la vue dédiée.

FAQ Android

- 29 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://android.developpez.com/faq/

Sommaire > Exemple de configuration de mobiles

Quelles sont les caractéristiques du HTC Evo 4G ?

Auteurs : Le Trocquer Mickaël ,

API Level : Google APIs API Level 7SD Card Size : 8GBSkin Resolution : 800×480Abstracted LCD Density : 217DPad Support : NoKeyboard Support : NoTrack-ball Support : No

Quelles sont les caractéristiques du Nexus One ?

Auteurs : Le Trocquer Mickaël ,

API Level : Google APIs API Level 8SD Card Size : 4GBSkin Resolution : WVGA800 (800×480)Abstracted LCD Density : 252DPad Support : No

Quelles sont les caractéristiques du Motorola Droid ?

Auteurs : Le Trocquer Mickaël ,

API Level : Google APIs API Level 7SD Card Size : 16GBSkin Resolution : WVGA854Abstracted LCD Density : 265Track-ball Support : No

Quelles sont les caractéristiques du G1 ?

Auteurs : Le Trocquer Mickaël ,

API Level : Google APIs API Level 5SD Card Size : 2GBSkin Resolution : HVGA (480x320)Abstracted LCD Density : 180DPad Support : No

Quelles sont les caractéristiques du Archos 5 ?

Auteurs : Le Trocquer Mickaël ,

API Level : Android 1.6 API Level 5SD Card Size : 2GBSkin Resolution : WVGA800Abstracted LCD Density : 194

FAQ Android

- 30 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2010 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://android.developpez.com/faq/

DPad Support : NoTrack-ball Support : NoKeyboard Support : NoCamera Support : NoGSM modem Support : No