Google Maps per Android Automotive Intent

Disclaimer

Questo prodotto/questa funzionalità è soggetto a modifiche e non è soggetto ad alcun accordo sul livello del servizio (SLA) o a norme sul ritiro. L'implementazione è soggetta a modifiche nelle versioni future.

Per quanto riguarda il software di esempio, i file di dati e/o il codice sorgente che accompagnano la presente documentazione, questo prodotto viene fornito "così com'è" e senza garanzie di alcun tipo e Google nega espressamente qualsiasi garanzia, espressa, implicita, legale o di altra natura, incluse, senza alcuna limitazione, le garanzie di commerciabilità, idoneità a uno scopo particolare e non violazione di qualsiasi diritto relativo al prodotto.


Tramite gli intent di Android Automotive, puoi avviare la navigazione in Google Maps.

Per ulteriori informazioni, consulta Google Maps Intents per Android.

Per scoprire di più su come trasferire la tua app su veicoli con sistema operativo Android Auto o Android Automotive, consulta Android per le auto.

Panoramica

In questa pagina vengono descritti gli intent che puoi utilizzare con Google Maps per Android Automotive. Per la documentazione dettagliata per gli sviluppatori Android, leggi:

Richieste di intent

Per avviare Google Maps per Android Automotive con un intent, devi prima creare un oggetto Intent, specificando l'azione, l'URI e il pacchetto.

  • Azione. Tutti gli intent di Google Maps sono chiamati come azione di visualizzazione, ACTION_VIEW.

  • URI. Gli intent di Google Maps utilizzano stringhe con codifica URI che specificano l'azione desiderata, insieme ad alcuni dati con cui eseguirla.

  • Pacchetto. La chiamata a setPackage("com.google.android.apps.maps") assicura che l'app Google Maps per Android gestisca l'intent. Se il pacchetto non è impostato, il sistema determina quali app possono gestire l'intent. Se sono disponibili più app, ti potrebbe essere chiesto quale app vuoi utilizzare.

Dopo aver creato l'intent, puoi richiedere al sistema di avviare l'app correlata in diversi modi. Un metodo comune è passare l'intent al metodo [startActivity()]. Il sistema avvierà l'app necessaria, in questo caso Google Maps, e avvierà l'Attività corrispondente.

// Create a Uri from an intent string. Use the result to create an Intent.
Uri mapIntentUri =
Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
// Create an Intent from mapIntentUri. Set the action to ACTION_VIEW
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
// Make the Intent explicit by setting the Google Maps package
mapIntent.setPackage("com.google.android.apps.maps");
// Attempt to start an activity that can handle the Intent
startActivity(mapIntent);

Se il sistema non riesce a identificare un'app in grado di rispondere all'intent, l'app potrebbe arrestarsi in modo anomalo. Per questo motivo, verifica innanzitutto che un'applicazione ricevente sia installata prima di presentare uno di questi intent a un utente.

Per verificare che un'app sia disponibile per ricevere l'intent, chiama [resolveActivity()] sul tuo oggetto [Intent]. Se il risultato è diverso da null, esiste almeno un'app in grado di gestire l'intent e si può chiamare [startActivity()] in sicurezza. Se il risultato è nullo, non devi utilizzare l'intent e, se possibile, disabilitare la funzionalità che richiama l'intent.

if (mapIntent.resolveActivity(getPackageManager()) != null) {
...
}

Ad esempio, per avviare la navigazione passo passo per lo zoo di Taronga a Sydney, puoi utilizzare il seguente codice:

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
if (mapIntent.resolveActivity(getPackageManager()) != null) {
startActivity(mapIntent);
}

Stringhe di query codificate con URI

Tutte le stringhe passate a Google Maps Intent devono essere codificate in URI. Ad esempio, la stringa "1st & Pike, Seattle" dovrebbe diventare 1st%20%26%20Pike%2C%20Seattle. Gli spazi nella stringa possono essere codificati con %20 o sostituiti con il segno più (+).

Puoi usare il metodo android.net.Uri parse() per codificare le stringhe. Ad esempio:

Uri mapIntentUri = Uri.parse("google.navigation:q=" + Uri.encode("1st & Pike, Seattle"));

Avvia la navigazione passo passo

Utilizza questo intent per avviare la navigazione in Google Maps con indicazioni passo passo per uno o più indirizzi o coordinate specificate. Le indicazioni stradali vengono sempre fornite dalla posizione corrente dell'utente.

google.navigation:q=a+street+address
google.navigation:q=latitude,longitude
google.navigation:place=placename

Parametri

