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 a localização de um aparelho usando serviços de localização geográfica
As seguintes etapas demonstram como criar um aplicativo de interface de usuário que forneça a localização do aparelho BlackBerry usando o serviço de localização geográfica.
Antes de começar: Verifique se o aparelho BlackBerry ou o BlackBerry Smartphone Simulator pode acessar o serviço de localização geográfica.
- 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. Em main(), crie uma instância da nova classe e invoque enterEventDispatcher() para habilitar o aplicativo para receber eventos. No construtor de aplicativo, invoque pushScreen() para exibir a tela personalizada do aplicativo. A classe GeolocationScreen, que é descrita na etapa 3, representa a tela personalizada.
public final class GeolocationDemo extends UiApplication { public static void main(String[] args) { GeolocationDemo theApp = new GeolocationDemo(); theApp.enterEventDispatcher(); } public GeolocationDemo() { pushScreen(new GeolocationScreen()); } } - Crie a estrutura da tela personalizada estendendo a classe MainScreen. Crie uma instância da classe LabelField para armazenar as coordenadas que aparecem na tela. Crie duas variáveis double para armazenar valores de latitude e longitude.
class GeolocationScreen extends MainScreen { private LabelField _coordLabel; private double _latitude; private double _longitude; } - No construtor de tela, chame super() para criar um menu padrão. Invoque setTitle() para especificar o título da tela.
public GeolocationScreen() { super(DEFAULT_CLOSE | DEFAULT_MENU); setTitle(new LabelField("Geolocation Demo", Field.USE_ALL_WIDTH | DrawStyle.HCENTER)); } - No construtor de tela, crie uma instância da classe ButtonField para criar um botão no qual o usuário do aparelho BlackBerry clica para recuperar a localização geográfica do aparelho. Invoque Field.setChangeListener() para escutar as alterações no botão. Invoque findGeolocation(), que é descrito na etapa 6, para recuperar os dados de localização geográfica quando o usuário clicar no botão. Invoque add() para adicionar o botão à tela. Crie uma instância da classe LabelField para exibir as coordenadas resultantes e chame add() para adicionar o campo à tela.
ButtonField geolocButton = new ButtonField("Get geolocation", ButtonField.CONSUME_CLICK); geolocButton.setChangeListener(new FieldChangeListener() { public void fieldChanged(Field field, int context) { findGeolocation(); } }); add(geolocButton); this._coordLabel = new LabelField(); add(this._coordLabel); - Crie a estrutura do método findGeolocation. Invoque setText() com um valor String vazio para limpar LabelField para as coordenadas. Crie uma instância da classe Thread que chama run(). Este thread é usado para processar a recuperação das informações de localização geográfica. Em run(), crie um bloco try/catch para especificar o modo de localização geográfica. Crie uma instância da classe BlackBerryCriteria chamando BlackBerryCriteria() e defina LocationInfo.GEOLOCATION_MODE como o modo para carregar informações de localização geográfica. No bloco catch, chame showException(), que é descrito na etapa 10, para exibir a mensagem de erro para um UnsupportedOperationException.
private void findGeolocation() { this._coordLabel.setText(""); Thread geolocThread = new Thread() { public void run() { try { BlackBerryCriteria myCriteria = new BlackBerryCriteria( LocationInfo.GEOLOCATION_MODE); } catch (UnsupportedOperationException e) { showException(e); } } }; geolocThread.start(); } - 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. No bloco catch, chame showException(), que é descrito na etapa 10, para exibir a mensagem de erro para um LocationException.
try { BlackBerryLocationProvider myProvider = (BlackBerryLocationProvider) LocationProvider.getInstance(myCriteria); } catch (LocationException e) { showException(e); } - No segundo bloco try, crie um terceiro bloco try/catch para carregar as informações de localização. Invoque BlackBerryLocationProvider.getLocation() com um parâmetro de -1 para carregar um provedor de localização usando o valor padrão de limite de tempo. Invoque getLongitude() e getLatitude() para carregar as coordenadas de longitude e latitude, respectivamente. Crie uma instância da classe StringBuffer e anexe as coordenadas resultantes à memória intermediária. Crie uma variável String e chame toString() com o objeto StringBuffer para retornar o valor String para as coordenadas. Invoque showResults() para exibir os resultados na tela, o que é descrito na etapa 9. No primeiro bloco catch, chame showException(), que é descrito na etapa 10, para exibir a mensagem de erro para um InterruptedException. No segundo blococatch, chame showException(), que é descrito na etapa 10, para exibir a mensagem de erro para um LocationException.
try { BlackBerryLocation myLocation =(BlackBerryLocation)myProvider .getLocation(-1); _longitude = myLocation.getQualifiedCoordinates().getLongitude(); _latitude = myLocation.getQualifiedCoordinates().getLatitude(); StringBuffer sb = new StringBuffer(); sb.append("Longitude: "); sb.append(_longitude); sb.append("\n"); sb.append("Latitude: "); sb.append(_latitude); String msg = sb.toString(); showResults(msg); } catch (InterruptedException e) { showException(e); } catch (LocationException e) { showException(e); } - No métodoshowResults, chame 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() com a variável String para especificar as coordenadas resultantes do LabelField.
private void showResults(final String msg) { Application.getApplication().invokeLater(new Runnable() { public void run() { GeolocationScreen.this._coordLabel.setText(msg); } }); } - No métodoshowException, chame invokeLater() para adicionar esta seção de código à fila de eventos do aplicativo. Crie uma instância de Runnable e defina-o como um parâmetro para invokeLater(). Substitua run() na definição de Runnable. Invoque Dialog.alert() para criar um caixa de diálogo de alerta e defina a mensagem de erro chamando getMessage().
private void showException(final Exception e) { Application.getApplication().invokeLater(new Runnable() { public void run() { Dialog.alert(e.getMessage()); } }); }
Próximo tópico: Exemplo de código: Recuperar a localização de um aparelho usando serviços de localização geográfica
Estas informações foram úteis? Gostaríamos de receber seus comentários.