Blackberry - Wie Benachrichtigungssymbol in der Statusleiste verwenden,
-
13-09-2019 - |
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.
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) {
}
}
}