Guida allo sviluppo
Local Navigation
- Panoramica dei servizi basati sulla posizione
- Ricerca di una posizione
- Attivazione e recupero dell'opzione Servizi di posizionamento sul dispositivo
- Recupero di una posizione utilizzando il GPS
- Specifica della modalità GPS
- Specifica della modalità GPS tramite JSR 179
- Specifica della modalità GPS utilizzando le estensioni di BlackBerry che includono JSR 179
- Recupero delle informazioni sulla posizione utilizzando la modalità GPS assistita
-
Recupero di un provider di posizioni
- Recupero di un provider di posizioni utilizzando la classe LocationProvider
- Controllo del rilevamento della posizione utilizzando la classe BlackBerryLocationProvider
- Controllo del rilevamento della posizione utilizzando la classe BlackBerryLocationProvider
- Esempio di codice: utilizzo della classe BlackBerryLocationProvider per controllare il rilevamento della posizione
- Recupero di un provider di posizioni utilizzando la classe BlackBerryLocationProvider
-
Recupero della posizione di un dispositivo BlackBerry
- Recupero della posizione di un dispositivo BlackBerry
- Esempio di codice: recupero della posizione GPS di un dispositivo BlackBerry
- Recupero della posizione di un dispositivo BlackBerry specificando continue richieste di fix
- Esempio di codice: recupero della posizione GPS di un dispositivo BlackBerry inviando continue richieste di fix
- Recupero delle informazioni sulla posizione utilizzando la classe Location
- Recupero delle informazioni sulla posizione utilizzando la classe Location
- Esempio di codice: utilizzo della classe Location per recuperare informazioni sulla posizione GPS
- Recupero delle informazioni sulla posizione utilizzando la classe BlackBerryLocation
- Recupero delle informazioni sui satelliti utilizzando la classe BlackBerryLocation
- Esempio di codice: utilizzo della classe BlackBerryLocation per recuperare le informazioni sui satelliti
- Modifica dei criteri per ricevere informazioni sulla posizione
- Esempio di codice: modifica dei criteri per il recupero delle informazioni di posizione
- Gestione degli errori
- Recupero di una posizione GPS utilizzando una pagina Web
- Recupero di una posizione utilizzando il servizio di geolocation
- Recupero del fix ottimale con il GPS e il servizio di geolocation
- Richiesta simultanea di aggiornamenti GPS e di geolocation
- Geocoding e geocoding inverso
- Ricezione degli avvisi di prossimità mediante il geofencing
- Determinazione della direzione
- Recupero della durata del viaggio, della distanza e dell'ora di partenza stimate
- Visualizzazione di una posizione mediante le mappe
- Personalizzazione dell'aspetto di una mappa
- Integrazione con BlackBerry Maps
- Ulteriori informazioni
- Glossario
- Commenti e suggerimenti
- Note legali
Documentazione sui prodotti
>
Documentazione per gli sviluppatori
>
Guide per lo sviluppo Java e riferimento API
>
Guida allo sviluppo
Location-Based Services - BlackBerry Java SDK - 7.0
Recupero di più fix ottimali
I seguenti passaggi mostrano come creare un'applicazione dell'interfaccia utente che fornisca aggiornamenti continui sulla posizione, recuperando fix GPS quando disponibili o entro un periodo di timeout specificato. Se il fix GPS non è disponibile, viene restituito un fix di geolocation.
Prima di iniziare: Verificare che sul dispositivo BlackBerry o su BlackBerry Smartphone Simulator sia abilitato il GPS.
- Importare le classi e le interfacce richieste.
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.*;
- Creare il framework dell'applicazione estendendo la classe UiApplication. Creare una variabile di tipo numero intero e assegnarle il valore 1, che specifica l'intervallo di aggiornamento delle coordinate di posizione. Creare una variabile con il tipo EditField per memorizzare gli aggiornamenti sulla posizione che vengono visualizzati sulla schermata. In main(), creare un'istanza della nuova classe e richiamare enterEventDispatcher() per abilitare l'applicazione a ricevere gli eventi. Nel costruttore dell'applicazione, creare un'istanza della classe MultipleFixScreen, come descritto al passaggio 7. Richiamare setTitle() per specificare il titolo della schermata. Creare un'istanza della classe EditField e aggiungere il campo alla schermata. Richiamare startLocationUpdate(), come descritto al passaggio 4, per avviare il recupero degli aggiornamenti sulla posizione. Richiamare pushScreen() per visualizzare la schermata personalizzata per l'applicazione.
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); } } - Creare un metodo updateLocationScreen che richiama invokeLater() per aggiungere questa sezione di codice alla coda di eventi dell'applicazione. Creare un'istanza della classe Runnable e passarla come parametro a invokeLater(). Sovrascrivere run() nella definizione di Runnable. Richiamare setText() per visualizzare i risultati sulla schermata.
private void updateLocationScreen(final String msg) { invokeLater(new Runnable() { public void run() { _status.setText(msg); } }); } - Creare il framework per il metodo startLocationUpdate. Creare un blocco try/catch per specificare i criteri per recuperare una posizione. Creare un'istanza della classe BlackBerryCriteria richiamando BlackBerryCriteria(). Viene utilizzata la modalità di posizione predefinita perché non vengono passati argomenti a BlackBerryCriteria(). Richiamare enableGeolocationWithGPS() per specificare il recupero di un fix GPS, se disponibile, o per recuperare un fix di geolocation se il fix GPS non è disponibile. Nel blocco catch, aggiungere un UnsupportedOperationException, che indica che la modalità di posizione non è supportata.
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; } - Nel primo blocco try, creare un secondo blocco try/catch per recuperare un provider di posizioni. Richiamare LocationProvider.getInstance() con l'oggetto BlackBerryCriteria per recuperare un provider di posizioni. Creare un'istanza Runnable e passarla come parametro a invokeLater(). Sovrascrivere run() nella definizione di Runnable verrà visualizzato un messaggio per indicare che non è possibile recuperare il provider di posizioni. Richiamare setLocationListener() passando il valore di intervallo, il valore di timeout e la durata massima come parametri per registrare un listener quando un provider di posizioni è disponibile. Nel blocco catch, aggiungere un LocationException, che indica che il provider di posizione non è disponibile.
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); } - Creare una seconda classe che implementa LocationListener. Implementare locationUpdated() per fornire gli aggiornamenti sulla posizione. Creare un'istruzione if per verificare se la posizione è valida. Se la posizione è valida, recuperare le coordinate della longitudine, della latitudine e dell'altitudine richiamando, rispettivamente, getLongitude(), getLatitude() egetAltitude(). Creare un'istanza della classe StringBuffer e aggiungere le coordinate risultanti al buffer. Richiamare updateLocationScreen() per visualizzare le coordinate risultanti sulla schermata.
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 } } - Creare il framework della schermata personalizzata estendendo la classe MainScreen. Nel costruttore della schermata, richiamare super() per creare un menu predefinito. Creare un'istanza RichTextField per visualizzare un messaggio informativo. Richiamare add() per aggiungere RichTextField alla schermata.
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); } }
Argomento successivo: Esempio di codice: recupero di più fix ottimali
Argomento precedente: Esempio di codice: recupero del fix ottimale
Le informazioni sono state utili? Inviateci i vostri commenti.