APPLICATIONS JAVA. Ivan MADJAROV - 2014. Applications Java sous Android IvMad, 2011-2014 2



Documents pareils
APPLICATIONS JAVA. 1. Android. Développement d'activités Java sous Android. Android Partie I. L'architecture du système Android. Application Android

TP SIN Programmation sur androïde Support : eclipse

Les connexions sans fil avec Android. JMF (Tous droits réservés) 1

SOMMAIRE

Outils, langage et approche Android Une introduction. Nicolas Stouls lyon.fr

Développement sous Android

Projet Android (LI260) Cours 2

TP au menu «UI ANDROID»

Créer des applications Android

Programmation des applications mobiles avec Android. 1 Inspiré du cours de Olivier Le Goaer

Tutorial pour une application simple

Android Publish/Subscribe, GCM, Google Cloud Messaging : une introduction

Android et le Cloud Computing

Android en action. Abdelkader Lahmadi Université de Lorraine

Les fondamentaux du développement d applications Java

Android UIThread, Thread, Handler et AsyncTask

1.3 Gestion d'une application

Warren PAULUS. Android SDK et Android x86

Android 4 Les fondamentaux du développement d'applications Java

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Programmation Android L3 informatique

Programmer en JAVA. par Tama

Terminaux Mobiles Communicants

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

De Java à Android version 0.1

DÉVELOPPEMENT ANDROID

Module Architecture des systèmes mobiles : Android première partie Didier FERMENT - UPJV

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Education Delivery Intelligent Tool

Tutoriel Android. Pour démarrer la programmation d'applications Android

Partager la connexion Internet de son te le phone portable

Programmation mobile avec Android

Épisode 2 : Les outils de développement Alain Menu édition 2.1, septembre 2013

Programmation Mobile Android Master CCI

Développement sous Android

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Plateforme PAYZEN. Définition de Web-services

Introduction ANDROID

Développement web et mobile

ETI/Domo. Français. ETI-Domo Config FR

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Surveiller sa maison via son Smartphone sous Android

Projet de programmation (IK3) : TP n 1 Correction

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Introduction à JDBC. Accès aux bases de données en Java

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle

Avantic Software Présentation de solutions GED pour mobiles (Gestion Electronique de Documents)

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

TP2 : Client d une BDD SqlServer

Dis papa, c est quoi un bus logiciel réparti?

Remote Method Invocation (RMI)

Atouts du produit Partagez votre connexion Internet sans fil Étend et transforme n'importe quelle connexion Internet en un point d'accès Wi-Fi.

Chapitre 10. Les interfaces Comparable et Comparator 1

Encore plus de widgets et de conteneurs

Installation et prise en main

Le GéoPortail du Jura Présentation des fonctionnalités de la version mobile

Flux de données Lecture/Ecriture Fichiers

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7

Architectures Mobiles

Programmation par les Objets en Java

Développement Logiciel

Bluetooth pour Windows

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Canon Mobile Printing Premiers pas

RMI le langage Java XII-1 JMF

Le modèle client-serveur

Définition des Webservices Ordre de paiement par . Version 1.0

Edutab. gestion centralisée de tablettes Android

Documentation CAS à destination des éditeurs

Systems Manager Gestion de périphériques mobiles par le Cloud

Travail d'étude et de Recherche

Configurer ma Livebox Pro pour utiliser un serveur VPN

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée)

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

TD3: tableaux avancées, première classe et chaînes

Guide d'utilisation de Wireless Image Utility

TD/TP 1 Introduction au SDK d Android

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Threads. Threads. USTL routier 1

Application web de gestion de comptes en banques

Plan du cours. Historique du langage Nouveautés de Java 7

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Développement Android. J.-F. Couchot

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Java DataBaseConnectivity

MANUEL PROGRAMME DE GESTION DU CPL WI-FI

Projet Viticulture - TP 3 : bases de données distantes BTS Services informatiques aux organisations

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Sage CRM. Sage CRM 7.3 Guide du portable

Sophos Mobile Control Guide d'administration. Version du produit : 4

Guide de l'utilisateur de l'application mobile

Les messages d erreur d'applidis Client

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Spécifications du logiciel. Mise à jour : 24 février 2011 Nombre total de pages : 7

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Transcription:

