Programmation de composant mobiles aka Android



Documents pareils
Tutorial pour une application simple

Les fondamentaux du développement d applications Java

1.3 Gestion d'une application

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

TP au menu «UI ANDROID»

Projet Android (LI260) Cours 2

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

TP2 : Client d une BDD SqlServer

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

Développement sous Android

Programmer en JAVA. par Tama

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

TP SIN Programmation sur androïde Support : eclipse

Table des matières. Partie I Concepts de base Préface... VII

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

SOMMAIRE

Android et le Cloud Computing

1. Base de données SQLite

Développement Android. J.-F. Couchot

Introduction ANDROID

- TP Programmation Android - NFA024 Conservatoire National des Arts et Métiers

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

Tutoriel Android - TP de prise en main

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Projet de programmation (IK3) : TP n 1 Correction

Gestion des différentes tailles d écran

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Plateforme PAYZEN. Définition de Web-services

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

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Créer des applications Android

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Education Delivery Intelligent Tool

Alfstore workflow framework Spécification technique

Warren PAULUS. Android SDK et Android x86

Programmation mobile avec Android

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

Manipulation 4 : Application de «Change».

Programmation avec des objets : Cours 7. Menu du jour

Flex. Lire les données de manière contrôlée. Programmation Flex 4 Aurélien VANNIEUWENHUYZE

Table des matières Introduction Démarrage Les composants graphiques... 26

Développement Logiciel

Construire des plug-ins pour SAS Management Console SAS 9.1

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

WDpStats Procédure d installation

Design patterns. Design patterns - définition. Design patterns - avantages

Composants Logiciels. Le modèle de composant de CORBA. Plan

Auto-évaluation Programmation en Java

Android en action. Abdelkader Lahmadi Université de Lorraine

lundi 3 août 2009 Choose your language What is Document Connection for Mac? Communautés Numériques L informatique à la portée du Grand Public

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

as Architecture des Systèmes d Information

Encore plus de widgets et de conteneurs

Développement tablette Android. SophiaConf2011 Par Arnaud FARINE

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

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

DÉVELOPPEMENT ANDROID

WebParts. Version 1.0

Un ordonnanceur stupide

WEB page builder and server for SCADA applications usable from a WEB navigator

TD/TP PAC - Programmation n 3

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

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

Gestion du cache dans les applications ASP.NET

TP1 : Initiation à Java et Eclipse

Programmation par les Objets en Java

WiFi Security Camera Quick Start Guide. Guide de départ rapide Caméra de surveillance Wi-Fi (P5)

INITIATION AU LANGAGE JAVA

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

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

Déployer les Fonts, Icones, et Images avec Forms Services 11G

Java Licence Professionnelle CISII,

Programmation Android L3 informatique

Soon_AdvancedCache. Module Magento SOON. Rédacteur. Relecture & validation technique. Historique des révisions

HMI target Visu / PLC HMI. Pour réaliser une interface homme machine avec PLC control

Chapitre VI- La validation de la composition.

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Remote Method Invocation (RMI)

Initiation à JAVA et à la programmation objet.

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

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

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

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

Interfaces graphiques avec l API Swing

Création d un service web avec NetBeans 5.5 et SJAS 9

Installation et compilation de gnurbs sous Windows

TD/TP 1 Introduction au SDK d Android

Premiers Pas en Programmation Objet : les Classes et les Objets

Android UIThread, Thread, Handler et AsyncTask

Une introduction à Java

De Java à Android version 0.1

7 Développement d une application de MapReduce

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Machine virtuelle Java pour Palm TX

Bases de données et fournisseurs de contenu

Optimiser pour les appareils mobiles

Bases Java - Eclipse / Netbeans

Transcription:

Programmation de composant mobiles aka Android Wies law Zielonka 10 décembre 2015

Toolbar

Toolbar remplace Actionbar (Android 5.0 Lollipop) Dans AndroidManifest.xml utiliser un thème sans ActionBar : 1 <application 2.... 3 android:theme= @style /Theme.AppCompat. NoActionBar > 4 > dans build.gradle indiquer la bibliothèque de support : dependencies { compile filetree(dir: libs, include: [ *.jar ]) compile com.android.support:appcompat-v7:23.1.0... }

