Guia do desenvolvedor
Local Navigation
- Visão geral dos serviços que se baseiam em localização
- Encontrar uma localização
- Ativar e consultar Serviços de localização no aparelho
- Obter uma localização usando GPS
- Especificar o modo de GPS
- Especificação do modo GPS usando o JSR 179
- Especificar o modo de GPS com o uso de extensões BlackBerry para JSR 179
- Recuperar informações de localização usando o modo de GPS assistido
-
Recuperar um provedor de localização
- Recuperar um provedor de localização usando a classe LocationProvider
- Controle de rastreamento usando a classe BlackBerryLocationProvider
- Controlar o rastreamento usando a classe BlackBerryLocationProvider
- Exemplo de código: Usar a classe BlackBerryLocationProvider para controlar o rastreamento
- Recuperar um provedor de localização usando a classe BlackBerryLocationProvider
-
Recuperar a localização de um aparelho BlackBerry
- Recuperar a localização de um aparelho BlackBerry
- Exemplo de código: Recuperar a localização do GPS de um aparelho BlackBerry
- Recuperar a localização de um aparelho BlackBerry especificando solicitações de ponto contínuas
- Exemplo de código: Recuperar a localização do GPS de um aparelho BlackBerry usando solicitações de ponto contínuas
- Recuperação de informações de localização usando a classe Local
- Recuperar informações de localização usando a classe Location
- Exemplo de código: Usar a classe Location para recuperar informações de localização do GPS
- Recuperação de informações de localização usando a classe BlackBerryLocation
- Recuperar informações de satélite usando a classe BlackBerryLocation
- Exemplo de código: Usar a classe BlackBerryLocation para recuperar informações de satélite
- Alterar os critérios para receber informações de localização
- Exemplo de código: Alterar os critérios para recuperar informações de localização
- Manipulação de erro
- Recuperar uma localização do GPS usando uma página da Web
- Obter uma localização usando geolocalização
- Recuperar o ponto otimizado com GPS e localização geográfica
- Solicitar atualizações de GPS e localização geográfica simultâneas
- Geocodificação e geocodificação reversa
- Receber alertas de proximidade usando geofence
- Determinar a direção ou a posição
- Obter o tempo estimado de viagem, distância e hora de partida
- Visualizar uma localização usando mapas
- Personalizar a aparência de um mapa
- Integrar com o BlackBerry Maps
- Mais informações
- Glossário
- Enviar comentários
- Aviso legal
Documentação do produto
>
Documentação do desenvolvedor
>
Guias de desenvolvimento Java e referência de API
>
Guia do desenvolvedor
Location-Based Services - BlackBerry Java SDK - 7.0
Recuperar múltiplos pontos otimizados
As seguintes etapas demonstram como criar um aplicativo de interface de usuário que fornece atualizações contínuas de localização recuperando pontos de GPS quando os pontos estão disponíveis ou dentro do período especificado de limite de tempo. Se o ponto de GPS estiver indisponível, um ponto de localização geográfica é retornado em seu lugar.
Antes de começar: Verifique se o aparelho BlackBerry ou o BlackBerry Smartphone Simulator tem o GPS habilitado.
- Importe as classes e interfaces necessárias.
import net.rim.device.api.gps.*; import net.rim.device.api.system.Application; import net.rim.device.api.ui.*; import net.rim.device.api.ui.component.*; import net.rim.device.api.ui.container.*; import javax.microedition.location.*;
- Crie a estrutura do aplicativo estendendo a classe UiApplication. Crie uma variável de número inteiro e atribua a ela o valor 1, que especifica o intervalo para atualizar as coordenadas de localização. Crie uma variável com o tipo EditField para armazenar as atualizações de localização exibidas na tela. Em main(), crie uma instância da nova classe e invoque enterEventDispatcher() para habilitar o aplicativo para receber eventos. No construtor de aplicativo, crie uma instância da classe MultipleFixScreen, que é descrita na etapa 7. Invoque setTitle() para especificar o título da tela. Crie uma instância da classe EditField e adicione o campo à tela. Invoque startLocationUpdate(), que é descrito na etapa 4, para começar a carregar as atualizações de localização. Invoque pushScreen() para exibir a tela personalizada do aplicativo.
public class MultipleFixDemo extends UiApplication { private static int _interval = 1; private EditField _status; public static void main(String[] args) { new MultipleFixDemo().enterEventDispatcher(); } public MultipleFixDemo() { MultipleFixScreen screen = new MultipleFixScreen(); screen.setTitle("Multiple Fix Demo"); _status = new EditField(Field.NON_FOCUSABLE); screen.add(_status); startLocationUpdate(); pushScreen(screen); } } - Crie um método updateLocationScreen que invoca invokeLater() para adicionar esta seção de código à fila de eventos do aplicativo. Crie uma instância da classe Runnable e defina-o como um parâmetro para invokeLater(). Substitua run() na definição de Runnable. Invoque setText() exibir os resultados na tela.
private void updateLocationScreen(final String msg) { invokeLater(new Runnable() { public void run() { _status.setText(msg); } }); } - Crie a estrutura do método startLocationUpdate. Crie um bloco try/catch para especificar o critério carregar uma localização. Crie uma instância da classe BlackBerryCriteria chamando BlackBerryCriteria(). O modo padrão de localização é usado porque nenhum argumento é passado para BlackBerryCriteria(). Invoque enableGeolocationWithGPS() para especificar o carregamento de um ponto de GPS, se disponível, ou o carregamento de um ponto de localização geográfica, se o ponto de GPS estiver indisponível. No bloco catch, pegue um UnsupportedOperationException, que indica que o modo de localização não é suportado.
private void startLocationUpdate() { try { BlackBerryCriteria myCriteria = new BlackBerryCriteria(); myCriteria.enableGeolocationWithGPS(); catch (UnsupportedOperationException ue) { System.err.println("Require mode is unavailable"); System.err.println(ue); System.exit(0); } return; } - No primeiro bloco try, crie um segundo bloco try/catch para carregar um provedor de localização. Invoque LocationProvider.getInstance() com o objeto BlackBerryCriteria para carregar um provedor de localização. Crie uma instância de Runnable e defina-o como um parâmetro para invokeLater(). Substitua run() na definição de Runnable e exiba uma mensagem que indica que o provedor de localização não pode ser carregado. Invoque setLocationListener() definindo o valor de intervalo, valor de limite de tempo e idade máxima como parâmetros para registrar um ouvinte, quando um provedor de localização estiver disponível. No bloco catch, pegue um LocationException, que indica que o provedor de localização não está disponível.
try { BlackBerryLocationProvider myProvider = (BlackBerryLocationProvider) LocationProvider.getInstance(myCriteria); if ( myProvider == null ) { Runnable showUnsupportedDialog = new Runnable() { public void run() { Dialog.alert("Location service unsupported, exiting..."); System.exit( 1 ); } }; invokeLater( showUnsupportedDialog ); } else { myProvider.setLocationListener(new LocationListenerImpl(), _interval, 1, 1); } } catch (LocationException le) { System.err.println("Failed to retrieve a location provider"); System.err.println(le); System.exit(0); } - Crie uma segunda classe que implemente LocationListener. Implemente locationUpdated() para fornecer atualizações de localização. Crie uma declaração if para verificar se a localização é válida. Se a localização for válida, carregue as coordenadas de longitude, latitude e altitude chamando getLongitude(), getLatitude() e getAltitude(), respectivamente. Crie uma instância da classe StringBuffer e anexe as coordenadas resultantes à memória intermediária. Invoque updateLocationScreen() para exibir as coordenadas resultantes na tela.
private class LocationListenerImpl implements LocationListener { public void locationUpdated(LocationProvider provider, Location location) { if(location.isValid()) { double longitude = location.getQualifiedCoordinates() .getLongitude(); double latitude = location.getQualifiedCoordinates() .getLatitude(); float altitude = location.getQualifiedCoordinates() .getAltitude(); StringBuffer sb = new StringBuffer(); sb.append("Longitude: "); sb.append(longitude); sb.append("\n"); sb.append("Latitude: "); sb.append(latitude); sb.append("\n"); sb.append("Altitude: "); sb.append(altitude); sb.append(" m"); MultipleFixDemo.this.updateLocationScreen(sb.toString()); } } public void providerStateChanged(LocationProvider provider, int newState) { // Not implemented } } - Crie a estrutura da tela personalizada estendendo a classe MainScreen. No construtor de tela, chame super() para criar um menu padrão. Crie uma instância do RichTextField para exibir uma mensagem de instruções. Invoque add() para adicionar o RichTextField à tela.
private final static class MultipleFixScreen extends MainScreen { MultipleFixScreen() { super(DEFAULT_CLOSE | DEFAULT_MENU); RichTextField instructions = new RichTextField( "Waiting for location update...",Field.NON_FOCUSABLE); this.add(instructions); } }
Próximo tópico: Exemplo de código: Recuperar múltiplos pontos otimizados
Tópico anterior: Exemplo de código: Recuperar um ponto único otimizado
Estas informações foram úteis? Gostaríamos de receber seus comentários.