Frage

RIM Blackberry OS 4.6+ gibt es eine neue Funktion - Fähigkeit Benachrichtigungssymbol in der Statusleiste anzuzeigen. Integrierte Anwendung verwenden Sie es schnell und informative Informationen für den Benutzer zu geben: Dealler - verpasste Anrufe, Nachrichten - ungelesene Nachrichten usw.

entfernt tot Images Link

Mögliche Verwendung von Benachrichtigungssymbol:

  • verpasste Ereignisse
  • RSS-Updates
  • Objektstatus (ex. Wetter / app Aktivität / GPS-Signalstärke)
  • andere

Ich möchte ein Howto Leitfaden für diese Funktion schreiben.

War es hilfreich?

Lösung

ApplicationIndicator Klasse

Zum Hinzufügen / ändern / Benachrichtigungssymbol entfernen wir ApplicationIndicator Klasse:

  

Stellt eine Anwendung Indikator, der aus einem Symbol und optionalen numerischen Wert besteht.
  Das Symbol wird zusammen mit anderen wie neuen E-Mail-Zählern, Kalendererinnerungen in Indikatoren Bereich platziert, verpasste Anrufe Zähler, Sicherheitsstatus und andere.

  • Die Anwendung kann nur ein Indikator registrieren und hat es jedesmal, wenn das Telefon beginnt zu registrieren.
  • sind alle Indikatoren auf Telefon Neustart gelöscht.
  • Indikatoren möglicherweise nicht sichtbar sein, wenn es keinen Platz auf statusbar sein
  • Anzeigemaße sind abhängig von aktuellen Thema und Telefon Bildschirmgröße.
  • Die Symbolgröße variiert von 10x10 bis 24x24.
  • Wenn die Anzeige mit einem großen Symbol initialisiert wird, dann wird eine Ausnahme ausgelöst.
  • kann Indicator haben optional numerischen Wert, der in der Regel als Zähler dient.
  • Der Wert kann negativ, 0 oder positiv sein.
  • Wenn die Anzeige als Zähler verwendet, ist es besser, es zu verbergen, wenn sein Wert auf 0
  • gleich
  • Wenn Indikatorwert zu groß ist, wird es '99 +‘oder '999 +'
  • Anzeigen

Add-Benachrichtigungssymbol

Dazu sollten wir Instanz von ApplicationIcon :

  

Anwendungssymbol Klasse wird in Verbindung mit der Anwendung Anzeige und Anwendungsnachrichten verwendet.
  Es incapsulates Bild und seine Malerei Eigenschaften.

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

Dann sollten wir ApplicationIndicator mit ApplicationIndicatorRegistry :

  

ApplicationIndicatorRegistry.register ( Symbol iconOnly sichtbar )
   Symbol - ein Symbol in den Indikatoren Bereich
angezeigt werden    iconOnly - gibt an, ob Indikator sollte Symboldarstellung nur und kein Wert
haben    sichtbar - gibt an, ob Indikator sichtbar sein muss zunächst

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

Ändern Anzeigesymbol und Wert

Symbol zu ändern, verwenden Sie ApplicationIndicator.setIcon Methode:

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

Zahlenwert zu ändern, verwenden Sie ApplicationIndicator.setValue Methode:

ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry.getInstance();
ApplicationIndicator appIndicator = reg.getApplicationIndicator();
appIndicator.setValue(value);
  • Wenn sehr großer Wert zur Verfügung gestellt wird, dann wird Indikator angezeigt '99 +‘oder '999 +'.

Anzeige ein- oder auszublenden, verwenden Sie ApplicationIndicator.setVisible

Unregister ApplicationIndicator

Die meisten wahrscheinlich, dass Sie nicht wollen, Ihre App-Anzeige in der Statusleiste zu bleiben, ist es besser, ApplicationIndicatorRegistry.unregister () es auf app schließen.

Beispielanwendung

Icons:

entfernt tote Links Images

Screenshots:

entfernt tot Images lTinten

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) {
        }
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top