Toolbar à la place de Actionbar Dans le fichier layout de Activity ajouter : 1 <android. support. v7. widget. Toolbar 2 android:id= @+id/toolbar 3 android:layout width= match parent 4 android:layout height= wrap content 5 android:background= #2196F3 6 android:minheight=?attr/actionbarsize /> Instancier Toolbar dans l activité : 1 public class MainActivity extends AppCompatActivity { 2 protected void oncreate(bundle savedinstancestate) { 3 super. oncreate ( savedinstancestate ); 4 setcontentview (R. layout. activity main ); 5 Toolbar toolbar = (Toolbar ) findviewbyid(r. id. toolbar 6 setsupportactionbar ( toolbar ); 7 } 8 }

Créer fichier xml pour le menu Le fichier res/menu/menu afficher.xml : 1 menu xmlns:android= http://schemas. android.com/apk/res/androi 2 xmlns:app= http: //schemas. android.com/apk/res auto 3 xmlns:tools= http://schemas. android.com/tools 4 tools:context=. MainActivity > 5 6 <item android:id= @+id/action supprimer 7 android:title= @string /action supprimer 8 android:icon= @drawable/ic supp 9 app:showasaction= never /> 10 <item android:id= @+id/action annuler 11 android:title= @string /action annuler 12 app:showasaction= never /> 13 </menu> Les valeurs de l attribut showasaction : ifroom l élément parmi les actions principales si de la place never jamais parmi les actions principales always toujours parmi les actions principales withtext affiché le texte de l action