APPLICATIONS JAVA Android Partie IV Ivan MADJAROV - 2014 Applications Java sous Android IvMad, 2011-2014 2 4. Application réseaux, Bluetooth, Wi-Fi, TCP, Géolocalisation Android L'objectif principal de ce cours est de découvrir la programmation sous Android, sa plate-forme de développement et les spécificités du développement embarqué sur téléphone mobile. Le cours s inspire, reprend, modifie et enrichi des supports disponibles sur Internet.

Applications Java sous Android IvMad, 2011-2014 3 Android : LogCat view Le développement pose toujours le problème de tester l'application avant sa mise en "service". La View de l'application est en mode graphique. Les logs permettent l'affichage en mode texte dans la fenêtre du LogCat. Pour afficher les opérateurs 'log' dans Eclipse il faut activer le LogCat view: Window->Show View->Other...->LogCat. Pour écrire un opérateur 'Log' il faut importer la classe android.util.log qui propose les méthodes Log.i() "Info", Log.d() "Debug", Log.w() "Warning", Log.e() "Error". Exemple: Log.i("NameActivity", "Bonjour, ça marche!"); Applications Java sous Android IvMad, 2011-2014 4 Android : Bluetooth (1) Bluetooth est un protocole d'interconnexion à de courtes distances, de type "peer-to-peer" avec une bande passante faible. La communication est cryptée entre les périphériques appariés. L'API Bluetooth permet de scanner et de lier les appareils entre eux et de transférer des données. Les connexions Bluetooth sont gérées par les classes suivantes : BluetoothAdapter : est l'unité locale où l'application Bluetooth est lancée. BluetoothDevice : est le périphérique distant avec lequel on cherche à communiquer. BluetoothSocket : fait une demande de connexion au périphérique distant par l'appel de la méthode createrfcommsockettoservicerecord. BluetoothServerSocket : installe un Socket Bluetooth serveur pour écouter les demandes de connexion entrantes en utilisant la méthode listenusingrfcommwithservicerecord.

Applications Java sous Android IvMad, 2011-2014 5 Android : Bluetooth (2) Pour s'assurer que le périphérique possède le Bluetooth on procéder à une vérification rapide en instanciant la classe BluetoothAdapter. Le retour de son objet va indiquer la présence ou non de cette option. BluetoothAdapter bluetoothadapter = BluetoothAdapter.getDefaultAdapter(); if (bluetoothadapter == null) Toast.makeText(BluetoothActivity.this, "Pas de Bluetooth!", Toast.LENGTH_SHORT).show(); else Toast.makeText(BluetoothActivity.this,"Le Bluetooth est disponible", Toast.LENGTH_SHORT).show(); Pour autoriser l'opération, il faut ajouter la permission d'accéder aux API Bluetooth en ajoutant la ligne suivante dans le fichier AndroidManifest.xml : <uses permission android:name="android.permission.bluetooth"/> Applications Java sous Android IvMad, 2011-2014 6 Android : Bluetooth (3) Le Bluetooth peut être disponible sur l'appareil mais non activé. On peut demander l'autorisation à l'utilisateur d'activer cette option. Pour cela, on appelle la méthode startactivityforresult avec un paramètre d'intent BluetoothAdapter.ACTION_REQUEST_ENABLE. On vérifie que le Bluetooth n'est pas activé et on demande son activation : private final static int BLUETOOTH_ACTIVATION = 1; BluetoothAdapter bluetoothadapter = BluetoothAdapter.getDefaultAdapter();... if (!bluetoothadapter.isenabled() { startactivityforresult(new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE), BLUETOOTH_ACTIVATION); Un dialog-box incitera l'utilisateur d'accepter ou non l'activation du Bluetooth sur son appareil. Le résultat de sa décision est récupérable par la méthode onactivityresult.

