Question

Il y a dans RIM Blackberry OS 4.6+ une nouvelle fonctionnalité - capacité à afficher l'icône de notification dans la barre d'état. L'application intégrée utiliser pour donner des informations rapides et instructives pour l'utilisateur: Dealler - appels manqués, les messages non lus - messages etc.

lien mort ImageShack supprimé

Utilisation possible de l'icône de notification:

  • événements manqués
  • Mises à jour RSS
  • état de l'objet (ex. Activité temps / app / puissance du signal GPS)
  • autre

Je voudrais publier un guide howto pour cette fonction.

Était-ce utile?

La solution

classe ApplicationIndicator

Pour ajouter / modifier / supprimer l'icône de notification, nous pouvons utiliser classe de ApplicationIndicator:

  

Représente un indicateur d'application qui se compose d'une icône et en option valeur numérique.
  L'icône est placée dans la zone des indicateurs ainsi que d'autres, comme nouveau compteur de courrier, des rappels de calendrier, manqués contre des appels, la situation de sécurité et d'autres.

  • L'application peut enregistrer qu'un seul indicateur et doit enregistrer chaque fois que le téléphone commence.
  • Tous les indicateurs sont effacés au redémarrage du téléphone.
  • Les indicateurs peuvent être pas visibles s'il n'y aura pas d'espace sur la barre d'état
  • dimensions de l'indicateur dépendent sur le thème actuel et la taille de l'écran du téléphone.
  • La taille de l'icône varie de 10x10 à 24x24.
  • Si l'indicateur est initialisé avec une grande icône, une exception est levée.
  • Indicateur peut avoir une valeur numérique en option qui sert habituellement un compteur.
  • La valeur peut être négative, 0 ou positif.
  • Si l'indicateur est utilisé comme compteur il est préférable de le cacher lorsque sa valeur est égale à 0.
  • Si la valeur de l'indicateur est trop grand, il affichera '99 + » ou '999 +'

Ajouter icône de notification

Pour cela, il faut créer une instance de ApplicationIcon :

  

classe icône d'application est utilisée conjointement avec des messages d'indicateurs d'application et d'application.
  Il incapsulates image et ses propriétés de peinture.

EncodedImage mImage = EncodedImage.getEncodedImageResource("indicator_icon.png");
ApplicationIcon mIcon = new ApplicationIcon(mImage);

Ensuite, nous devrions enregistrer ApplicationIndicator avec ApplicationIndicatorRegistry :

  

ApplicationIndicatorRegistry.register ( icône , iconOnly , visible )
   icône - une icône à afficher dans la zone d'indicateurs
   iconOnly - spécifie si l'indicateur doit avoir une représentation icône seulement et aucune valeur
   visible - indique si l'indicateur doit être visible dès le début

ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry.getInstance();
ApplicationIndicator indicator = reg.register(mIcon, false, true);

Modifier l'icône de l'indicateur et la valeur

Pour modifier l'icône, utilisez ApplicationIndicator.setIcon méthode :

ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry.getInstance();
ApplicationIndicator appIndicator = reg.getApplicationIndicator();
appIndicator.setIcon(icon);

Pour modifier la valeur numérique, utiliser la méthode de ApplicationIndicator.setValue:

ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry.getInstance();
ApplicationIndicator appIndicator = reg.getApplicationIndicator();
appIndicator.setValue(value);
  • Si très grande valeur est fourni, l'indicateur affiche '99 + » ou '999 +'.

Pour masquer ou afficher l'indicateur, utilisez ApplicationIndicator.setVisible

Désenregistrer ApplicationIndicator

Très probablement, vous ne voulez pas que votre indicateur de l'application pour rester dans la barre d'état, il est préférable de ApplicationIndicatorRegistry.unregister () il sur près app.

Exemple d'application

Icônes:

retirés des liens ImageShack morts

Captures d'écran:

retiré l de ImageShack mortencres

Code:

import net.rim.blackberry.api.messagelist.ApplicationIcon;
import net.rim.blackberry.api.messagelist.ApplicationIndicator;
import net.rim.blackberry.api.messagelist.ApplicationIndicatorRegistry;
import net.rim.device.api.system.EncodedImage;
import net.rim.device.api.ui.MenuItem;
import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.component.Menu;
import net.rim.device.api.ui.container.MainScreen;

class Scr extends MainScreen {
    EncodedImage mImageGreen = EncodedImage
            .getEncodedImageResource("bb_icon_green.png");
    ApplicationIcon mIconGreen = new ApplicationIcon(mImageGreen);
    EncodedImage mImageRed = EncodedImage
            .getEncodedImageResource("bb_icon_red.png");
    ApplicationIcon mIconRed = new ApplicationIcon(mImageRed);

    ApplicationIcon mIcon = mIconGreen;

    public Scr() {
        add(new LabelField("Use menu to:"));
        add(new LabelField("Register indicator"));
        add(new LabelField("Increment value"));
        add(new LabelField("Decrement value"));
        add(new LabelField("Switch icon"));
        add(new LabelField("Unregister indicator"));
    }

    MenuItem menuRegister = new MenuItem("register", 0, 0) {
        public void run() {
            registerIndicator();
        };
    };
    protected int mValue = 0;
    MenuItem menuIncrement = new MenuItem("increment", 0, 0) {
        public void run() {
            mValue++;
            updateValue(mValue);
        };
    };
    MenuItem menuDecrement = new MenuItem("decrement", 0, 0) {
        public void run() {
            mValue--;
            updateValue(mValue);
        };
    };
    MenuItem menuSwitchIcon = new MenuItem("icon", 0, 0) {
        public void run() {
            mIcon = (mIcon == mIconGreen) ? mIconRed : mIconGreen;
            updateIcon(mIcon);
        };
    };
    MenuItem menuUnregister = new MenuItem("unregister", 0, 0) {
        public void run() {
            unregisterIndicator();
        };
    };

    protected void makeMenu(Menu menu, int instance) {
        super.makeMenu(menu, instance);
        menu.add(menuRegister);
        menu.add(menuIncrement);
        menu.add(menuDecrement);
        menu.add(menuSwitchIcon);
        menu.add(menuUnregister);
    }

    private void registerIndicator() {
        try {
            ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry
                    .getInstance();
            ApplicationIndicator indicator = 
                    reg.register(mIcon, false, true);
        } catch (Exception e) {
        }
    }

    private void unregisterIndicator() {
        try {
            ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry
                    .getInstance();
            reg.unregister();
        } catch (Exception e) {
        }
    }

    void updateValue(int value) {
        try {
            ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry
                    .getInstance();
            ApplicationIndicator appIndicator = 
                    reg.getApplicationIndicator();
            appIndicator.setValue(value);
        } catch (Exception e) {
        }
    }

    void updateIcon(ApplicationIcon icon) {
        try {
            ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry
                    .getInstance();
            ApplicationIndicator appIndicator = 
                    reg.getApplicationIndicator();
            appIndicator.setIcon(icon);
        } catch (Exception e) {
        }
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top