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.

È stato utile?

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) {
        }
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top