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

8sept/101

AIR pour Android – Détecter l'appui sur les boutons BACK, MENU et SEARCH (hardware)

Grâce à l'API Air 2.5, vous pouvez détecter l'appui sur les boutons "hardware" du téléphone. Ce sont les boutons présents sur tous les portables Android.

Ainsi, vous pouvez détecter les appuis sur MENU, BACK et SEARCH. Vous ne pouvez pas détecter l'appui sur HOME, car celui-ci est une "porte de sortie" pour toute application.

Dans le comportement normal d'une application, le bouton BACK vous renvoie vers l'écran ou l'application précédente. Pour une application Air, cela va automatiquement vous faire sortir de l'application, sauf si vous appelez la méthode "preventDefault" sur le KeyboardEvent renvoyé. Dans ce cas-là, l'utilisateur ne sortira pas de l'application.

Ainsi, vous pourrez recréer facilement le comportement des applications natives qui "push" et "pop" des vues les unes au dessus des autres. Une fois le composant ViewNavigator de Hero sorti, vous pourrez, au moment de l'appui sur BACK, faire un "pop" de la vue pour revenir à la vue précédente.

Code de démonstration

Voici une petite application qui vous montre comment écouter les évènements clavier de votre application. Notez que vous devez ajouter le listener au moment de l' APPLICATION_COMPLETE et pas du CREATION_COMPLETE pour que la variable stage soit initialisée correctement

<?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 mx.events.FlexEvent;

      /**
       *
       */
      protected function application1_applicationCompleteHandler(event:FlexEvent):void {
        this.stage.addEventListener(KeyboardEvent.KEY_DOWN, downHandler);
      }

      public function downHandler(event:KeyboardEvent):void {

        switch (event.keyCode) {
          case Keyboard.BACK:
            // to prevent app going to background use following
            if (preventCB.selected) {
              event.preventDefault();
            }
            showInfo("BACK key");
            //do action related to BACK key
            break;
          case Keyboard.SEARCH:
            //do action related to SEARCH key
            showInfo("SEARCH key");
            break;
          case Keyboard.MENU:
            //do action related to MENU key
            showInfo("MENU key");
            break;
          default:
            break;
        }
      }

      private function showInfo(text:String):void {
        log.text += text + "\n";
      }
    ]]>
  </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:CheckBox id="preventCB" label="Prevent Default Home Button" />
  </mx:ApplicationControlBar>
  <mx:TextArea id="log" 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. Merci beaucoup pour cette astuce!


Leave a comment

(required)

Aucun trackbacks pour l'instant