Guía de desarrollo
Local Navigation
- Descripción general de los servicios basados en ubicación
- Encontrar una ubicación
- Activar y poner en cola los Servicios de ubicación en el dispositivo
- Recuperar una ubicación mediante GPS
- Especificar el modo GPS
- Especificar el modo GPS utilizando JSR 179
- Especificar el modo GPS utilizando las extensiones de BlackBerry para JSR 179
- Recuperar la información de la ubicación utilizando el modo GPS asistido
-
Recuperar un proveedor de ubicación
- Recuperar un proveedor de ubicación utilizando la clase LocationProvider
- Controlar el rastreo de ubicaciones utilizando la clase BlackBerryLocationProvider
- Controlar el rastreo de ubicaciones utilizando la clase BlackBerryLocationProvider
- Ejemplo de código: Utilizar la clase BlackBerryLocationProvider para controlar el rastreo de ubicaciones
- Recuperar un proveedor de ubicación utilizando la clase BlackBerryLocationProvider
-
Recuperar la ubicación de un dispositivo BlackBerry
- Recuperar la ubicación de un dispositivo BlackBerry
- Ejemplo de código: Recuperar la ubicación GPS de un dispositivo BlackBerry
- Recuperar la ubicación de un dispositivo BlackBerry especificando solicitudes continuas del punto de posición
- Ejemplo de código: Recuperar la ubicación GPS de un dispositivo BlackBerry utilizando solicitudes continuas del punto de posición
- Recuperar la información de la ubicación utilizando la clase Location
- Recuperar información de la ubicación utilizando la clase Location
- Ejemplo de código: Utilizar la clase Location para recuperar información de la ubicación GPS
- Recuperar la información de ubicación utilizando la clase BlackBerryLocation
- Recuperar información del satélite utilizando la clase BlackBerryLocation
- Ejemplo de código: Utilizar la clase BlackBerryLocation para recuperar información del satélite
- Cambiar los criterios para recibir información de ubicación
- Ejemplo de código: Modificar los criterios para recuperar información de ubicación
- Gestionar errores
- Recuperar una ubicación GPS utilizando una página Web
- Recuperar una ubicación mediante la geoubicación
- Recuperar la posición óptima con GPS y geoubicación
- Solicitar actualizaciones simultáneas de geoubicación y GPS
- Codificación geográfica y codificación geográfica inversa
- Recibir alertas de proximidad mediante límites geográficos
- Determinar la dirección o el rumbo
- Recuperar el tiempo estimado del viaje, la distancia y la hora de salida
- Visualizar una ubicación mediante mapas
- Personalizar la apariencia de un mapa
- Integrar con BlackBerry Maps
- Obtener más información
- Glosario
- Comentarios
- Aviso legal
Documentación de producto
>
Documentación del desarrollador
>
Guías de desarrollo de Java y referencia de API
>
Guía de desarrollo
Location-Based Services - BlackBerry Java SDK - 7.0
Recuperar varias posiciones óptimas
Los siguientes pasos muestran cómo crear una aplicación de interfaz de usuario que proporcione actualizaciones de ubicación continuas mediante la recuperación de los puntos de posición GPS cuando las ubicaciones están disponibles o dentro del período de tiempo de espera especificado. Si el punto de posición GPS no está disponible, se devuelve en su lugar la posición de la geoubicación.
Antes de comenzar: Compruebe que el dispositivo BlackBerry o BlackBerry Smartphone Simulator tienen la tecnología GPS activada.
- Importe las clases y las interfaces necesarias.
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.*;
- Cree el marco de la aplicación ampliando la clase UiApplication. Cree una variable de número entero y asígnele un valor de 1 que especifique el intervalo para actualizar las coordenadas de ubicación. Cree una variable con el tipo EditField para almacenar las actualizaciones de ubicación que se muestran en la pantalla. En main(), cree una instancia de la clase nueva e invoque enterEventDispatcher() para activar la aplicación para recibir eventos. En el constructor de la aplicación, cree una instancia de la clase MultipleFixScreen, que se describe en el paso 7. Invoque setTitle() para especificar el título de la pantalla. Cree una instancia de la clase EditField y agregue el campo a la pantalla. Invoque startLocationUpdate(), que se describe en el paso 4, para comenzar a recuperar actualizaciones de ubicación. Invoque pushScreen() para mostrar la pantalla personalizada de la aplicación.
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); } } - Cree un método updateLocationScreen que invoque invokeLater() para agregar esta sección del código a la cola de eventos de la aplicación. Cree una instancia de la clase Runnable y pásela como parámetro a invokeLater(). Omita run() en la definición de Runnable. Invoque setText() para mostrar los resultados en la pantalla.
private void updateLocationScreen(final String msg) { invokeLater(new Runnable() { public void run() { _status.setText(msg); } }); } - Cree el marco para el método startLocationUpdate. Cree un bloque try/catch para especificar los criterios para recuperar una ubicación. Cree una instancia de la clase BlackBerryCriteria invocando BlackBerryCriteria(). El modo de ubicación predeterminado se utiliza porque no se pasan argumentos a BlackBerryCriteria(). Invoque enableGeolocationWithGPS() para especificar la necesidad de recuperar un punto de posición GPS si está disponible, o de recuperar una posición de geoubicación si el punto de posición GPS no está disponible. Si en el bloque catch observa una UnsupportedOperationException querrá decir que el modo de ubicación no es compatible.
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; } - En el primer bloque try, cree un segundo bloque try/catch para recuperar un proveedor de ubicación. Invoque LocationProvider.getInstance() con el objeto BlackBerryCriteria para recuperar un proveedor de ubicación. Cree una instancia de Runnable y pásela como parámetro a invokeLater(). Omita run() en la definición de Runnable y muestre un mensaje que indique que no ha sido posible recuperar el proveedor de ubicación. Invoque setLocationListener() pasando el valor de intervalo, el valor de tiempo de espera y la antigüedad máxima como parámetros para registrar un servicio de escucha cuando esté disponible un proveedor de ubicación. Si en el bloque catch observa una LocationException querrá decir que el proveedor de ubicación no está disponible.
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); } - Cree una segunda clase que implemente LocationListener. Implemente locationUpdated() para proporcionar actualizaciones de ubicación. Cree una instrucción if para comprobar que la ubicación es válida. Si la ubicación es válida, recupere las coordenadas de longitud, latitud y altitud invocando getLongitude(), getLatitude() y getAltitude() respectivamente. Cree una instancia de la clase StringBuffer y anexe las coordenadas resultantes al búfer. Invoque updateLocationScreen() para mostrar las coordenadas resultantes en la pantalla.
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 } } - Cree el marco de la pantalla personalizada ampliando la clase MainScreen. En el constructor de pantalla, invoque super() para crear un menú predeterminado. Cree una instancia de RichTextField para mostrar un mensaje de instrucciones. Invoque add() para agregar RichTextField a la pantalla.
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); } }
Tema siguiente: Ejemplo de código: recuperar varias posiciones óptimas
Tema anterior: Ejemplo de código: recuperar la posición óptima
¿Le ha resultado útil esta información? Envíenos sus comentarios.