Applications Java sous Android IvMad, 2011-2014 7 Android : Bluetooth (4) On surcharge la méthode onactivityresult pour savoir si le Bluetooth est activé ou non. La méthode est appelée à la sortie de la boite de dialogue @Override protected void onactivityresult(int requestcode,int resultcode,intent data) { super.onactivityresult(requestcode, resultcode, data); if (requestcode == BLUETOOTH_ACTIVATION) { if (resultcode == RESULT_OK) { Toast.makeText(BluetoothActivity.this, "Bluetooth est activé", Toast.LENGTH_SHORT).show(); else { Toast.makeText(BluetoothActivity.this, "Bluetooth non activé", Toast.LENGTH_SHORT).show(); Applications Java sous Android IvMad, 2011-2014 8 Android : Bluetooth (5) Si on rend l'appareil Bluetooth détectable cela permet à d'autres appareils de le découvrir et de se connecter par la suite. Pour cela, on utilise la méthode startactivityforresult avec le paramètre Intent approprié : startactivityforresult(new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE), BLUETOOTH_SCAN); On obtient la liste des appareils déjà liés avec getboundeddevices. Set<BluetoothDevice> knowndevices = bluetoothadapter.getboundeddevices(); for (BluetoothDevice device : knowndevices) { Log.v("BluetoothActivity", "appareil = " + devices.getname()); Set : interface de collection pour des objets qui n'autorisent pas des doublons dans l'ensemble, existe au moins un nul (un tableau d'objets). for-each : boucle qui accède à chaque élément d'une collection d'objets comme dans un tableau (eg, ArrayList).

Applications Java sous Android IvMad, 2011-2014 9 Android : Bluetooth (6) Le code complet (étudiez les instructions 'Set' et 'for') : public class BluetoothDeviceListActivity extends Activity { private final static int BLUETOOTH_SCAN = 1; String s = ""; @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); BluetoothAdapter bluetoothadapter = BluetoothAdapter.getDefaultAdapter(); startactivityforresult(new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE),BLUETOOTH_SCAN); Set<BluetoothDevice> knowndevices = bluetoothadapter.getbondeddevices(); for (BluetoothDevice device : knowndevices) { s += "appareil = " + device.getname(); Toast.makeText(BluetoothDeviceListActivity.this,"Les Bluetooth liés: "+s,toast.length_short).show(); Applications Java sous Android IvMad, 2011-2014 10 Android : Bluetooth (7) La recherche d'appareils inconnus est un traitement asynchrone et gourmant en energie effectué par le Broadcast Receiver. Android permet de créer une classe qui implémente BroadcastReceiver pour recevoir des Intents et appliquer des comportements spécifiques au code. L interface BroadcastReceiver possède une seule méthode onreceive() qu'on doit implémenter. BroadcastReceiver bluetoothreceiver = new BroadcastReceiver() { public void onreceive(context context, Intent intent) { String action = intent.getaction(); if (BluetoothDevice.ACTION_FOUND.equals(action)) { BluetoothDevice device = intent.getparcelableextra(bluetoothdevice.extra_device); Toast.makeText(BluetoothActivity.this, "New Device = " + device.getname(), Toast.LENGTH_SHORT).show(); ;

Applications Java sous Android IvMad, 2011-2014 11 Android : BT (8) Mettre tout ensemble Ajouter les permissions dans le fichier manifest.xml Applications Java sous Android IvMad, 2011-2014 12 Android : Wi-Fi (1) Sous Android le Wi-Fi est géré par un WifiManager. LeWifiManager représente un Android Wi-Fi Connectivity Service. Il est capable de configurer une connexion Wi-Fi, de gérer une connexion en cours, de scanner pour des points d'accès et d'enregistrer tout changement dans une connexion Wi-Fi. Le Wi-FiManager utilise la méthode getsystemservice en précisant le type de service en constante: Context.WIFI_SERVICE String service = Context.WIFI_SERVICE; WifiManager wifi = (WifiManager)getSystemService(service); Pour autoriser l'utilisation du Wi-FiManager les paramètres des permissions pour accès et modification doivent être réglés dans le fichier manifest du projet. <uses permission android:name="android.permission.access_wifi_state"/> <uses permission android:name="android.permission.change_wifi_state"/>

Applications Java sous Android IvMad, 2011-2014 13 Android : Wi-Fi (2) Avec le Wi-FiManager on peut notamment activer ou désactiver la fonction Wi-Fi dans l'appareil par la méthode setwifienabled, obtenir le statut actuel du Wi-Fi par la méthode getwifistate ou vérifier si le Wi-Fi est activé avec la méthode iswifienabled. if (!wifi.iswifienabled()) if (wifi.getwifistate()!= WifiManager.WIFI_STATE_ENABLING) wifi.setwifienabled(true); La méthode getwifistate() retourne un entier entre 0 et 4 pour indiquer la situation en cours du WiFi de l'appareil : 0 WIFI_STATE_DISABLING 1 WIFI_STATE_DISABLED 2 WIFI_STATE_ENABLING 3 WIFI_STATE_ENABLED 4 WIFI_STATE_UNKNOWN Applications Java sous Android IvMad, 2011-2014 14 Android : Wi-Fi (3) Si on met tout ensemble on peut vérifier l'état de notre appareil : public class WiFiStateActivity extends Activity { String[] wifistate = {"WIFI_STATE_DISABLING", "WIFI_STATE_DISABLED", "WIFI_STATE_ENABLING", "WIFI_STATE_ENABLED", "WIFI_STATE_UNKNOWN"; @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); String service = Context.WIFI_SERVICE; WifiManager wifi = (WifiManager)getSystemService(service); Toast.makeText(this, "Wi Fi : " + wifistate[wifi.getwifistate()], Toast.LENGTH_LONG).show();

Applications Java sous Android IvMad, 2011-2014 15 Android : Wi-Fi (4) Pour obtenir des informations détaillées sur une connexion il faut se référer à la méthode getconnectioninfo de la classe WifiInfo. Cette classe offre un certain nombre de méthodes qui apportent des informations importantes sur les paramètres du réseau Wi-Fi: getssid : Retourne l'identificateur du réseau 802.11 en cours; getbssid() : Retourne l'identificateur de base de ce réseau; getmacaddress() : Retourne l'adresse MAC de l'appareil; getipaddress() : Retourne l'adresse IP de l'appareil en format 'int'. Une conversion en format 'String' est alors nécessaire. getlinkspeed() : Retourne le débit en Mbps getrssi() : Retourne le niveau de puissance reçu du réseau 802.11 connecté. Applications Java sous Android IvMad, 2011-2014 16 Android : Wi-Fi (5) Afficher les éléments d'une connexion Wi-Fi en ajoutant les composants dans un StringBuilder par la méthode append()

Applications Java sous Android IvMad, 2011-2014 17 Android : Wi-Fi (6) Avec le Wi-FiManager on peut procéder à la recherche des hotspot (bornes Wi-Fi) dans le voisinage par la méthode startscan. Pour effectuer cette opération il faut utiliser un Broadcasr Receiver avec un Intent SCAN_RESULTS_AVAILABLE_ACTION passé en paramètre. Cela assure un traitement asynchrone et la prise du résultat quand le scan a terminé. On appelle la méthode getscanresults pour obtenir les résultats sous la forme d'une liste d'objets ScanResult. Chaque objet du type ScanResult comporte les détails de la connexion repérée. Le résultat du Scan est récupéré dans un objet de type List<E>. C'est une collection d'éléments indexés à partir de zéro. List<ScanResult> results = wifi.getscanresults(); Applications Java sous Android IvMad, 2011-2014 18 Android : Wi-Fi (7) Retourne le nombre de hotspot détectés et le SSID avec le plus fort signale à proximité

Applications Java sous Android IvMad, 2011-2014 19 Java Android : Géolocalisation (1) En général une unité mobile Android propose des moyens de déterminer sa géolocalisation: Par le module GPS (Global Positioning System), Par triangulation des cellules mobiles (3G), Par le réseau Wifi. Pour une géolocalisation on implémente l'interface LocationListener. On s'adresse ensuite à l objet LocationManager pour gérer l'abonnement aux mises à jour des coordonnées GPS. Dans l'activité (View) on surcharge 4 méthodes : onproviderenabled est appelée quand une source de localisation est activée; onproviderdisabled est appelée quand une source de localisation est désactivée; onstatuschanged est appelée quand le statuts d une source change; onlocationchanged est appelée quand les coordonnées GPS changent. Applications Java sous Android IvMad, 2011-2014 20 Java Android : Géolocalisation (2) Pour s abonner à la mise à jour des coordonnées GPS, il faut utiliser la méthode requestlocationupdates(string, long, float, LocationListener) qui possède 4 arguments : Le provider utiliser pour recevoir les mises à jour des coordonnées utilisateurs (GPS / NETWORK ) L'intervalle minimum entre deux notifications (en millisecondes) L'intervalle minimum entre deux notifications (en mètre) L instance du LocationListener Il est conseillé de s abonner aux mises à jour des coordonnées GPS dans la méthode onresume et de se désabonner dans la méthode onstop afin de stopper l utilisateur des ressources de localisation alors que l application n en a plus l utilité, sinon le processus de mise à jour continu est la consommation de la batterie est importante.

Applications Java sous Android IvMad, 2011-2014 21 Java Android : Géolocalisation (3) Pour trouver sa position il faut activer le service et le Manager qui le gère : String servicestring = Context.LOCATION_SERVICE; LocationManager locationmanager = (LocationManager)getSystemService(serviceString); Le fichier AndroidManifest.xml doit être enrichi avec les permissions requises pour accéder aux services de localisation, Internet et au GPS: <uses permission android:name="android.permission.access_coarse_location" /> <uses permission android:name="android.permission.access_fine_location" /> <uses permission android:name="android.permission.internet" /> Applications Java sous Android IvMad, 2011-2014 22 Java Android : Géolocalisation (4) L'activité teste les 'Providers' disponibles

Applications Java sous Android IvMad, 2011-2014 23 Java Android : Géolocalisation (5) import android.app.activity; import android.content.context; import android.location.location; import android.location.locationlistener; import android.location.locationmanager; import android.os.bundle; import android.widget.toast; public class SimpleGeoLocalisationActivity extends Activity { private LocationManager locationmanager; private LocationListener locationlistener; public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_simple_geo_localisation); // On s'adresse à la classe LocationManager pour obtenir localisation GPS locationmanager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); locationlistener = new MyLocationListener(); // Géolocalisation par GPS locationmanager.requestlocationupdates(locationmanager.gps_provider, 0, 0, locationlistener); Applications Java sous Android IvMad, 2011-2014 24 Java Android : Géolocalisation (6) // Géolocalisation par les cellules du réseau GSM, précision 500m // locationmanager.requestlocationupdates(locationmanager.network_provider, 0, 0, locationlistener); public void onlocationchanged(location loc) { if (loc!= null) { Toast.makeText(getBaseContext(), "Localisation actuelle Lat: " + loc.getlatitude() + " Lng: " + loc.getlongitude() + " Alt: " + loc.getaltitude() + " Prec: " + loc.getaccuracy(), Toast.LENGTH_LONG).show(); public void onproviderdisabled(string provider) { public void onproviderenabled(string provider) { public void onstatuschanged(string provider, int status,bundle extras) {

Applications Java sous Android IvMad, 2011-2014 25 Java Android : Géolocalisation (7) Votre position en: Latitude, Longitude, Altitude Applications Java sous Android IvMad, 2011-2014 26 Android : StrictMode Dans une application Android, on doit éviter d'effectuer des opérations lentes sur le thread de l'interface utilisateur (GUI). Les opérations lecture et écriture de fichiers et l'accès au réseau sont considérées comme lentes, car le temps d'aboutir est indéfini, voir imprévisible. StrictMode est configuré pour une sécurité accrue, c.à.d. pour éviter de faire des choses incorrectes. L'exception NetworkOnMainThreadException est provoqué si l'accès réseau est effectué de l'interface utilisateur (le thread principal de l'application). A partir de l'android 3.0 on peut désactiver cette option pour faire des tests plus facilement sur l'accès réseau en plaçant dans la méthode oncreate() le code: StrictMode.ThreadPolicy policy = new StrictMode. ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy);

Applications Java sous Android IvMad, 2011-2014 27 Android : client-side TCP socket package ivmad.tcp.client; import java.io.datainputstream; import java.io.dataoutputstream; import java.io.ioexception; import java.net.socket; import java.net.inetaddress; import java.net.unknownhostexception; import android.app.activity; import android.os.bundle; import android.os.strictmode; import android.view.view; import android.widget.button; import android.widget.edittext; import android.widget.linearlayout; import android.widget.textview; public class ClientTCPAndroidActivity extends Activity { LinearLayout layout; EditText textout; TextView textin; Button buttonsend; public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); layout = new LinearLayout(this); layout.setorientation(linearlayout.vertical); textin = new TextView(this); textin.settext("message à soumettre"); textout = new EditText(this); buttonsend = new Button(this); buttonsend.settext("envoyer"); buttonsend.setonclicklistener(buttonsendonclicklistener); layout.addview(textin); layout.addview(textout); layout.addview(buttonsend); setcontentview(layout); Applications Java sous Android IvMad, 2011-2014 28 Android : client-side TCP socket Button.OnClickListener buttonsendonclicklistener = new Button.OnClickListener() { public void onclick(view v) { Socket socket = null; DataOutputStream dataoutputstream = null; DataInputStream datainputstream = null; InetAddress serveraddr; String serveripaddress = "192.168.0.141"; // Définir les droits d'accès au ressources réseaux StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); try { serveraddr = InetAddress.getByName(serverIpAddress); socket = new Socket(serverAddr, 1234); dataoutputstream = new DataOutputStream(socket.getOutputStream()); datainputstream = new DataInputStream(socket.getInputStream()); dataoutputstream.writeutf(textout.gettext().tostring()); textin.settext(datainputstream.readutf()); catch (UnknownHostException e) { e.printstacktrace(); catch (IOException e) { e.printstacktrace(); finally { if (socket!= null && dataoutputstream!= null && datainputstream!= null) { try { socket.close(); dataoutputstream.close(); datainputstream.close(); catch (IOException e) { e.printstacktrace(); ;

Applications Java sous Android IvMad, 2011-2014 29 Android : client-side TCP socket Le fichier AndroidManifest.xml contient la description des ressources et les autorisations d'accès au réseau Internet <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="ivmad.tcp.client" android:versioncode="1" android:versionname="1.0" > <uses-sdk android:minsdkversion="15" /> <uses-permission android:name="android.permission.internet" /> <uses-permission android:name="android.permission.access_network_state" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".clienttcpandroidactivity" 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> </manifest> L'autorisation d'accéder au réseau et configurée dans le Manifest de l'application Applications Java sous Android IvMad, 2011-2014 30 Android : client-side TCP socket Le serveur TCP reçoit le message du client Android Le client TCP basé Android envoie un message au Serveur basé TCP

Applications Java sous Android IvMad, 2011-2014 31 Android : client HTTP Avant de procéder à une connexion réseau, il faut s'assurer que cette connexion est disponible. Un téléphone portable, un Smartphone ou une tablette peut être hors réseau ou connexion Wifi désactivée. Cette disponibilité est testée avec les méthodes getactivenetworkinfo() et isconnected(). La classe ConnectivityManager détecte les connexions Wifi, GPRS, UMTS, etc. public boolean isnetworkavailable() { ConnectivityManager cm = (ConnectivityManager) getsystemservice(context.connectivity_service); NetworkInfo networkinfo = cm.getactivenetworkinfo(); // Si le réseau est indisponible networkinfo = null et la // méthode retourne false, sinon true. if (networkinfo!= null && networkinfo.isconnected()) { return true; return false; Applications Java sous Android IvMad, 2011-2014 32 Android : HTTP connection HttpURLConnection avec URL sont des classes disponibles depuis Java 2.0 standard. C'est un client léger d'usage général basé HTTP et approprié pour la plupart des applications Android. try { URL url = new URL("http://ivmad.free.fr/ic4"); HttpURLConnection con = (HttpURLConnection) url.openconnection(); // méthode qui lit un contenu sur le Stream d'entrée readstream(con.getinputstream()); catch (Exception e) { e.printstacktrace();

Applications Java sous Android IvMad, 2011-2014 33 Android : HTTP connection Lecture du Stream d'entrée dont la connexion est effectuée par HttpURLConnection et URL. private void readstream(inputstream in) { BufferedReader reader = null; try { reader = new BufferedReader(new InputStreamReader(in)); String line = "", str = ""; while ((line = reader.readline())!= null) { str += line; Toast.makeText(getApplicationContext(),str,Toast.LENGTH_LONG).show(); catch (IOException e) { e.printstacktrace(); finally { if (reader!= null) { reader.close();