Guia do desenvolvedor
Local Navigation
- Integração com aplicativos BlackBerry Device Software Device Software
- Pesquisa unificada
- Tornar os dados localizáveis
- Definir uma classe EntityBasedSearchable para seus objetos SearchableEntity
- Encapsular os dados na classe SearchableEntity
- Specifying what users can do with your data in search results
- Registrar seu objeto EntityBasedSearchable no serviço de pesquisa unificada
- Notificar o serviço de pesquisa unificada sobre alterações nos dados
- Escutar respostas do serviço de pesquisa unificada
- Remover dados do repositório de conteúdo
- Usar outros mecanismos de busca
- Certificar-se de que um aparelho execute uma única instância de seu aplicativo
- Inserir dados quando um aparelho é iniciado
- Pesquisar
- Suporte à interação do aparelho
- Lista de mensagens
- Mensagens personalizadas
- Anexos
- Calendário
- Lista de contatos
- Lista de tarefas
- Telefone
- BlackBerry Browser
- Itens de menu
- Mais informações
- Glossário
- Enviar comentários
- Histórico da revisão de documentos
- Aviso legal
Documentação do produto
>
Documentação do desenvolvedor
>
Guias de desenvolvimento Java e referência de API
>
Guia do desenvolvedor
Integration Guide - BlackBerry Java SDK - 7.0
Definir uma classe EntityBasedSearchable para seus objetos SearchableEntity
Sua implementação da interface EntityBasedSearchable gerencia a relação entre o serviço de pesquisa unificada e as entidades pesquisáveis que você cria. Cada objeto EntityBasedSearchable gerencia um grupo de objetos SearchableEntity que têm as mesmas propriedades pesquisáveis.
- Importe as classes e interfaces necessárias.
import net.rim.device.api.unifiedsearch.SearchField; import net.rim.device.api.unifiedsearch.searchables.EntityBasedSearchable; import net.rim.device.api.unifiedsearch.searchables.SearchableContentTypeConstants; import net.rim.device.api.unifiedsearch.searchables.Searchable;
- Crie variáveis de instância para armazenar informações relevantes para o EntityBasedSearchable.
private MySearchableEntity[] _myEntities; // You will need this in steps 8 and 11 private long _registrationID; private SearchField[] _searchFields; private Image _icon; private final Object _monitor = new Object(); private boolean _wait = false;
- No construtor, crie uma matriz de objetos SearchField. Cada SearchField armazena o nome de uma propriedade pesquisável de seus dados. No exemplo de código a seguir, os objetos de dados do aplicativo que são gerenciados por essa classe têm três propriedades pesquisáveis. Por exemplo, se os dados do seu aplicativo tiverem modelado livros, esses campos talvez incluam o título, o editor e o número de páginas.
class MyEBS implements EntityBasedSearchable { _searchFields = new SearchField[3]; - Atribua um nome significativo a cada SearchField.
_searchFields[0] = new SearchField("Title"); _searchFields[1] = new SearchField("Publisher"); _searchFields[2] = new SearchField("Number of pages"); } - Crie um ícone para ser exibido nos resultados de pesquisa que incluem entidades pesquisáveis gerenciadas por esse EntityBasedSearchable. Para obter mais informações sobre a criação de ícones, consulte "Personalizar a aparência dos dados nos resultados de pesquisa".
- Implemente getType(). Retorne o tipo de conteúdo que melhor corresponde aos dados do seu aplicativo. Para obter uma lista de tipos válidos de conteúdo, consulte a interface net.rim.device.api.unifiedsearch.searchables.SearchableContentTypeConstants na referência de API.
public long getType() { return SearchableContentTypeConstants.CONTENT_TYPE_MEMO; - Escolha os iniciadores de pesquisa que devem receber os resultados de pesquisa de seu aplicativo. Para obter mais informações sobre como expor seus dados para pesquisas, consulte a classe net.rim.device.api.unifiedsearch.entity.ExposureLevel na referência de API.
public int getPrivacyLevel() { return ExposureLevel.LEVEL_PUBLIC; } - Implemente load(). Se o aparelho BlackBerry estiver ocupado ou o nível de bateria estiver baixo, talvez seja preciso pausar a operação desse método e retomá-lo quando solicitado.
- Para seu EntityBasedSearchable, determine quantos objetos de dados existem atualmente em seu aplicativo.
public void load (NotificationListener observer, int loadType) { Vector myObjects = MyObjectManager.getDataObjects(); if (myObjects != null) { int size = myObjects.size() if(size < 1) { _myEntities = new MySearchableEntity[0]; } else { _myEntities = new MySearchableEntity[size]; } } else { // handle the condition where you have no data objects } - Use um loop while para preencher uma matriz de entidades pesquisáveis.
Enumeration objects = myObjects.elements(); int count = 0; while (objects.hasMoreElements()) { - Verifique se o serviço de pesquisa unificada enviou um comando pause. Em caso positivo, pause a operação que preenche sua matriz de entidades pesquisáveis e notifique o serviço.
if (_wait){ try { synchronized(_monitor) { observer.partiallyCompleted(this, null, NotificationListener.TYPE_SEARCHABLE); _monitor.wait(); } } catch (InterruptedException e){ observer.error(e); return; } } - Quando seu aplicativo tiver novamente controle do thread, continue a preencher sua matriz de entidades pesquisáveis.
MyObject dataObject = (MyObject) objects.nextElement(); _myEntities[count++] = new MySearchableEntity(dataObject, this); } - Notifique ao serviço de pesquisa unificada que você acabou de carregar os dados.
observer.completed(this, NotificationListener.TYPE_SEARCHABLE); }
- Para seu EntityBasedSearchable, determine quantos objetos de dados existem atualmente em seu aplicativo.
- Em pause(), altere o valor da variável _wait para true. O serviço de pesquisa unificada chama esse método quando deseja que seu aplicativo pare de carregar dados.
public void pause() { _wait = true; } - Em resume(), altere o valor da variável _wait para false. Além disso, notifique ao método load() que é possível continuar a execução. O serviço de pesquisa unificada invoca resume() quando deseja que seu aplicativo volte a carregar dados.
public void resume() { _wait = false; synchronized(_monitor) { _monitor.notifyAll(); } } - Em getSearchableEntities(), retorne a matriz _myEntities que você criou na etapa 8.
public SearchableEntity[] getSearchableEntities() { return _myEntities; }
- Personalizar a aparência dos dados nos resultados de pesquisa
- Especificar um ícone na classe EntityBasedSearchable ou SearchableEntity
Próximo tópico: Personalizar a aparência dos dados nos resultados de pesquisa
Tópico anterior: Passar consultas para outros mecanismos de busca
Estas informações foram úteis? Gostaríamos de receber seus comentários.