Pregunta

En el RIM Blackberry OS 4.6+ hay una nueva característica - capacidad de mostrar el icono de notificación en la barra de estado. Aplicación integrada utilizarlo para dar información rápida e informativa para el usuario: Dealler - llamadas, mensajes perdidos - los mensajes no leídos, etc.

eliminado enlace ImageShack muertos

El uso posible del icono de notificación:

  • eventos perdidos
  • actualizaciones RSS
  • estado del objeto (ex. Actividad / intensidad de la señal GPS tiempo / app)
  • otro

Me gustaría publicar una guía howto para esta función.

¿Fue útil?

Solución

clase ApplicationIndicator

Para añadir / modificar / eliminar icono de notificación podemos usar clase ApplicationIndicator :

  

representa un indicador de aplicación que consiste en un icono y un valor numérico opcional.
  El icono se coloca en el área de indicadores, junto con otros como el nuevo contador electrónico, recordatorios del calendario, llamadas perdidas contador, estado de seguridad y otros.

  • La aplicación puede registrar sólo un indicador y tiene que registrarse cada vez que el teléfono comienza.
  • Todos los indicadores se borran al reiniciar el teléfono.
  • Los indicadores pueden ser no visibles si no habrá espacio en la barra de estado
  • Indicador dimensiones dependen de tema actual y el tamaño de la pantalla del teléfono.
  • El tamaño del icono varía de 10x10 hasta 24x24.
  • Si el indicador se inicializa con un gran icono de entonces se inicia una excepción.
  • Indicador puede tener un valor numérico opcional que por lo general sirve como un contador.
  • El valor puede ser negativo, 0 o positivo.
  • Si el indicador se utiliza como un contador que es mejor ocultarlo cuando su valor es igual a 0.
  • Si el valor indicador es demasiado grande, se mostrará '99 +' o '999 +'

Añadir icono de notificación

Para ello se debe crear una instancia de ApplicationIcon :

  

clase icono de la aplicación se utiliza en conjunción con mensajes indicadores de aplicación y de aplicación.
  Se incapsulates imagen y sus propiedades de pintura.

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

A continuación, hay que registrarse con ApplicationIndicator ApplicationIndicatorRegistry :

  

ApplicationIndicatorRegistry.register ( icono , iconOnly , visible )
   icono - un icono que se mostrará en el área de indicadores
   iconOnly - especifica si el indicador debería tener solamente representación de icono y ningún valor
   visible - especifica si el indicador tiene que ser visible inicialmente

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

Modificar icono del indicador y el valor

Para modificar el icono, utilice método ApplicationIndicator.setIcon:

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

Para modificar valor de número, utilice ApplicationIndicator.setValue método:

ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry.getInstance();
ApplicationIndicator appIndicator = reg.getApplicationIndicator();
appIndicator.setValue(value);
  • Si se proporciona valor muy grande a continuación, el indicador mostrará '99 +' o '999 +'.

Para ocultar o mostrar el indicador, utilice ApplicationIndicator.setVisible

Eliminar el registro de ApplicationIndicator

Lo más probable es que no quiere que su indicador de aplicación para permanecer en la barra de estado, que es mejor ApplicationIndicatorRegistry.unregister () en aplicación estrecha.

Ejemplo de aplicación

Los iconos:

la supresión de enlaces ImageShack muertas

Imágenes:

eliminó muerto ImageShack ltintas

Código:

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) {
        }
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top