Blackberry - Come usare un'icona di notifica nella barra di stato
-
13-09-2019 - |
Domanda
In RIM Blackberry OS 4.6+ c'è una nuova funzionalità - capacità di mostrare un'icona di notifica nella barra di stato. applicazione integrata utilizzarlo per dare informazioni rapide e informativo per l'utente: Dealler - chiamate perse, messaggi - messaggi non letti, ecc
rimosso morti collegamento ImageShack
Possibile utilizzo di icona di notifica:
- eventi persi
- aggiornamenti RSS
- Stato oggetto (es. Attività / potenza del segnale GPS tempo / app)
- altro
Vorrei pubblicare una guida howto per questa funzione.
Soluzione
class ApplicationIndicator
Per aggiungere / modificare / rimuovere icona di notifica possiamo usare ApplicationIndicator classe:
rappresenta un indicatore applicazione che si compone di un'icona e valore numerico opzionale.
L'icona si trova in zona indicatori insieme ad altri come il nuovo contatore di posta, promemoria del calendario, chiamate perse contatore, lo stato di sicurezza e altri.
- L'applicazione può registrare solo un indicatore e deve registrare ogni volta il telefono cellulare comincia.
- Tutti gli indicatori vengono cancellati al riavvio del telefono.
- Gli indicatori possono essere non visibile se non ci sarà spazio sul barra di stato
- dimensioni Indicatore dipendono tema corrente e le dimensioni dello schermo del telefono.
- La dimensione delle icone varia da 10x10 fino a 24x24.
- Se l'indicatore è inizializzato con una grande icona di allora viene generata un'eccezione.
- Indicator può avere valore numerico facoltativo che di solito serve come un contatore.
- Il valore può essere negativo, 0 o positivo.
- Se l'indicatore è utilizzato come contatore è meglio nasconderlo quando il suo valore è uguale a 0.
- Se il valore dell'indicatore è troppo grande, verrà visualizzato '99 +' o '999 +'
Aggiungi icona di notifica
Per questo bisogna creare un'istanza di ApplicationIcon :
class icona dell'applicazione viene utilizzato in combinazione con i messaggi indicatore di applicazione e delle applicazioni.
Si incapsulates le sue proprietà di pittura di immagine e.
EncodedImage mImage = EncodedImage.getEncodedImageResource("indicator_icon.png");
ApplicationIcon mIcon = new ApplicationIcon(mImage);
Allora dovremmo registrare ApplicationIndicator con ApplicationIndicatorRegistry :
ApplicationIndicatorRegistry.register ( icona , iconOnly , visibile )
icona - un'icona da visualizzare nell'area indicatori
iconOnly - specifica se indicatore dovrebbe avere una rappresentanza icona unica e nessun valore
visibile - specifica se l'indicatore deve essere visibile inizialmente
ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry.getInstance();
ApplicationIndicator indicator = reg.register(mIcon, false, true);
Modifica indicatore di icona e il valore
Per modificare l'icona, utilizzare metodo ApplicationIndicator.setIcon:
ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry.getInstance();
ApplicationIndicator appIndicator = reg.getApplicationIndicator();
appIndicator.setIcon(icon);
Per modificare il valore di numero, utilizzare ApplicationIndicator.setValue metodo:
ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry.getInstance();
ApplicationIndicator appIndicator = reg.getApplicationIndicator();
appIndicator.setValue(value);
- Se è previsto molto grande valore, allora l'indicatore visualizzerà '99 +' o '999 +'.
Per nascondere o mostrare l'indicatore, utilizzare ApplicationIndicator.setVisible
Annulla registrazione ApplicationIndicator
Molto probabilmente non si desidera che l'indicatore di app per rimanere in statusbar, è meglio ApplicationIndicatorRegistry.unregister () su App vicino.
Esempio di applicazione
Le icone:
Rimosso morti link ImageShack
Screenshots:
rimosso morto ImageShack linchiostri
Codice:
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) {
}
}
}