Per avviare la navigazione, utilizza place o q con waypoints, che è facoltativo. Se vuoi, puoi contrassegnare un waypoint come stazione di ricarica, vedi Inviare un piano di viaggio con un veicolo elettrico a Google Maps.

  • q imposta il punto di arrivo delle ricerche di navigazione. Può essere un indirizzo di latitudine/longitudine o un indirizzo formattato in una query. Se si tratta di una stringa di query che restituisce più di un risultato, verrà selezionato il primo risultato.

  • place imposta l'endpoint su casa o lavoro. Specifica la casa per raggiungere la casa dell'utente e il lavoro per raggiungere il luogo di lavoro dell'utente.

  • avoid imposta le funzionalità che il percorso dovrebbe cercare di evitare. avoid è facoltativo e può essere impostato su uno o più dei seguenti elementi:

    • t per i pedaggi
    • h per le autostrade
    • f per i traghetti
  • waypoints specifica uno o più luoghi intermedi per indirizzare le indicazioni stradali verso la destinazione finale specificata da q. Puoi specificare più tappe utilizzando la barra verticale (|) per separare i luoghi, ad esempio Berlin,Germany|Paris,France. Puoi utilizzare tutti i waypoint che vuoi. I waypoint verranno aggiunti alla rotta nello stesso ordine in cui sono elencati nell'URL. Ogni tappa può essere un indirizzo o coordinate di latitudine/longitudine separate da virgole e puoi avere indirizzi e coordinate di latitudine/longitudine nello stesso intento. Le stringhe devono essere con caratteri di escape, perciò i waypoint come "Berlino,Germania|Parigi,Francia" devono essere convertiti in Berlin%2CGermany%7CParis%2CFrance.

Esempi

Questo intent richiederà la navigazione passo passo per lo zoo di Taronga, a Sydney, in Australia:

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Se preferisci non pagare pedaggi o viaggiare su un traghetto, puoi richiedere i percorsi che cercano di evitare queste situazioni:

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&avoid=tf");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

In alternativa, se preferisci raggiungere casa tua, utilizza:

Uri mapIntentUri = Uri.parse("google.navigation:place=home");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Per avviare in ordine la navigazione passo passo verso i tre indirizzi seguenti, posiziona lo zoo di Taronga come destinazione finale q e Google Sydney e il Teatro dell'opera di Sydney come tappe:

  1. Google Sydney

  2. Teatro dell'opera di Sydney

  3. Zoo di Taronga, Sydney, Australia

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&waypoints=Google+Sydney%7CSydney+Opera+House");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Analogamente a q, puoi rappresentare qualsiasi tappa con latitudine e longitudine separate da virgole, anziché un indirizzo. Ad esempio, per avviare la stessa navigazione passando la latitudine e la longitudine per il Teatro dell'Opera di Sydney anziché l'indirizzo:

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&waypoints=Google+Sydney%7C-33.856159,151.215256");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Invia un piano di viaggio con un veicolo elettrico a Google Maps

Utilizza questo intent di navigazione con più destinazioni per specificare alcune destinazioni come tappe per ricarica dei veicoli elettrici (EV). Questo intent, che estende l'intent multi-waypoint, aiuta i conducenti a mantenere una carica della batteria del veicolo elettrica sufficiente per raggiungere le loro destinazioni sincronizzando le informazioni sulle tappe per ricarica tra le app di pianificazione dei viaggi dei veicoli elettrici e Google Maps.

Per le tappe per ricarica, intent del percorso:

  • Deve contenere nome e latitudine/longitudine
  • Può contenere facoltativamente l'uscita di potenza da utilizzare per il calcolo del tempo di ricarica

Google utilizza il nome e la latitudine della stazione di ricarica per trovare la posizione di una stazione di ricarica corrispondente e visualizzare informazioni dettagliate come tipi di connettori, totali, velocità e disponibilità in tempo reale, metodi di pagamento supportati e punti d'interesse (PDI). Ad esempio, le indicazioni stradali all'interno dei parcheggi esterni per la parte finale della navigazione, gli orari di apertura e le valutazioni. Per assicurarti che le stazioni di ricarica corrispondano correttamente ai dati di Google, utilizza <brand name>, ad esempio ChargePoint.

Parametri

Destinazione finale

Per impostare una stazione di ricarica come destinazione finale, utilizza:

  • q: deve contenere il valore per la latitudine e longitudine della stazione di ricarica.
  • q_type: 1 specifica che la destinazione finale è una stazione di ricarica.
  • q_name: il nome della destinazione finale. Obbligatorio se q_type è 1.
  • q_power_output_kw: un numero doppio per la potenza erogata dalla stazione di ricarica in kilowatt. Campo facoltativo.

Waypoint

Per quanto riguarda i waypoint, tutti i parametri sono array di valori paralleli e separati da | nello stesso ordine dei waypoint, esclusa la destinazione finale. Una mancata corrispondenza nel numero di elementi in array paralleli viene trattata come un intento non valido.

