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 del fix ottimale
La procedura seguente mostra come creare un'applicazione dell'interfaccia utente che fornisca il fix di posizione più rapido, proveniente da un'origine di geolocation o da un'origine della posizione GPS. Le coordinate di posizione e la modalità utilizzata dall'applicazione vengono visualizzate sulla schermata.
Prima di iniziare: Verificare che il dispositivo BlackBerry o BlackBerry Smartphone Simulator abbiano accesso al servizio di geolocation.
- 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. In main(), creare un'istanza della nuova classe e richiamare enterEventDispatcher() per abilitare l'applicazione a ricevere gli eventi. Nel costruttore dell'applicazione, richiamare pushScreen() per visualizzare la schermata personalizzata per l'applicazione. La classe SingleFixScreen, descritta nel passaggio 3, rappresenta la schermata personalizzata.
public final class SingleFixDemo extends UiApplication { public static void main(String[] args) { SingleFixDemo theApp = new SingleFixDemo(); theApp.enterEventDispatcher(); } public SingleFixDemo() { pushScreen(new SingleFixScreen()); } } - Creare il framework della schermata personalizzata estendendo la classe MainScreen. Creare un'istanza della classe LabelField per memorizzare le coordinate che si desidera visualizzare sulla schermata. Creare due variabili double per memorizzare i valori della latitudine e della longitudine. Creare una variabile integer e una variabile String per memorizzare la modalità di posizione.
class SingleFixScreen extends MainScreen { private LabelField _coordLabel; private double _latitude; private double _longitude; private int _modeUsed; private String _mode; } - Nel costruttore della schermata, richiamare super() per creare un menu predefinito. Richiamare setTitle() per specificare il titolo della schermata.
public SingleFixScreen() { super(DEFAULT_CLOSE | DEFAULT_MENU); setTitle(new LabelField("Single Fix Demo", Field.USE_ALL_WIDTH | DrawStyle.HCENTER)); } - Nel costruttore della schermata, creare un'istanza della classe ButtonField per creare un pulsante su cui l'utente BlackBerry deve fare clic per recuperare la posizione del dispositivo. Richiamare Field.setChangeListener() per ricevere gli eventi di modifica del pulsante. Richiamare findLocation(), come descritto al passaggio 6, per recuperare le informazioni di geolocation quando l'utente fa clic sul pulsante. Richiamare add() per aggiungere il pulsante alla schermata. Creare un'istanza della classe LabelField per visualizzare le coordinate risultanti e richiamare add() per aggiungere il campo alla schermata.
ButtonField locButton = new ButtonField("Get location fix", ButtonField.CONSUME_CLICK); locButton.setChangeListener(new FieldChangeListener() { public void fieldChanged(Field field, int context) { findLocation(); } }); add(locButton); this._coordLabel = new LabelField(); add(this._coordLabel); - Creare il framework per il metodo findLocation. Richiamare setText() con un valore String vuoto per cancellare le coordinate da LabelField. Creare un'istanza della classe Thread che richiama run(). Questo thread è utilizzato per elaborare il recupero delle informazioni sulla posizione. In run(), creare un blocco try/catch per specificare i criteri di recupero di 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(BlackBerryCriteria.FASTEST_FIX_PREFERRED) per recuperare il primo fix di posizione disponibile. Nel blocco catch, richiamare showException(), come descritto al passaggio 10, per visualizzare il messaggio di errore per un evento UnsupportedOperationException.
private void findLocation() { this._coordLabel.setText(""); Thread locThread = new Thread() { public void run() { try { BlackBerryCriteria myCriteria = new BlackBerryCriteria(); myCriteria.enableGeolocationWithGPS(BlackBerryCriteria .FASTEST_FIX_PREFERRED); } catch (UnsupportedOperationException e) { showException(e); } } }; locThread.start(); } - 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. Nel blocco catch, richiamare showException(), come descritto al passaggio 10, per visualizzare il messaggio di errore per un evento LocationException.
try { BlackBerryLocationProvider myProvider = (BlackBerryLocationProvider) LocationProvider.getInstance(myCriteria); } catch (LocationException e) { showException(e); } - Nel secondo blocco try, creare un terzo blocco try/catch per recuperare le informazioni sulla posizione. Richiamare BlackBerryLocationProvider.getLocation() con un parametro -1 per recuperare un provider di posizioni utilizzando il valore di timeout predefinito. Richiamare getLongitude() e getLatitude() per recuperare, rispettivamente, le coordinate di longitudine e latitudine. Richiamare getGPSMode() per recuperare la modalità utilizzata per recuperare la posizione. Creare un blocco switch per identificare se viene utilizzata la modalità GPS o geolocation. Creare un'istanza della classe StringBuffer e aggiungere le coordinate risultanti e la modalità al buffer. Creare una variabile String e richiamare toString() con l'oggetto StringBuffer per restituire il valore String per le coordinate. Richiamare showResults() per visualizzare i risultati sulla schermata, come descritto al passaggio 9. Nel blocco catch, richiamare showException(), come descritto al passaggio 10, per visualizzare il messaggio di errore per un evento InterruptedException. Nel secondo blocco catch, richiamare showException(), come descritto al passaggio 10, per visualizzare il messaggio di errore per un evento LocationException.
try { BlackBerryLocation myLocation =(BlackBerryLocation)myProvider .getLocation(-1); _longitude = myLocation.getQualifiedCoordinates().getLongitude(); _latitude = myLocation.getQualifiedCoordinates().getLatitude(); _modeUsed = myLocation.getGPSMode(); switch (_modeUsed) { case LocationInfo.GEOLOCATION_MODE: case LocationInfo.GEOLOCATION_MODE_CELL: case LocationInfo.GEOLOCATION_MODE_WLAN: _mode = "Geolocation"; break; default: _mode = "GPS"; } StringBuffer sb = new StringBuffer(); sb.append("Longitude: "); sb.append(_longitude); sb.append("\n"); sb.append("Latitude: "); sb.append(_latitude); sb.append("\n"); sb.append("Mode: "); sb.append(_mode); String msg = sb.toString(); showResults(msg); } catch (InterruptedException e) { showException(e); } catch (LocationException e) { showException(e); } - Nel metodo showResults, richiamare invokeLater() per aggiungere questa sezione di codice alla coda eventi dell'applicazione. Creare un'istanza della classe Runnable e passarla come parametro a invokeLater(). Sovrascrivere run() nella definizione di Runnable. Richiamare setText() con la variabile String per specificare le coordinate risultanti per LabelField.
private void showResults(final String msg) { Application.getApplication().invokeLater(new Runnable() { public void run() { SingleFixScreen.this._coordLabel.setText(msg); } }); } - Nel metodo showException, richiamare invokeLater() per aggiungere questa sezione di codice alla coda eventi dell'applicazione. Creare un'istanza Runnable e passarla come parametro a invokeLater(). Sovrascrivere run() nella definizione di Runnable. Richiamare Dialog.alert() per creare una finestra di dialogo di avviso e passare il messaggio di errore richiamando getMessage().
private void showException(final Exception e) { Application.getApplication().invokeLater(new Runnable() { public void run() { Dialog.alert(e.getMessage()); } }); }
Argomento successivo: Esempio di codice: recupero del fix ottimale
Argomento precedente: Recupero del fix ottimale con il GPS e il servizio di geolocation
Le informazioni sono state utili? Inviateci i vostri commenti.