Apache Adobe Flex TutorialTutoriaux Adobe Flex & AIR en Français

6sept/101

AIR pour Android – Quitter une application Android proprement (arrêt GPS …)

Lorsqu'une application Android utilise des "sensors" tels que le GPS, ils restent actifs jusqu'à l'arrêt de l'application. Mais ces sensors sont souvent très gourmands en termes de consommation de batterie.

Ainsi, si vous activez la réception GPS dans votre application Air, celui-ci restera actif jusqu'à ce que vous quittiez l'application correctement. Une icône dans la barre des notifications vous indique si le GPS est en fonctionnement ou non. Ainsi, si vous retournez sur l'écran d'accueil avec le bouton HOME, vous remarquerez que le GPS sera toujours actif. Cela est aussi valable pour les applications natives écrites en Java.

Pour pouvoir indiquer que l'on a plus besoin de la réception GPS, il faut quitter l'application proprement. C'est souvent ce que l'on voit dans les applications Android natives, on a depuis le menu, une option "Quitter". Alors que l'on pourrait très bien revenir en permanence sur la HOME, quitter permet d'économiser les ressources du téléphone.

Attention, cette méthode remet votre application à "zéro", vous perdrez donc l'état actuel de votre application. Il est aussi possible d'utiliser cette fonctionnalité dans les applications Air pour Android à travers la classe NativeApplication, comme vous le feriez pour des applications bureautiques. Sur cet objet, une propriété static "nativeApplication" sur laquelle vous pourrez trouver la méthode exit().

Démonstration vidéo

Voilà une petite vidéo de l'application que j'ai créé pour montrer cette fonctionnalité. Un bouton permet d'écouter les évènements du GPS. Ensuite, je retourne sur la Home, l'icône GPS apparait toujours. Je retourne dans l'application et quitte proprement, l'icône disparait.

Le code de l'application

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" paddingLeft="0" paddingRight="0"
                paddingTop="0" paddingBottom="0"
                applicationComplete="application1_applicationCompleteHandler(event)">
  <mx:Style>
    global {
      font-size: 24;
    }
  </mx:Style>
  <mx:Script>
    <![CDATA[
      import flash.sensors.Geolocation;

      import mx.events.FlexEvent;

      [Bindable]
      private var _gpsEnabled:Boolean = false;
      /**
       *
       */
      private var _geolocation:Geolocation = null;

      /**
       *
       */
      protected function application1_applicationCompleteHandler(event:FlexEvent):void {
        if (Geolocation.isSupported) {
          enableGPSButton.enabled = true;
        }
      }

      private function onEnableGPS():void {
        if (!_gpsEnabled) {
          // enable GPS
          if (!_geolocation) {
            _geolocation = new Geolocation;
            // on va vérifier toutes les secondes
            _geolocation.setRequestedUpdateInterval(1000);
          }
          _geolocation.addEventListener(GeolocationEvent.UPDATE, geolocationUpdateHandler);
        }
      }

      private function geolocationUpdateHandler(event:GeolocationEvent):void {
        ta.text = "Réception GPS: " + event.timestamp;
      }

      private function showInfo(text:String):void {
        log.text = text;
      }

      private function onQuit():void {
        NativeApplication.nativeApplication.exit();
      }
    ]]>
  </mx:Script>
  <mx:ApplicationControlBar left="0" right="0" bottom="0" height="80" paddingTop="8" paddingLeft="8"
                            paddingBottom="8" paddingRight="8" horizontalGap="8" verticalGap="8"
                            dock="true">
    <mx:Box width="100%">
      <mx:HBox>
        <mx:Button id="enableGPSButton" label="Enable GPS" click="onEnableGPS();" height="100%"
                   width="100%" enabled="false" />
        <mx:Button label="Quit" click="onQuit();" height="100%" width="100%" />
      </mx:HBox>
      <mx:Label id="log" fontSize="18" />
    </mx:Box>
  </mx:ApplicationControlBar>
  <mx:TextArea id="ta" backgroundColor="white" width="100%" height="100%" enabled="false" />
</mx:Application>

Télécharger le projet au format FXP

Télécharger l'application au format APK

Articles similaires

Commentaires (1) Trackbacks (0)
  1. Existe-il un moyen de détecter le fermeture de l'application par le gestionnaire de tache sous Android.


Leave a comment

(required)

Aucun trackbacks pour l'instant