Per aggiungere i waypoint di una o più stazioni di ricarica, utilizza i seguenti parametri, tutti facoltativi. Se una delle destinazioni è contrassegnata come stazione di ricarica, il nome del waypoint diventa obbligatorio per quella destinazione.

  • waypoints: elenco di waypoint come descritto nell'intent di navigazione passo passo. Deve essere un valore di latitudine e longitudine per i waypoint delle stazioni di ricarica.

  • waypoint_types: tipi per waypoint specificati come numero. 0 è qualsiasi fermata (valore predefinito) e 1 è la stazione di ricarica.

  • waypoint_names: nomi dei waypoint. Questo campo è obbligatorio per le stazioni di ricarica.

  • waypoint_power_outputs_kw: numeri doppi per la potenza delle stazioni di ricarica in kilowatt. Per le stazioni di ricarica, puoi facoltativamente specificare un valore di uscita dell'alimentazione del waypoint, che viene utilizzato come riserva se non viene trovata la stazione corrispondente. Se lo slot è vuoto, non viene fornito alcun valore.

Comportamento dell'esperienza utente

Per gli intent di corsa con più destinazioni, viene visualizzata la schermata della panoramica del percorso, ma la navigazione non si avvia automaticamente.

Per un intent formattato correttamente, Google Maps mostrerà una schermata di panoramica del percorso per la corsa. La schermata della panoramica del percorso mostrerà tutti i waypoint e la destinazione finale rispetto all'intent, con suggerimenti per la ricarica, se applicabili.

Per qualsiasi waypoint o destinazione finale contrassegnati come stazioni di ricarica, Google Maps cerca un luogo corrispondente nel database di Google.

Se viene trovata una corrispondenza, Google Maps utilizza i dati di Google per visualizzare la stazione di ricarica nell'interfaccia utente (UI) e fornire un suggerimento per la stazione di ricarica. Se la corrispondenza non viene trovata, i dati forniti nell'intent relativo a una stazione di ricarica (latitudine, nome e potenza di uscita) verranno utilizzati per visualizzare la stazione di ricarica nell'interfaccia utente e fornire un suggerimento di ricarica per la stazione di ricarica.

Esempi

Raggiungere una destinazione finale tramite diverse stazioni di ricarica

Il seguente intent consente di raggiungere la destinazione finale, Port Macquarie NSW, tramite due stazioni di ricarica, ChargePoint ed Evie.

Destinazioni in ordine:

  1. Stazione di ricarica ChargePoint (località: -32.9599188,151.6240806, potenza uscita: 6,6 kW)

  2. Stazione di ricarica Evie (località: -31.9432539,152.4699808, potenza: 350 kW)

  3. Port Macquarie (NSW)

Uri mapIntentUri =
    Uri.parse(
        "google.navigation:q=Port+Macquarie+NSW"
            + "&waypoints=-32.9599188%2C151.6240806%7C-31.9432539%2C152.4699808"
            + "&waypoint_types=1%7C1"
            + "&waypoint_names=ChargePoint+Charging+Station%7CEvie+Charging+Station"
            + "&waypoint_power_outputs_kw=6.6%7C350");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Potenza di uscita sconosciuta

Se il valore della potenza di uscita è sconosciuto, lascia vuoto lo slot pertinente waypoint_power_outputs_kw. Oppure, se tutti gli slot sono vuoti, non è necessario specificare il parametro waypoint_power_outputs_kw.

Destinazioni in ordine:

  1. Stazione di ricarica ChargePoint (posizione: -32.9599188,151.6240806, potenza: sconosciuta)

  2. Port Macquarie (NSW)

Uri mapIntentUri =
    Uri.parse(
        "google.navigation:q=Port+Macquarie+NSW"
            + "&waypoints=-32.9599188%2C151.6240806"
            + "&waypoint_types=1"
            + "&waypoint_names=ChargePoint+Charging+Station");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Contrassegna la destinazione finale come stazione di ricarica

Per contrassegnare la destinazione finale come stazione di ricarica, specifica i parametri q_type, q_name e q_power_output_kw.

Destinazioni in ordine:

  1. Zoo di Taronga, Sydney, Australia

  2. Stazione di ricarica ChargePoint (posizione: -32.9599188,151.6240806, potenza: sconosciuta)

  3. Stazione di ricarica Evie (località: -31.9432539,152.4699808, potenza: 350 kW)

Uri mapIntentUri =
    Uri.parse(
        "google.navigation:q=-31.9432539,152.4699808&q_type=1&q_name=Evie+Charging+Station&q_power_output_kw=350"
            + "&waypoints=Taronga+Zoo%2C+Sydney+Australia%7C-32.9599188%2C151.6240806"
            + "&waypoint_types=0%7C1"
            + "&waypoint_names=%7CChargePoint+Charging+Station"
            + "&waypoint_power_outputs_kw=%7C");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);