Pergunta

Em RIM Blackberry OS 4.6 + há um novo recurso - capacidade de mostrar ícone de notificação na barra de status. uso aplicação integrada lo para dar informações rápidas e informativo para o usuário: Dealler - chamadas não atendidas, mensagens - mensagens não lidas etc.

removido ligação ImageShack mortos

Possível uso de ícone de notificação:

  • eventos perdidos
  • RSS atualizações
  • status do objeto (ex. Atividade tempo / app / GPS intensidade do sinal)
  • outros

Eu gostaria de postar um guia howto para este recurso.

Foi útil?

Solução

ApplicationIndicator classe

Para adicionar notificação / Modificar / Remover ícone podemos usar ApplicationIndicator classe:

Representa um indicador aplicativo que consiste em um ícone e valor numérico opcional.
O ícone é colocado na área de indicadores, juntamente com outros, como novo contador correio, lembretes do calendário, perdeu contra chamadas, status de segurança e outros.

  • A aplicação pode registar apenas um indicador e tem que registrá-lo cada vez que o telefone começa.
  • Todos os indicadores estão apagados depois telefone reinício.
  • Os indicadores podem não ser visíveis se não haverá espaço na barra de status
  • dimensões Indicador depender de tema atual e tamanho da tela do telefone.
  • O tamanho do ícone varia de 10x10 até 24x24.
  • Se o indicador é inicializado com um grande ícone, em seguida, uma exceção é lançada.
  • Indicador pode ter valor numérico opcional que normalmente serve como um contador.
  • O valor pode ser negativo, 0 ou positivo.
  • Se o indicador é usado como um contador é melhor escondê-lo quando o seu valor é igual a 0.
  • Se o valor indicador é muito grande, ele irá exibir '99 +' ou '999 +'

Add notificação ícone

Para isso, deve criar uma instância de ApplicationIcon :

ícone Aplicação classe é usada em conjunto com mensagens de indicadores de aplicação e de aplicação.
Ele incapsulates imagem e suas propriedades de pintura.

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

Então nós deve registrar ApplicationIndicator com ApplicationIndicatorRegistry :

ApplicationIndicatorRegistry.register ( ícone , iconOnly , visível )
ícone - um ícone a ser exibido na área indicadores
iconOnly - especifica se o indicador deve ter ícone só representação e nenhum valor
visíveis - Especifica se indicador tem de ser visível inicialmente

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

ícone do indicador Modificar e valor

Para modificar o ícone, o uso ApplicationIndicator.setIcon método:

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

Para modificar valor numérico, use método ApplicationIndicator.setValue :

ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry.getInstance();
ApplicationIndicator appIndicator = reg.getApplicationIndicator();
appIndicator.setValue(value);
  • Se é fornecido muito grande valor, em seguida indicador irá exibir '99 +' ou '999 +'.

Para ocultar ou indicador mostra, uso ApplicationIndicator.setVisible

Unregister ApplicationIndicator

O mais provável é que você não quer que seu indicador de aplicativo para estadia em barra de status, é melhor ApplicationIndicatorRegistry.unregister () -lo no aplicativo perto.

Aplicação de Amostra

Ícones:

removidos ligações ImageShack mortos

Screenshots:

removido mortos 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top