Créer le menu dans Activity 1 @Override 2 public boolean oncreateoptionsmenu(menu menu) { 3 // Inflate the menu; this adds items to the action bar if i 4 getmenuinflater (). inflate (R.menu. menu afficher, menu); 5 return true ; 6 }

Les traitement des menu items 1 public boolean onoptionsitemselected (MenuItem item) { 2 // Handle action bar item clicks here. The action bar wi 3 // automatically handle clicks on the Home/Up button, so 4 // as you specify a parent activity in AndroidManifest. xm 5 int id = item. getitemid (); 6 7 //noinspection SimplifiableIfStatement 8 switch( id ){ 9 case R. id. action supprimer : 10 //traitement de supprimer 11 return true ; 12 case R. id. action annuler : 13 //traitement d annuler 14 return true ; 15 default : 16 return super. onoptionsitemselected (item ); 17 } 18 }

Ajouter le bouton de retour vers l activité parent dans Toolbar Dans oncreate : 1 Toolbar toolbar = (Toolbar) findviewbyid(r. id. toolbar ); 2 setsupportactionbar ( toolbar ); 3 ActionBar bar = getsupportactionbar (); 4 bar. setdisplayhomeasupenabled ( true ); setdisplayhomeasupenabled(true) provoque l affichage du bouton back dans Toolbar.

Ajouter le bouton de retour vers l activité parent dans Toolbar Spécifier le parent de l activité dans AndroidManifest : 1 <activity android:name=. MaActivite 2 android:parentactivityname=. MainActivity 3...> 4 <activity 5 android:name=. ProductActivity 6 android:label= @string /title activity product 7 android:parentactivityname=. MainActivity > 8 <meta data 9 android:name= android. support.parent ACTIVITY 10 android:value=. MainActivity /> 11 </ activity> en mettant le nom du parent à la place de MainActivity. La solution avec meta pour la version 4.0 ou plus ancienne.

Notifications

Notifications Notification pour attirer l attention de l utilisateur : afficher status bar icon flasher la lumière faire vibrer le téléphone alerte sonore afficher des infos dans notification tray diffusion de BroadcastIntents Notification utilisées par les composants invisibles (Broadcast receivers, Services) pour alerter l utilisateur.

Notification Manager Notification manager gère les notifications : 1 String svcname = Context.NOTIFICATION SERVICE; 2 NotificationManager notificationmanager ; 3 notificationmanager = 4 ( NotificationManager ) getsystemservice(svcname);

Construire un Notification.Builder 1 private Notification. Builder notificationbuilder () { 2 Notification. Builder builder = 3 new Notification. Builder ( MainActivity. this ); 4 5 return builder. setsmallicon(r. drawable. ic launcher ) 6. setcontenttitle ( Notification Builder ) 7. setcontenttext( very long content text ) 8. setwhen(system. currenttimemillis ()) 9. setdefaults ( Notification.DEFAULT SOUND 10 Notification.DEFAULT VIBRATE) 11. setsound( 12 RingtoneManager. getdefaulturi ( 13 RingtoneManager.TYPE NOTIFICATION)) 14. setvibrate (new long []{1000, 1000, 1000, 1000, 1000} 15. setlights (Color.RED, 0, 1); 16 }

Envoyer une notification 1 private static final int NOTIFICATION ID=1; 2 3 notificationmanager. notify (NOTIFICATION ID, 4 notificationbuilder (). build ());

Supprimer Notification 1 notificationmanager. cancel (NOTIFICATION ID);

Services

Pourquoi les services Pour exécuter les opérations qui prennent du temps : récupérer les données sur internet, mettre à jour les ContentProviders, envoyer les Intents, declencher les notifications, jouer la musique. Possibilité de configurer pour restart si le service est arrêté par android.

Créer un service 1 public class MyService extends Service { 2 3 @Override 4 public void oncreate () { 5 // le code a executer a la creation de service 6 } 7 8 @Override 9 public IBinder onbind( Intent intent ) { 10 // a faire 11 } 12 13 @Override 14 public int onstartcommand( Intent intent, int flags, 15 int startid ) { 16 startbackgroundtask ( intent, startid ); 17 return Service.START STICKY; 18 } 19 20 private void startbackgroundtask ( Intent intent, 21 int startid ){ 22 // implementer le thread qui fait le travail en backgroud

Service.START STICKY le service sera automatiquement redémarré (avec Intent null) s il était arrêté par le système.

Enregistrer le service dans Manifest 1 <service android:enabled= true 2 android:name=. MyService 3 \>

Attacher le service à une activité C est nécessaire seulement si on a besoin d accéder au service depuis l activité. Dans le service : 1 @Override 2 public IBinder onbind( Intent intent ) { 3 return binder ; 4 } 5 6 public class MyBinder extends Binder { 7 MyService getservice () { 8 return MyService. this ; 9 } 10 } 11 private final IBinder binder = new MyBinder (); Binder - l objet distant créé dans un autre processus. IBinder l interface pour un objet distant.

Attacher le service à une activité Dans l activité : 1 private MyService serviceref ; 2 //gere la connexion entre le service et l activite 3 private ServiceConnection mconnection = 4 new ServiceConnection () { 5 public void onserviceconnected (ComponentName classname, 6 IBinder service ) { 7 // appele quand la connexion entre 8 // le service et activite est active 9 serviceref = (( MyService. MyBinder) service ). getservice (); 10 } 11 12 public void onservicedisconnected(componentname classname) { 13 // appele quand le service se deconnecte 14 serviceref = null ; 15 } 16 };

Attacher le service à une activité Dans l activité (suite) : 1 //attacher le service 2 private void bindtoservice () { 3 //attache l activite au service 4 Intent bindintent = new Intent (MyActivity. this, 5 MyService. class ); 6 bindservice ( bindintent, mconnection, 7 Context.BIND AUTO CREATE); 8 }

Démarrer le service Démarrer un service (dans l activité ou dans un autre service ou dans ContentProvider, peu importe) : 1 private void explicitstart () { 2 // demarrer explicitement MyService 3 Intent intent = new Intent ( this, MyService. class ); 4 // ajouter les extras si besoin 5 startservice ( intent ); 6 }

Arrêter le service Depuis une activité : 1 stopservice (new Intent ( this, MyService. class )); Le setvice peut s arrêter lui même en appelant la méthode 1 void stopself ()

IntentService IntentService est une sous classe de Service qui simplifie la tâche de gestion de thread background. Le thread background est créé automatiquement par IntentService. Il suffit de créer une sous classe de IntentService et d implémenter la méthode abstraite : 1 protected void onhandleintent ( Intent intent ) Cette méthode sera exécutée automatiquement dans un thread arrière plan. Par contre il vaut mieux éviter d implémenter onstartcommand dans IntentService.