Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parSylvain Lacroix Modifié depuis plus de 8 années
1
ListActivity_Wifi 1 Android: ListActivity et connexions en Wifi. Le nécessaire pour la réalisation d’un premier TP Notes de cours jean-michel Douin, douin au cnam point fr version : 29 Décembre 2014
2
ListActivity_Wifi 2 Sommaire Android connexions Wifi Obtenir la liste des points d’accès –Quel est le plus proche ? Devenir un point d’accès Se connecter à l’un des points d’accès Wifi p2p –http://developer.android.com/guide/topics/connectivity/wifip2p.html Wifi nsd –http://developer.android.com/training/connect-devices-wirelessly/nsd.htmlhttp://developer.android.com/training/connect-devices-wirelessly/nsd.html
3
ListActivity_Wifi 3 Bibliographie utilisée… à compléter Mobile Middleware, Architecture, Patterns and Practice, Sasu Tarkoma,ed. Wiley 2009 http://site.iugaza.edu.ps/aasamra/wp-content/uploads/wifi.pdf http://stackoverflow.com/questions/5322097/getting-started-with-wifi-on-android Le cours de Jean-Marc Farinone RSX116 2014 http://cedric.cnam.fr/~farinone/RSX116/WiFiAndroid.pdf http://developer.android.com/resources/index.html
4
ListActivity_Wifi 4 Android en pratique Avertissement ListActivity / ListView BroadcastReceiver –Intent –IntentFilter Le kit pour le TP
5
ListActivity_Wifi 5 Android seconde partie : Wifi Obtenir la liste des points d’accès Devenir un point d’accès Se connecter UDP p2p nsd
6
ListActivity_Wifi 6 Vocabulaire Les Essentiels –Activity Une activité est associée à une IHM –BroadcastReceiver Réception d’un message transmis par un émetteur via Android –Intent –Les notifications –IntentFilter Les filtres des notifications candidates –Service Une tache de fond sans IHM –ContentProvider La persistance des données
7
ListActivity_Wifi 7 Introduction … Classes Activity –Associée à une interface utilisateur Cycle de vie (démarrée, en pause, arrêtée, détruite…) –Peut démarrer d’autres activités, peut émettre des évènements(intentions, intent) Une configuration de type XML, permissions, librairies, ListActivity extends Activity –Dédiée aux affichages de liste d’items BroadcastReceiver –Réception des évènements systèmes ou d’une autre application –Émission et réception d’intentions (intent) Intent –Notifications, IntentFilter –Critères de sélection, éligibilité, mécanisme de résolution
8
ListActivity_Wifi 8 Communication inter applications Intent, comme notification –Souscription/Publication –Appeler, déclencher une autre activité Avec éventuellement des paramètres et des résultats attendus –L’intergiciel sélectionne la « bonne application » Selon les critères exigés par le souscripteur Critères précisés lors de la publication –Nécessaire adéquation à l’exécution services fournis / services requis
9
ListActivity_Wifi 9 Patron Publish-Subscribe/Intent & Context Source: http://roboticswikibook.org, rappelhttp://roboticswikibook.org
10
ListActivity_Wifi 10 Sous Android Mediator, classe Context –http://developer.android.com/reference/android/content/Context.htmlhttp://developer.android.com/reference/android/content/Context.html Subscriber, classe BroadcastReceiver –http://developer.android.com/reference/android/content/BroadcastReceiver.htmlhttp://developer.android.com/reference/android/content/BroadcastReceiver.html X,Y les thèmes, classe Intent –http://developer.android.com/reference/android/content/Intent.htmlhttp://developer.android.com/reference/android/content/Intent.html IntentFilter –http://developer.android.com/reference/android/content/IntentFilter.htmlhttp://developer.android.com/reference/android/content/IntentFilter.html
11
ListActivity_Wifi 11 Abonnement, Désabonnement Abonnement Au sein d’une activité public void onResume(){ super.onResume(); " IntentFilter filter = new IntentFilter(); filter.setAction( " list.update.ACTION " ); registerReceiver(receiver, filter); } Désabonnement public void onPause(){ super.onPause(); " unregisterReceiver(receiver); } private Receiver receiver;
12
ListActivity_Wifi 12 Notification public void onResume(){ Intent intent = new Intent(); intent.setAction( " list.update.ACTION " ); // intent.putExtra(clef, valeur); sendBroadcast(intent); }
13
ListActivity_Wifi 13 Le receveur class Receiver extends BroadcastReceiver{ public void onReceive(Context context, Intent intent){ int valeur = intent.getExtra(clef); …. }
14
ListActivity_Wifi 14 Un exemple / en TP Obtenir la liste des points d’accès wifi –http://stackoverflow.com/questions/5452940/how-can-i-get-android-wifi-scan- results-into-a-listhttp://stackoverflow.com/questions/5452940/how-can-i-get-android-wifi-scan- results-into-a-list Tenter une connexion sur l’un d’entre eux –http://stackoverflow.com/questions/8818290/how-to-connect-to-a-specific-wifi- network-in-android-programmaticallyhttp://stackoverflow.com/questions/8818290/how-to-connect-to-a-specific-wifi- network-in-android-programmatically –http://stackoverflow.com/questions/25142697/how-to-connect-android-device-to- wifi-with-specific-ssidhttp://stackoverflow.com/questions/25142697/how-to-connect-android-device-to- wifi-with-specific-ssid Trouver celui qui est le plus proche –http://stackoverflow.com/questions/2827662/android-how-to-scan-access-points- and-select-strongest-signal?rq=1http://stackoverflow.com/questions/2827662/android-how-to-scan-access-points- and-select-strongest-signal?rq=1 Fournir tous les clients connectés –http://stackoverflow.com/questions/8324215/ip-address-of-device-using-phone-as- access-pointhttp://stackoverflow.com/questions/8324215/ip-address-of-device-using-phone-as- access-point Connaître les adresses IP –http://stackoverflow.com/questions/21085459/is-there-any-method-to-find-the-ip- address-of-nearest-access-point-in-my-wifi-nehttp://stackoverflow.com/questions/21085459/is-there-any-method-to-find-the-ip- address-of-nearest-access-point-in-my-wifi-ne –http://www.gubatron.com/blog/2010/09/19/android-programming-how-to-obtain- the-wifis-corresponding-networkinterface/http://www.gubatron.com/blog/2010/09/19/android-programming-how-to-obtain- the-wifis-corresponding-networkinterface/
15
ListActivity_Wifi 15 Kit de développement nécessaire Une liste d’items en Android ? Comment obtenir la liste des points d’accès ? Comment obtenir la puissance du signal ? Mais avons-nous les adresses IP des points d’accès ?
16
ListActivity_Wifi 16 Le kit de développement nécessaire Une liste d’items en Android –ListActivity/ListView Comment obtenir la liste des points d’accès ? –WifiManager Un service au sein d’Android –BroadcastReceiver IntentFilter Comment obtenir la puissance du signal ? –ScanResult Attibut level Avoir les bonnes permissions –AndroidManifest.xml
17
ListActivity_Wifi 17 ListView / ListActivity Vue –ListView Présentation –Adapter la Vue d’une liste d’items aux souhaits du programmeur Le patron Stratégie (un autre support) –Utiliser des stratégies d’affichage standard Click –ListView / ListActivity onListItemClick onItemLongClick
18
ListActivity_Wifi 18 Bibliographie utilisée, ListView, ListActivity http://developer.android.com/resources/index.html Le cours de Victor Matos http://grail.cba.csuohio.edu/~matos/notes/cis-493/Android-Syllabus.pdf http://www.vogella.com/android.html Plusieurs livres Android A Programmers Guide - McGraw Hill Professional Android Application Development – Wrox Le livre de Mark Murphy - Pearson Une vidéo youtube Google IO the world of ListView par Romain Guy http://www.youtube.com/watch?v=wDBM6wVEO70
19
ListActivity_Wifi 19 Présentation d’une liste d’items Un composant graphique commun –À un grand nombre d’applications
20
ListActivity_Wifi 20 Item de la liste Un texte par Item LinearLayout +TextView (standard, prédéfini) Chaque item de la liste est une View Une Image, Un titre, un nombre par item LinearLayout + TableRow + ImageView + TextView Défini par l’application, un fichier XML
21
ListActivity_Wifi 21 ListView : Vue Une liste de vues présentant des items Chaque item s’affiche selon un format, –Format défini en XML, –Un adaptateur se charge de l’affichage, Un style de présentation : une stratégie d’affichage, est choisie Il existe des stratégies standard –Une liste d’items constituée de noms séparés d’un trait, ArrayAdapter –Une liste d’items constituée d’une grille, SimpleAdapter,
22
ListActivity_Wifi 22 Vue, Contrôleur et Modèle Vue La vue de la liste et sa stratégie d’affichage –Les items s’affichent selon une stratégie Standard, prédéfinie Style de présentation, stratégie d’affichage définie par l’utilisateur –setListAdapter Contrôleur Les interactions avec l’utilisateur –A chaque clic sur l’un des items une action est déclenchée Une action est déclenchée, un menu apparaît… –onListItemClick au sein d’une ListActivity Modèle La liste des objets Java représente le modèle –List, Item[], toute collection (une classe Java,…) –Tout changement d’état du modèle sera notifié à la vue Adéquation Vue/Modèle prise en charge par Android –((BaseAdapter)getListAdapter()). notifyDataSetChanged();
23
ListActivity_Wifi 23 Vue, style d’affichage Vue La vue de la liste et sa stratégie d’affichage –Les items s’affichent selon une stratégie –setListAdapter Standard, prédéfinie Style de présentation, stratégie d’affichage définie par l’utilisateur Patron Strategy –Usage classique : Layout en Swing –http://best-practice-software-engineering.ifs.tuwien.ac.at/patterns/strategy.htmlhttp://best-practice-software-engineering.ifs.tuwien.ac.at/patterns/strategy.html –Un rappel en quatre diapositives, en annexe
24
ListActivity_Wifi 24 Une activity, onCreate Redéfinition de la méthode onCreate –Cumul du comportement –Affectation de la Vue (res/layout/liste.xml) setContentView
25
ListActivity_Wifi 25 Une activity, le modèle Le modèle itemsCC : – items d’un certificat de compétences constitué de 6 unités NFP121, RSX116, NSY102, SMB116, SMB117, UARS01 –Unités enseignées au Cnam (présentiel et à distance) –Certificat de compétences intégrateur applications mobilesCertificat de compétences intégrateur applications mobiles
26
ListActivity_Wifi 26 Une activity, choix de la stratégie d’affichage Stratégie : setListAdapter( new ArrayAdapter ( – Choix de la stratégie standard d’affichage this, le contexte android.R.layout.simple_list_item_1, un texte par ligne, prédéfini itemsCC le modèle
27
ListActivity_Wifi 27 Exécution, le rendu Le rendu ici un item constitué d’un texte par ligne
28
ListActivity_Wifi 28 Un clic sur l’un des items onListItemClick
29
ListActivity_Wifi 29 Le fichier XML, Si ListActivity –@android:id/list Prédéfini et imposé
30
ListActivity_Wifi 30 Un intitulé change … Ce qui peut arriver, le modèle change –La vue est prévenue …. –Appel de la méthode de notifyDataSetChanged de l’adapter ListActivity ((BaseAdapter)getListAdapter()). notifyDataSetChanged(); –Adéquation par Android du modèle et de la vue
31
ListActivity_Wifi 31 Démonstration
32
ListActivity_Wifi 32 Le kit de développement nécessaire Une liste d’items en Android –ListActivity/ListView Comment obtenir la liste des points d’accès ? –WifiManager Un service au sein d’Android –BroadcastReceiver IntentFilter Comment obtenir la puissance du signal ? –ScanResult Attibut level Avoir les bonnes permissions –AndroidManifest.xml
33
ListActivity_Wifi 33 Liste des points d’accès –WifiManager Un service au sein d’Android –wifiManager.startScan(); Induit un sendbroadcast par le système –(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)
34
ListActivity_Wifi 34 Ajout de deux receveurs, le 1er Receveur de la liste des points d’accès –Receveur appelé régulièrement par Android, après l’appel de startScan()
35
ListActivity_Wifi 35 Ajout de deux receveurs, le2ème Receveur à l’écoute de ce qui se passe –Receveur appelé à chaque modification du réseau
36
ListActivity_Wifi 36 Le receveur de la liste des points d’accès Appelé à chaque changement d’état wifi par Android Actualisation de l’activité
37
ListActivity_Wifi 37 Le receveur du changement d’état Le test de la connexion a été perdue
38
ListActivity_Wifi 38 En détail WifiManager diffuse à chaque changement d’état –WIFI_STATE_CHANGED_ACTION Wifi h/w status has changed: enabling, enabled, disabling, disabled, and unknown EXTRA_WIFI_STATE, EXTRA_PREVIOUS_STATE –SUPPLICANT_CONNECTION_CHANGED_ACTION: Whenever connection state with the active supplicant (access point) changes Fired when a new conn is established, or existing conn is lost (EXTRA_NEW_STATE = true/false) –NEWTWORK_STATE_CHANGED_ACTION: Fired whenever wifi connectivity state changes EXTRA_NETWORK_INFO: NetworkInfo obj for current network status EXTRA_BSSID: BSSID of the access point that you’re connected to –RSSI_CHANGED_ACTION: Monitor the signal strength of the connected WiFi network EXTRA_NEW_RSSI: current signal strength
39
ListActivity_Wifi 39 Postliminaire onPause et les permissions :AndroidManifest.xml
40
ListActivity_Wifi 40 Comment se connecter avec un point d’accès Comment obtenir son adresse IP ? –Serait-ce la passerelle ?
41
ListActivity_Wifi 41 Le mobile devient point d’accès … http://stackoverflow.com/questions/12926738/how-to- create-access-point-programmaticallyhttp://stackoverflow.com/questions/12926738/how-to- create-access-point-programmatically
42
ListActivity_Wifi 42 Puissance du signal ? public ScanResult calculateBestAP(List sResults){ ScanResult bestSignal = null; for (ScanResult result : sResults) { if (bestSignal == null || WifiManager.compareSignalLevel(bestSignal.level, result.level) < 0) bestSignal = result; } return bestSignal; } http://stackoverflow.com/questions/2827662/android-how-to-scan-access- points-and-select-strongest-signal
43
ListActivity_Wifi 43 Annexes
44
ListActivity_Wifi 44 Architecture MVC, rappel Application: –Une liste d’item : le modèle, du java standard, portable –ListView + ListActivity : la Vue –Un Receiver : le Contrôleur
45
ListActivity_Wifi 45 Le patron stratégie, l’original Strategy –Une interface commune ConcreteStrategy –Quelle stratégie effective ? Context –Utilisation d’une stratégie choisie par le client, à la configuration http://www.dofactory.com/Patterns/PatternStrategy.aspx
46
ListActivity_Wifi 46 Le patron stratégie, l’original Strategy –Une interface commune pour tous les affichages Android : ListAdapter ConcreteStrategy –Quelle stratégie pour quel rendu ? Android : ArrayAdapter, SimpleAdapter, CursorAdapter, BaseAdapter, MonAdaptateur, MaStratégieDAffichage … Context –Utilisation d’une stratégie choisie par le client Android : ListView
47
ListActivity_Wifi 47 Un premier exemple et son affichage La ListView est décrite en XML –Le fichier res/layout/liste.xml –Avec une stratégie prédéfinie setListAdapter( new ArrayAdapter (contexte, Ressource_XML_Prédéfinie, String[] modèle ou List modèle Une ListActivity –Un affichage setContentView Un modèle –Un diplôme Cnam constitué de plusieurs unités d’enseignement NFP121, NSY102, RSX116, SMB116, SMB117, UARS01 –String[] ou List
48
ListActivity_Wifi 48 Le fichier est prédéfini –La liste est un composant graphique, son identifiant android.R.list La ListView est décrite en XML
49
ListActivity_Wifi 49 Démonstration Discussion –Architecture logicielle et Processus –…
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.