{"id":16638,"date":"2016-03-14T11:33:29","date_gmt":"2016-03-14T10:33:29","guid":{"rendered":"https:\/\/www.web-dream.fr\/app\/?p=16638"},"modified":"2019-10-05T07:28:59","modified_gmt":"2019-10-05T06:28:59","slug":"tutoriel-android-utilisation-service","status":"publish","type":"post","link":"https:\/\/www.web-dream.fr\/app\/tutoriel-android-utilisation-service\/","title":{"rendered":"Tutoriel Android : Utilisation des services."},"content":{"rendered":"<p><strong>[AdSense-A]<\/strong><\/p>\n<p>Nous allons apprendre \u00e0 travers ce tutoriel Android comment utiliser un \u00ab\u00a0service\u00a0\u00bb qui tourne en tache de fond.<\/p>\n<p>Pour illustrer ce concept mal connu et un peu myst\u00e9rieux, nous allons cr\u00e9er une petite application pour faire une blague \u00e0 vos amis.<\/p>\n<p><!--more--><\/p>\n<h2>Fonctionnalit\u00e9 de l&rsquo;application.<\/h2>\n<table>\n<tbody>\n<tr>\n<td><a href=\"https:\/\/www.web-dream.fr\/app\/wp-content\/uploads\/2016\/03\/Tuto_android2.jpg\" rel=\"attachment wp-att-16658\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-16658 size-medium\" src=\"https:\/\/www.web-dream.fr\/app\/wp-content\/uploads\/2016\/03\/Tuto_android2-540x345.jpg\" alt=\"Tutoriel Android\" width=\"540\" height=\"345\" srcset=\"https:\/\/www.web-dream.fr\/app\/wp-content\/uploads\/2016\/03\/Tuto_android2-540x345.jpg 540w, https:\/\/www.web-dream.fr\/app\/wp-content\/uploads\/2016\/03\/Tuto_android2-200x128.jpg 200w, https:\/\/www.web-dream.fr\/app\/wp-content\/uploads\/2016\/03\/Tuto_android2-768x490.jpg 768w, https:\/\/www.web-dream.fr\/app\/wp-content\/uploads\/2016\/03\/Tuto_android2-960x612.jpg 960w, https:\/\/www.web-dream.fr\/app\/wp-content\/uploads\/2016\/03\/Tuto_android2.jpg 1000w\" sizes=\"auto, (max-width: 540px) 100vw, 540px\" \/><\/a><\/td>\n<td><a href=\"https:\/\/www.web-dream.fr\/app\/wp-content\/uploads\/2016\/03\/Tuto_android1.jpg\" rel=\"attachment wp-att-16652\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-16652 size-medium\" src=\"https:\/\/www.web-dream.fr\/app\/wp-content\/uploads\/2016\/03\/Tuto_android1-540x345.jpg\" alt=\"Tutoriel Android\" width=\"540\" height=\"345\" srcset=\"https:\/\/www.web-dream.fr\/app\/wp-content\/uploads\/2016\/03\/Tuto_android1-540x345.jpg 540w, https:\/\/www.web-dream.fr\/app\/wp-content\/uploads\/2016\/03\/Tuto_android1-200x128.jpg 200w, https:\/\/www.web-dream.fr\/app\/wp-content\/uploads\/2016\/03\/Tuto_android1-768x490.jpg 768w, https:\/\/www.web-dream.fr\/app\/wp-content\/uploads\/2016\/03\/Tuto_android1-960x612.jpg 960w, https:\/\/www.web-dream.fr\/app\/wp-content\/uploads\/2016\/03\/Tuto_android1.jpg 1000w\" sizes=\"auto, (max-width: 540px) 100vw, 540px\" \/><\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Le principe est simple, cette application remplace l&rsquo;\u00e9cran d&rsquo;accueil du smartphone par une image qui montre l&rsquo;\u00e9cran cass\u00e9.<\/p>\n<p>Lors du lancement, l&rsquo;application vous demande de valider la blague en appuyant sur le bouton central. Une fois l&rsquo;action effectu\u00e9e, l&rsquo;application se ferme et plus rien ne se passe jusqu&rsquo;\u00e0 la prochaine\u00a0 utilisation du smartphone par votre ami. Il d\u00e9couvrira alors son \u00e9cran d&rsquo;accueil avec une fausse image de l&rsquo;\u00e9cran cass\u00e9.<\/p>\n<p>Pas de stress, une fois que votre ami d\u00e9verrouillera son smartphone, la fausse image dispara\u00eetra.<\/p>\n<h2>Un service, c&rsquo;est quoi ?<\/h2>\n<p>Un service est un composant qui fonctionne en tache de fond. Comme pour une activit\u00e9, un service poss\u00e8de un cycle de vie (OnCreate(), OnStart(Intent i) ou OnStartCommand(Intent i, int flags, int startId) et OnDestroy()). La grande diff\u00e9rence avec une activit\u00e9 est qu&rsquo;il ne poss\u00e8de pas d&rsquo;interface graphique. L&rsquo;utilisateur ne peut donc pas interagir avec lui.<\/p>\n<h2>Pourquoi utiliser un service dans ce tutoriel Android ?<\/h2>\n<p>Dans certain cas, il est utile de cr\u00e9er un programme qui fonctionne en tache de fond sans que l&rsquo;application soit visible, comme par exemple un lecteur audio (qui fonctionne sans l&rsquo;application ouverte) ou un syst\u00e8me de minutage qui effectue des actions \u00e0 intervalle r\u00e9gulier.<\/p>\n<p>Dans notre exemple, nous devons utiliser un service pour que l&rsquo;utilisateur ne voit pas notre application en fonctionnement. L&rsquo;affichage de l&rsquo;image de l&rsquo;\u00e9cran cass\u00e9 doit se faire par un programme qui n&rsquo;a pas d&rsquo;interface graphique et qui n&rsquo;est donc pas visible par l&rsquo;utilisateur. Pour ne pas que notre ami ne soup\u00e7onne la blague, le service va ajouter l&rsquo;image lorsque le smartphone passe en veille. Pour cela nous allons utiliser dans le service un \u00ab\u00a0BroadcastReceiver\u00a0\u00bb qui nous permettra de d\u00e9tecter la mise en veille du smartphone ainsi que son d\u00e9verrouillage (pour supprimer l&rsquo;image et d\u00e9truire le service).<\/p>\n<h2>D\u00e9roulement de l&rsquo;application.<\/h2>\n<h3>L&rsquo;application visible.<\/h3>\n<ol>\n<li>Lancement de l&rsquo;application.<\/li>\n<li>Appuie sur le bouton central.<\/li>\n<li>Lancement du service.<\/li>\n<li>Fermeture de l&rsquo;application.<\/li>\n<\/ol>\n<h3>Le service.<\/h3>\n<ol>\n<li>D\u00e9tection de la mise en veille du smartphone.<\/li>\n<li>Ajout de l&rsquo;image de l&rsquo;\u00e9cran cass\u00e9.<\/li>\n<li>Lorsque l&rsquo;utilisateur appui sur le bouton pour sortir le smartphone de la veille, l&rsquo;image de l&rsquo;\u00e9cran cass\u00e9 est alors visible.<\/li>\n<li>D\u00e9tection du d\u00e9verrouillage du smartphone par l&rsquo;utilisateur.<\/li>\n<li>Suppression de l&rsquo;image et destruction du service.<\/li>\n<\/ol>\n<h2>Cr\u00e9ation de l&rsquo;application.<\/h2>\n<p>Note : pour suivre ce tutoriel, nous consid\u00e9rons que vous savez cr\u00e9er une nouvelle application Android avec Android Studio.<\/p>\n<ol>\n<li>Cr\u00e9ez une nouvelle application avec Android Studio en choisissant l&rsquo;option \u00ab\u00a0Blank Activity\u00a0\u00bb.<\/li>\n<li>Nommer l&rsquo;application (\u00ab\u00a0MyJokeApplication\u00a0\u00bb) dans notre cas.<\/li>\n<li>Une fois le projet cr\u00e9e par Android studio, ouvrez le fichier MainActivity.java et ajouter le code suivant :<\/li>\n<\/ol>\n<table>\n<tbody>\n<tr>\n<td>\n<pre>import android.content.Intent;\r\nimport android.support.v7.app.AppCompatActivity;\r\nimport android.os.Bundle;\r\nimport android.view.View;\r\nimport android.widget.Button;\r\n\r\npublic class MainActivity extends AppCompatActivity {\r\n\r\n    @Override\r\n    protected void onCreate(Bundle savedInstanceState) {\r\n        super.onCreate(savedInstanceState);\r\n        setContentView(R.layout.activity_main);\r\n\r\n        Button button_close_app_and_go_joke = (Button) findViewById(R.id.button_close_app_and_go_joke);\r\n        button_close_app_and_go_joke.setOnClickListener(new View.OnClickListener() {\r\n            public void onClick(View v) {\r\n\r\n                Intent service = new Intent(getApplicationContext(), JokeService.class);\r\n                startService(service); \/\/ Lancement du service\r\n                finish(); \/\/ Fermeture de l'application\r\n\r\n            }\r\n        });\r\n    }\r\n}<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>L&rsquo;activit\u00e9 principale est tr\u00e8s simple. Apr\u00e8s avoir charg\u00e9 l&rsquo;interface graphique (R.layout.activity_main), nous affectons un \u00ab\u00a0listener\u00a0\u00bb au bouton central afin de d\u00e9tecter le clic par l&rsquo;utilisateur.<\/p>\n<p>Lors d&rsquo;un clic sur le bouton, l&rsquo;application lance le service (par un Intent et startService) et se ferme automatiquement (finish()). Il y a donc plus que le service qui \u00ab\u00a0tourne\u00a0\u00bb en tache de fond.<\/p>\n<p>Le fichier graphique activity_main.xml est lui aussi tr\u00e8s simple :<\/p>\n<table>\n<tbody>\n<tr>\n<td>\n<pre>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\r\n&lt;RelativeLayout xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"\r\n    xmlns:tools=\"http:\/\/schemas.android.com\/tools\"\r\n    android:layout_width=\"match_parent\"\r\n    android:layout_height=\"match_parent\"\r\n    android:paddingBottom=\"@dimen\/activity_vertical_margin\"\r\n    android:paddingLeft=\"@dimen\/activity_horizontal_margin\"\r\n    android:paddingRight=\"@dimen\/activity_horizontal_margin\"\r\n    android:paddingTop=\"@dimen\/activity_vertical_margin\"\r\n    tools:context=\"fr.webdream.myjokeapplication.MainActivity\"&gt;\r\n\r\n    &lt;Button\r\n        android:layout_width=\"wrap_content\"\r\n        android:layout_height=\"wrap_content\"\r\n        android:text=\"@string\/fermerapplication\"\r\n        android:id=\"@+id\/button_close_app_and_go_joke\"\r\n        android:layout_centerVertical=\"true\"\r\n        android:layout_centerHorizontal=\"true\" \/&gt;\r\n&lt;\/RelativeLayout&gt;<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Pour fonctionner, le service doit \u00eatre dans un premier temps d\u00e9clar\u00e9 dans le fichier manifest de l&rsquo;application.<\/p>\n<table>\n<tbody>\n<tr>\n<td>\n<pre>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\r\n&lt;manifest xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"\r\n    package=\"fr.webdream.myjokeapplication\"&gt;\r\n\r\n    &lt;uses-permission android:name=\"android.permission.SYSTEM_ALERT_WINDOW\" \/&gt;\r\n    &lt;uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" \/&gt;\r\n\r\n    &lt;application\r\n        android:allowBackup=\"true\"\r\n        android:icon=\"@mipmap\/ic_launcher\"\r\n        android:label=\"@string\/app_name\"\r\n        android:supportsRtl=\"true\"\r\n        android:theme=\"@style\/AppTheme\"&gt;\r\n\r\n        &lt;activity android:name=\".MainActivity\"&gt;\r\n            &lt;intent-filter&gt;\r\n                &lt;action android:name=\"android.intent.action.MAIN\" \/&gt;\r\n\r\n                &lt;category android:name=\"android.intent.category.LAUNCHER\" \/&gt;\r\n            &lt;\/intent-filter&gt;\r\n        &lt;\/activity&gt;\r\n\r\n        <span style=\"color: #339966;\">&lt;service<\/span>\r\n<span style=\"color: #339966;\">            android:name=\".JokeService\"<\/span>\r\n<span style=\"color: #339966;\">            android:enabled=\"true\"<\/span>\r\n<span style=\"color: #339966;\">            android:exported=\"true\"&gt;&lt;\/service&gt;<\/span>\r\n\r\n    &lt;\/application&gt;\r\n\r\n&lt;\/manifest&gt;<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Une fois le service lanc\u00e9 et pour d\u00e9tecter la mise en veille et le d\u00e9verrouillage du smartphone nous allons initialiser le \u00ab\u00a0BroadcastReceiver\u00a0\u00bb dans le \u00ab\u00a0onStartCommand\u00a0\u00bb du service.<\/p>\n<table>\n<tbody>\n<tr>\n<td>\n<pre>public int onStartCommand (Intent intent, int flags, int startId){\r\n      try {\r\n        IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);\r\n        filter.addAction(Intent.ACTION_SCREEN_OFF); \/\/d\u00e9tection de la mise en veille du smartphone\r\n        filter.addAction(Intent.ACTION_USER_PRESENT); \/\/d\u00e9tection du d\u00e9verrouillage du smartphone\r\n        BroadcastReceiver mReceiver = new receiverScreen();\r\n        registerReceiver(mReceiver, filter);\r\n    } catch (Exception e) {\r\n\r\n    }\r\n    return START_STICKY;\r\n}\r\n\r\npublic class receiverScreen extends BroadcastReceiver {\r\n\r\n    @Override\r\n    public void onReceive(Context context, Intent intent) {\r\n\r\n        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)){\r\n            Show_joke(); \/\/Affichage de l'image de l'\u00e9cran cass\u00e9\r\n        }\r\n        if (intent.getAction().equals(Intent.ACTION_USER_PRESENT)){\r\n            hide_broken_screen_and_destroy_service(); \/\/On supprime l'image et on d\u00e9truit le service.\r\n        }\r\n    }\r\n\r\n}<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Pour afficher \/ supprimer l&rsquo;image nous utilisons le \u00ab\u00a0windowManager\u00a0\u00bb, qui permet d&rsquo;ajouter une vue \u00e0 l&rsquo;\u00e9cran du smartphone.<\/p>\n<table>\n<tbody>\n<tr>\n<td>\n<pre>private void Show_joke(){\r\n\r\n    if (showing){return;} \/\/Si l'image est d\u00e9j\u00e0 affich\u00e9e, on sort.\r\n\r\n    windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);\r\n    \r\n    broken_screen_View = new ImageView(this); \/\/Cr\u00e9ation de l'image de l'\u00e9cran cass\u00e9\r\n    Bitmap bmp_broken_screen;\r\n    if(getResources().getDisplayMetrics().widthPixels&gt;getResources().getDisplayMetrics().heightPixels) \/\/On choisi l'image en fonction du mode portrait ou en paysage\r\n    {\r\n        bmp_broken_screen = BitmapFactory.decodeResource(getResources(), R.drawable.broken_screen_land);\r\n    }\r\n    else\r\n    {\r\n        bmp_broken_screen = BitmapFactory.decodeResource(getResources(), R.drawable.broken_screen);\r\n    }\r\n    broken_screen_View.setImageBitmap(bmp_broken_screen);\r\n    broken_screen_View.setScaleType(ImageView.ScaleType.FIT_XY);\r\n\r\n    \/\/D\u00e9finition des param\u00e8tres a appliquer \u00e0 l'image\r\n    final WindowManager.LayoutParams params = new WindowManager.LayoutParams(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED|WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN|WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT);\r\n\r\n    \/\/Affichage de l'image\r\n    windowManager.addView(broken_screen_View, params);\r\n    showing=true;\r\n}\r\n\r\nprivate void hide_broken_screen_and_destroy_service(){\r\n    windowManager.removeViewImmediate(broken_screen_View);\r\n    showing=false;\r\n    stopSelf();\r\n}<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Ce qui nous donne le service complet suivant :<\/p>\n<table>\n<tbody>\n<tr>\n<td>\n<pre>package fr.webdream.myjokeapplication;\r\n\r\nimport android.app.Service;\r\nimport android.content.BroadcastReceiver;\r\nimport android.content.Context;\r\nimport android.content.Intent;\r\nimport android.content.IntentFilter;\r\nimport android.graphics.Bitmap;\r\nimport android.graphics.BitmapFactory;\r\nimport android.os.IBinder;\r\nimport android.graphics.PixelFormat;\r\nimport android.util.Log;\r\nimport android.view.WindowManager;\r\nimport android.widget.ImageView;\r\n\r\npublic class JokeService extends Service {\r\n\r\n    private WindowManager windowManager;\r\n    private ImageView broken_screen_View;\r\n    private Boolean showing;\r\n\r\n    public JokeService() {\r\n    }\r\n\r\n    @Override\r\n    public IBinder onBind(Intent intent) {\r\n        \/\/ TODO: Return the communication channel to the service.\r\n        return null;\r\n    }\r\n\r\n    public int onStartCommand (Intent intent, int flags, int startId){\r\n\r\n          try {\r\n            IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);\r\n\r\n            filter.addAction(Intent.ACTION_SCREEN_OFF);\r\n            filter.addAction(Intent.ACTION_USER_PRESENT);\r\n\r\n            BroadcastReceiver mReceiver = new receiverScreen();\r\n\r\n            registerReceiver(mReceiver, filter);\r\n        } catch (Exception e) {\r\n\r\n        }\r\n\r\n        return START_STICKY;\r\n    }\r\n\r\n    @Override\r\n    public void onCreate() {\r\n        super.onCreate();\r\n        showing=false;\r\n    }\r\n\r\n    @Override\r\n    public void onDestroy(){\r\n        Log.v(\"SERVICE\", \"Service killed\");\r\n        if (showing){\r\n            windowManager.removeViewImmediate(broken_screen_View);\r\n            showing=false;\r\n        }\r\n        super.onDestroy();\r\n    }\r\n\r\n    private void Show_joke(){\r\n\r\n        if (showing){return;} \/\/Si l'image est d\u00e9j\u00e0 affich\u00e9e, on sort.\r\n\r\n        windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);\r\n\r\n        broken_screen_View = new ImageView(this); \/\/Cr\u00e9ation de l'image de l'\u00e9cran cass\u00e9\r\n        Bitmap bmp_broken_screen;\r\n        if(getResources().getDisplayMetrics().widthPixels&gt;getResources().getDisplayMetrics().heightPixels) \/\/On choisi l'image en fonction du mode portrait ou en paysage\r\n        {\r\n            bmp_broken_screen = BitmapFactory.decodeResource(getResources(), R.drawable.broken_screen_land);\r\n        }\r\n        else\r\n        {\r\n            bmp_broken_screen = BitmapFactory.decodeResource(getResources(), R.drawable.broken_screen);\r\n        }\r\n        broken_screen_View.setImageBitmap(bmp_broken_screen);\r\n        broken_screen_View.setScaleType(ImageView.ScaleType.FIT_XY);\r\n\r\n        \/\/D\u00e9finition des param\u00e8tres a appliquer \u00e0 l'image\r\n        final WindowManager.LayoutParams params = new WindowManager.LayoutParams(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED|WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN|WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT);\r\n\r\n        \/\/Affichage de l'image\r\n        windowManager.addView(broken_screen_View, params);\r\n        showing=true;\r\n    }\r\n\r\n    private void hide_broken_screen_and_destroy_service(){\r\n        windowManager.removeViewImmediate(broken_screen_View);\r\n        showing=false;\r\n        stopSelf();\r\n    }\r\n\r\n    public class receiverScreen extends BroadcastReceiver {\r\n\r\n        @Override\r\n        public void onReceive(Context context, Intent intent) {\r\n\r\n            if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)){\r\n                Show_joke(); \/\/Affichage de l'image de l'\u00e9cran cass\u00e9\r\n            }\r\n            if (intent.getAction().equals(Intent.ACTION_USER_PRESENT)){\r\n                hide_broken_screen_and_destroy_service(); \/\/On supprime l'image et on d\u00e9truit le service.\r\n            }\r\n        }\r\n\r\n    }\r\n\r\n}<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>En conclusion, l&rsquo;utilisation de service dans une application Android reste simple et peut \u00eatre tr\u00e8s utile dans des applications ou des actions en tache de fond doivent \u00eatre effectu\u00e9es.<\/p>\n<p>Si vous d\u00e9sirez reproduire cette application, vous trouverez ici les deux fichiers images (portrait et paysage) utilis\u00e9s :<\/p>\n<p><span style=\"text-decoration: underline;\"><a href=\"https:\/\/www.web-dream.fr\/app\/wp-content\/uploads\/2016\/03\/broken_screen.png\" target=\"_blank\" rel=\"noopener noreferrer\">Image portrait<\/a><\/span><\/p>\n<p><span style=\"text-decoration: underline;\"><a href=\"https:\/\/www.web-dream.fr\/app\/wp-content\/uploads\/2016\/03\/broken_screen_land.png\" target=\"_blank\" rel=\"noopener noreferrer\">Image paysage<\/a><\/span><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>[AdSense-A] Nous allons apprendre \u00e0 travers ce tutoriel Android comment utiliser un \u00ab\u00a0service\u00a0\u00bb qui tourne en tache de fond. Pour illustrer ce concept mal connu et un peu myst\u00e9rieux, nous allons cr\u00e9er une petite application pour faire une blague \u00e0 vos amis.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[197,200],"tags":[],"class_list":["post-16638","post","type-post","status-publish","format-standard","hentry","category-tutoriel","category-tutoriel-android"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Tutoriel Android : Utilisation des services. - WEB DREAM<\/title>\n<meta name=\"description\" content=\"Tutoriel Android pour l&#039;utilisation de service dans une application. Exemple au travers une application simple.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.web-dream.fr\/app\/tutoriel-android-utilisation-service\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutoriel Android : Utilisation des services. - WEB DREAM\" \/>\n<meta property=\"og:description\" content=\"Tutoriel Android pour l&#039;utilisation de service dans une application. Exemple au travers une application simple.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.web-dream.fr\/app\/tutoriel-android-utilisation-service\/\" \/>\n<meta property=\"og:site_name\" content=\"WEB DREAM\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/pages\/Web-Dream\/687618201332547\" \/>\n<meta property=\"article:published_time\" content=\"2016-03-14T10:33:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-10-05T06:28:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.web-dream.fr\/app\/wp-content\/uploads\/2016\/03\/Tuto_android2-540x345.jpg\" \/>\n<meta name=\"author\" content=\"michel\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"michel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.web-dream.fr\\\/app\\\/tutoriel-android-utilisation-service\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.web-dream.fr\\\/app\\\/tutoriel-android-utilisation-service\\\/\"},\"author\":{\"name\":\"michel\",\"@id\":\"https:\\\/\\\/www.web-dream.fr\\\/app\\\/#\\\/schema\\\/person\\\/5fdddc6970607988081c620db9306dee\"},\"headline\":\"Tutoriel Android : Utilisation des services.\",\"datePublished\":\"2016-03-14T10:33:29+00:00\",\"dateModified\":\"2019-10-05T06:28:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.web-dream.fr\\\/app\\\/tutoriel-android-utilisation-service\\\/\"},\"wordCount\":744,\"publisher\":{\"@id\":\"https:\\\/\\\/www.web-dream.fr\\\/app\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.web-dream.fr\\\/app\\\/tutoriel-android-utilisation-service\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.web-dream.fr\\\/app\\\/wp-content\\\/uploads\\\/2016\\\/03\\\/Tuto_android2-540x345.jpg\",\"articleSection\":[\"Tutoriel\",\"Tutoriel Android\"],\"inLanguage\":\"fr-FR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.web-dream.fr\\\/app\\\/tutoriel-android-utilisation-service\\\/\",\"url\":\"https:\\\/\\\/www.web-dream.fr\\\/app\\\/tutoriel-android-utilisation-service\\\/\",\"name\":\"Tutoriel Android : Utilisation des services. - WEB DREAM\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.web-dream.fr\\\/app\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.web-dream.fr\\\/app\\\/tutoriel-android-utilisation-service\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.web-dream.fr\\\/app\\\/tutoriel-android-utilisation-service\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.web-dream.fr\\\/app\\\/wp-content\\\/uploads\\\/2016\\\/03\\\/Tuto_android2-540x345.jpg\",\"datePublished\":\"2016-03-14T10:33:29+00:00\",\"dateModified\":\"2019-10-05T06:28:59+00:00\",\"description\":\"Tutoriel Android pour l'utilisation de service dans une application. Exemple au travers une application simple.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.web-dream.fr\\\/app\\\/tutoriel-android-utilisation-service\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.web-dream.fr\\\/app\\\/tutoriel-android-utilisation-service\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.web-dream.fr\\\/app\\\/tutoriel-android-utilisation-service\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.web-dream.fr\\\/app\\\/wp-content\\\/uploads\\\/2016\\\/03\\\/Tuto_android2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.web-dream.fr\\\/app\\\/wp-content\\\/uploads\\\/2016\\\/03\\\/Tuto_android2.jpg\",\"width\":1000,\"height\":638},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.web-dream.fr\\\/app\\\/tutoriel-android-utilisation-service\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.web-dream.fr\\\/app\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutoriel Android : Utilisation des services.\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.web-dream.fr\\\/app\\\/#website\",\"url\":\"https:\\\/\\\/www.web-dream.fr\\\/app\\\/\",\"name\":\"WEB DREAM\",\"description\":\"Cr\u00e9ateur d&#039;application Iphone \\\/ Ipad et Android\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.web-dream.fr\\\/app\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.web-dream.fr\\\/app\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.web-dream.fr\\\/app\\\/#organization\",\"name\":\"Web Dream\",\"url\":\"https:\\\/\\\/www.web-dream.fr\\\/app\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.web-dream.fr\\\/app\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.web-dream.fr\\\/app\\\/wp-content\\\/uploads\\\/2016\\\/03\\\/Logo-Web-dream_500.jpg\",\"contentUrl\":\"https:\\\/\\\/www.web-dream.fr\\\/app\\\/wp-content\\\/uploads\\\/2016\\\/03\\\/Logo-Web-dream_500.jpg\",\"width\":500,\"height\":237,\"caption\":\"Web Dream\"},\"image\":{\"@id\":\"https:\\\/\\\/www.web-dream.fr\\\/app\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/pages\\\/Web-Dream\\\/687618201332547\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.web-dream.fr\\\/app\\\/#\\\/schema\\\/person\\\/5fdddc6970607988081c620db9306dee\",\"name\":\"michel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2c320e000f550670cb52e59ac2af654b1352deef6e0c4165566b8fe66d4bd8a9?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2c320e000f550670cb52e59ac2af654b1352deef6e0c4165566b8fe66d4bd8a9?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2c320e000f550670cb52e59ac2af654b1352deef6e0c4165566b8fe66d4bd8a9?s=96&d=mm&r=g\",\"caption\":\"michel\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tutoriel Android : Utilisation des services. - WEB DREAM","description":"Tutoriel Android pour l'utilisation de service dans une application. Exemple au travers une application simple.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.web-dream.fr\/app\/tutoriel-android-utilisation-service\/","og_locale":"fr_FR","og_type":"article","og_title":"Tutoriel Android : Utilisation des services. - WEB DREAM","og_description":"Tutoriel Android pour l'utilisation de service dans une application. Exemple au travers une application simple.","og_url":"https:\/\/www.web-dream.fr\/app\/tutoriel-android-utilisation-service\/","og_site_name":"WEB DREAM","article_publisher":"https:\/\/www.facebook.com\/pages\/Web-Dream\/687618201332547","article_published_time":"2016-03-14T10:33:29+00:00","article_modified_time":"2019-10-05T06:28:59+00:00","og_image":[{"url":"https:\/\/www.web-dream.fr\/app\/wp-content\/uploads\/2016\/03\/Tuto_android2-540x345.jpg","type":"","width":"","height":""}],"author":"michel","twitter_misc":{"\u00c9crit par":"michel","Dur\u00e9e de lecture estim\u00e9e":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.web-dream.fr\/app\/tutoriel-android-utilisation-service\/#article","isPartOf":{"@id":"https:\/\/www.web-dream.fr\/app\/tutoriel-android-utilisation-service\/"},"author":{"name":"michel","@id":"https:\/\/www.web-dream.fr\/app\/#\/schema\/person\/5fdddc6970607988081c620db9306dee"},"headline":"Tutoriel Android : Utilisation des services.","datePublished":"2016-03-14T10:33:29+00:00","dateModified":"2019-10-05T06:28:59+00:00","mainEntityOfPage":{"@id":"https:\/\/www.web-dream.fr\/app\/tutoriel-android-utilisation-service\/"},"wordCount":744,"publisher":{"@id":"https:\/\/www.web-dream.fr\/app\/#organization"},"image":{"@id":"https:\/\/www.web-dream.fr\/app\/tutoriel-android-utilisation-service\/#primaryimage"},"thumbnailUrl":"https:\/\/www.web-dream.fr\/app\/wp-content\/uploads\/2016\/03\/Tuto_android2-540x345.jpg","articleSection":["Tutoriel","Tutoriel Android"],"inLanguage":"fr-FR"},{"@type":"WebPage","@id":"https:\/\/www.web-dream.fr\/app\/tutoriel-android-utilisation-service\/","url":"https:\/\/www.web-dream.fr\/app\/tutoriel-android-utilisation-service\/","name":"Tutoriel Android : Utilisation des services. - WEB DREAM","isPartOf":{"@id":"https:\/\/www.web-dream.fr\/app\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.web-dream.fr\/app\/tutoriel-android-utilisation-service\/#primaryimage"},"image":{"@id":"https:\/\/www.web-dream.fr\/app\/tutoriel-android-utilisation-service\/#primaryimage"},"thumbnailUrl":"https:\/\/www.web-dream.fr\/app\/wp-content\/uploads\/2016\/03\/Tuto_android2-540x345.jpg","datePublished":"2016-03-14T10:33:29+00:00","dateModified":"2019-10-05T06:28:59+00:00","description":"Tutoriel Android pour l'utilisation de service dans une application. Exemple au travers une application simple.","breadcrumb":{"@id":"https:\/\/www.web-dream.fr\/app\/tutoriel-android-utilisation-service\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.web-dream.fr\/app\/tutoriel-android-utilisation-service\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.web-dream.fr\/app\/tutoriel-android-utilisation-service\/#primaryimage","url":"https:\/\/www.web-dream.fr\/app\/wp-content\/uploads\/2016\/03\/Tuto_android2.jpg","contentUrl":"https:\/\/www.web-dream.fr\/app\/wp-content\/uploads\/2016\/03\/Tuto_android2.jpg","width":1000,"height":638},{"@type":"BreadcrumbList","@id":"https:\/\/www.web-dream.fr\/app\/tutoriel-android-utilisation-service\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.web-dream.fr\/app\/"},{"@type":"ListItem","position":2,"name":"Tutoriel Android : Utilisation des services."}]},{"@type":"WebSite","@id":"https:\/\/www.web-dream.fr\/app\/#website","url":"https:\/\/www.web-dream.fr\/app\/","name":"WEB DREAM","description":"Cr\u00e9ateur d&#039;application Iphone \/ Ipad et Android","publisher":{"@id":"https:\/\/www.web-dream.fr\/app\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.web-dream.fr\/app\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/www.web-dream.fr\/app\/#organization","name":"Web Dream","url":"https:\/\/www.web-dream.fr\/app\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.web-dream.fr\/app\/#\/schema\/logo\/image\/","url":"https:\/\/www.web-dream.fr\/app\/wp-content\/uploads\/2016\/03\/Logo-Web-dream_500.jpg","contentUrl":"https:\/\/www.web-dream.fr\/app\/wp-content\/uploads\/2016\/03\/Logo-Web-dream_500.jpg","width":500,"height":237,"caption":"Web Dream"},"image":{"@id":"https:\/\/www.web-dream.fr\/app\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/pages\/Web-Dream\/687618201332547"]},{"@type":"Person","@id":"https:\/\/www.web-dream.fr\/app\/#\/schema\/person\/5fdddc6970607988081c620db9306dee","name":"michel","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/2c320e000f550670cb52e59ac2af654b1352deef6e0c4165566b8fe66d4bd8a9?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/2c320e000f550670cb52e59ac2af654b1352deef6e0c4165566b8fe66d4bd8a9?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2c320e000f550670cb52e59ac2af654b1352deef6e0c4165566b8fe66d4bd8a9?s=96&d=mm&r=g","caption":"michel"}}]}},"_links":{"self":[{"href":"https:\/\/www.web-dream.fr\/app\/wp-json\/wp\/v2\/posts\/16638","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.web-dream.fr\/app\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.web-dream.fr\/app\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.web-dream.fr\/app\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.web-dream.fr\/app\/wp-json\/wp\/v2\/comments?post=16638"}],"version-history":[{"count":22,"href":"https:\/\/www.web-dream.fr\/app\/wp-json\/wp\/v2\/posts\/16638\/revisions"}],"predecessor-version":[{"id":18108,"href":"https:\/\/www.web-dream.fr\/app\/wp-json\/wp\/v2\/posts\/16638\/revisions\/18108"}],"wp:attachment":[{"href":"https:\/\/www.web-dream.fr\/app\/wp-json\/wp\/v2\/media?parent=16638"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.web-dream.fr\/app\/wp-json\/wp\/v2\/categories?post=16638"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.web-dream.fr\/app\/wp-json\/wp\/v2\/tags?post=16638"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}