Guida introduttiva: Creare un'app Android con Mappe di Azure
Questo articolo illustra come aggiungere Mappe di Azure a un'app Android. L'articolo descrive le operazioni di base seguenti:
- Configurare l'ambiente di sviluppo.
- Creare un proprio account di Mappe di Azure.
- Ottenere la chiave primaria di Mappe di Azure da usare nell'app.
- Fare riferimento alle librerie di Mappe di Azure dal progetto.
- Aggiungere un controllo di Mappe di Azure all'app.
Nota
Ritiro di Android SDK di Mappe di Azure
Azure Maps Native SDK per Android è ora deprecato e verrà ritirato il 3/31/25. Per evitare interruzioni del servizio, eseguire la migrazione al Web SDK di Mappe di Azure entro il 31/3/25. Per altre informazioni, vedere La guida alla migrazione di Android SDK di Mappe di Azure.
Prerequisiti
Un abbonamento a Microsoft Azure. Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
Android Studio. Se non hai Android Studio, puoi ottenerlo gratuitamente da Google.
Nota
Molte delle istruzioni contenute in questa guida introduttiva sono state create usando Android Studio Arctic Fox (2020.3.1). Se si usa una versione diversa di Android Studio, i passaggi specifici per Android Studio possono variare.
Creare un account di Mappe di Azure
Creare un nuovo account Mappe di Azure usando la procedura seguente:
Nell'angolo superiore sinistro della portale di Azure selezionare Crea una risorsa.
Nella casella Cerca nel Marketplace digitare Mappe di Azure, quindi selezionare Mappe di Azure nei risultati della ricerca.
Selezionare il pulsante Crea.
Nella pagina Crea account di Mappe immettere i valori seguenti:
- La sottoscrizione da usare per l'account.
- Il nome del gruppo di risorse per l'account. Per il gruppo di risorse è possibile selezionare l'opzione Crea nuovo o Usa esistente.
- Il nome del nuovo account.
- Piano tariffario dell'account. Selezionare Gen2.
- Leggere le Condizioni e selezionare la casella di controllo per confermare di aver letto e accettato l'Informativa sulla licenza e la privacy.
- Selezionare il pulsante Rivedi e crea.
- Dopo aver verificato che tutto sia corretto nella pagina Rivedi e crea , selezionare il pulsante Crea .
Ottenere la chiave di sottoscrizione per l'account
Dopo aver creato correttamente l'account Mappe di Azure, recuperare la chiave di sottoscrizione che consente di eseguire query sulle API di Mappe.
- Aprire l'account Mappe di Azure nel portale.
- Nel riquadro sinistro selezionare Autenticazione.
- Copiare la chiave primaria e salvarla in locale per usarla più avanti in questa esercitazione.
Nota
Per motivi di sicurezza, è consigliabile ruotare tra le chiavi primarie e secondarie. Per eseguire la rotazione delle chiavi, aggiornare l'app per usare la chiave secondaria, distribuire, quindi premere il pulsante di ciclo/aggiornamento accanto alla chiave primaria per generare una nuova chiave primaria. La chiave primaria precedente verrà disabilitata. Per altre informazioni sulla rotazione delle chiavi, vedere Configurare Azure Key Vault con rotazione e controllo delle chiavi.
Creare un progetto in Android Studio
Completare i passaggi seguenti per creare un nuovo progetto con un'attività vuota in Android Studio:
Avviare Android Studio e selezionare Nuovo dal menu File , quindi Nuovo progetto...
Nella schermata Nuovo progetto selezionare Telefono e tablet dall'elenco Modelli sul lato sinistro della schermata.
Selezionare Attività vuota nell'elenco dei modelli e quindi Avanti.
Nella schermata Attività vuota immettere i valori per i campi seguenti:
- Nome. Immettere AzureMapsApp.
- Nome pacchetto. Usare l'app com.example.azuremapsapp predefinita.
- Percorso di salvataggio. Usare il valore predefinito o selezionare un nuovo percorso per salvare i file di progetto. Evitare di usare spazi nel percorso o nel nome file a causa di potenziali problemi con gli strumenti NDK.
- Lingua. Selezionare Kotlin o Java.
- SDK minimo. Selezionare
API 21: Android 5.0.0 (Lollipop)
come SDK minimo. È la versione meno recente supportata dal Mappe di Azure Android SDK.
Selezionare Fine per creare il nuovo progetto.
Vedere la documentazione di Android Studio per altre informazioni sull'installazione di Android Studio e la creazione di un nuovo progetto.
Configurare un dispositivo virtuale
Android Studio consente di configurare un dispositivo Android virtuale nel computer. Questa operazione può essere utile per testare l'applicazione durante lo sviluppo.
Per configurare un dispositivo virtuale Android :To set up an Android Virtual Device (AVD):
- Selezionare AVD Manager nel menu Strumenti .
- Viene visualizzata la Gestione dispositivi virtuale Android. Selezionare Crea dispositivo virtuale.
- Nella categoria Phones (Telefoni) selezionare Nexus 5X e quindi Next (Avanti).
Per altre informazioni sulla configurazione di un AVD, vedere Creare e gestire dispositivi virtuali nella documentazione di Android Studio.
Installare Android SDK per Mappe di Azure
Il passaggio successivo per la creazione dell'applicazione consiste nell'installare Android SDK per Mappe di Azure. Per installare l'SDK, seguire questa procedura:
Aprire il file delle impostazioni del progetto settings.gradle e aggiungere il codice seguente alla sezione repository :
maven {url "https://atlas.microsoft.com/sdk/android"}
Nello stesso file di impostazioni del progetto settings.gradle modificare repositoryMode in
PREFER_SETTINGS
:repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
Il file delle impostazioni del progetto dovrebbe ora essere visualizzato come segue:
Aprire il file gradle.properties del progetto, verificare che
android.useAndroidX
eandroid.enableJetifier
siano entrambi impostati sutrue
.Se il file gradle.properties non include
android.useAndroidX
eandroid.enableJetifier
, aggiungere le due righe successive alla fine del file:android.useAndroidX=true android.enableJetifier=true
Aprire il file build.gradle dell'applicazione ed eseguire le operazioni seguenti:
Verificare che il valore minSdk del progetto sia 21 o superiore.
Assicurarsi che
compileOptions
nellaAndroid
sezione siano i seguenti:compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }
Aggiornare il blocco delle dipendenze e aggiungere una nuova dipendenza di implementazione per la versione più recente di Android SDK Mappe di Azure:
implementation 'com.azure.android:azure-maps-control:1.+'
Selezionare Sincronizza progetto con Gradle Files dal menu File .
Aggiungere un frammento di mappa all'attività principale:
<com.azure.android.maps.control.MapControl android:id="@+id/mapcontrol" android:layout_width="match_parent" android:layout_height="match_parent" />
Per aggiornare l'attività principale, selezionare layout> res > dell'app > activity_main.xml nello strumento di spostamento del progetto:
Nel file MainActivity.java:
- Aggiungere importazioni per Mappe di Azure SDK.
- Impostare le informazioni di autenticazione Mappe di Azure.
- Ottenere l'istanza del controllo mappa nel metodo onCreate .
Suggerimento
Impostando le informazioni di autenticazione a livello globale nella
AzureMaps
classe usando isetSubscriptionKey
metodi osetAadProperties
, non sarà necessario aggiungere le informazioni di autenticazione in ogni visualizzazione.Il controllo mappa contiene i propri metodi del ciclo di vita per la gestione del ciclo di vita OpenGL di Android. Questi metodi del ciclo di vita devono essere chiamati direttamente dall'attività che li contiene. Per chiamare correttamente i metodi del ciclo di vita del controllo mappa, eseguire l'override dei metodi del ciclo di vita seguenti nell'attività che contiene il controllo mappa, quindi chiamare il rispettivo metodo di controllo mappa.
onCreate(Bundle)
onDestroy()
onLowMemory()
onPause()
onResume()
onSaveInstanceState(Bundle)
onStart()
onStop()
Modificare il file MainActivity.java come segue:
package com.example.azuremapsapp; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import com.azure.android.maps.control.AzureMaps; import com.azure.android.maps.control.MapControl; import com.azure.android.maps.control.layer.SymbolLayer; import com.azure.android.maps.control.options.MapStyle; import com.azure.android.maps.control.source.DataSource; public class MainActivity extends AppCompatActivity { static { AzureMaps.setSubscriptionKey("<Your-Azure-Maps-Primary-Subscription-Key>"); //Alternatively use Azure Active Directory authenticate. //AzureMaps.setAadProperties("<Your-AAD-clientId>", "<Your-AAD-appId>", "<Your-AAD-tenant>"); } MapControl mapControl; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mapControl = findViewById(R.id.mapcontrol); mapControl.onCreate(savedInstanceState); //Wait until the map resources are ready. mapControl.onReady(map -> { //Add your post map load code here. }); } @Override public void onResume() { super.onResume(); mapControl.onResume(); } @Override protected void onStart(){ super.onStart(); mapControl.onStart(); } @Override public void onPause() { super.onPause(); mapControl.onPause(); } @Override public void onStop() { super.onStop(); mapControl.onStop(); } @Override public void onLowMemory() { super.onLowMemory(); mapControl.onLowMemory(); } @Override protected void onDestroy() { super.onDestroy(); mapControl.onDestroy(); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mapControl.onSaveInstanceState(outState); }}
Nel file MainActivity.kt:
- Aggiungere le importazioni per Azure Maps SDK
- Impostare le informazioni di autenticazione di Mappe di Azure
- Ottenere l'istanza del controllo mappa nel metodo OnCreate
Suggerimento
Impostando le informazioni di autenticazione a livello globale nella
AzureMaps
classe usando isetSubscriptionKey
metodi osetAadProperties
, non sarà necessario aggiungere le informazioni di autenticazione in ogni visualizzazione.Il controllo mappa contiene i propri metodi del ciclo di vita per la gestione del ciclo di vita OpenGL di Android. Questi metodi del ciclo di vita devono essere chiamati direttamente dall'attività che li contiene. Per chiamare correttamente i metodi del ciclo di vita del controllo mappa, eseguire l'override dei metodi del ciclo di vita seguenti nell'attività che contiene il controllo mappa. e chiamare il rispettivo metodo del controllo mappa.
onCreate(Bundle)
onDestroy()
onLowMemory()
onPause()
onResume()
onSaveInstanceState(Bundle)
onStart()
onStop()
Modificare il file MainActivity.kt come segue:
package com.example.azuremapsapp; import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import com.azure.android.maps.control.AzureMap import com.azure.android.maps.control.AzureMaps import com.azure.android.maps.control.MapControl import com.azure.android.maps.control.events.OnReady class MainActivity : AppCompatActivity() { companion object { init { AzureMaps.setSubscriptionKey("<Your-Azure-Maps-Primary-Subscription-Key>"); //Alternatively use Azure Active Directory authenticate. //AzureMaps.setAadProperties("<Your-AAD-clientId>", "<Your-AAD-appId>", "<Your-AAD-tenant>"); } } var mapControl: MapControl? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) mapControl = findViewById(R.id.mapcontrol) mapControl?.onCreate(savedInstanceState) //Wait until the map resources are ready. mapControl?.onReady(OnReady { map: AzureMap -> }) } public override fun onStart() { super.onStart() mapControl?.onStart() } public override fun onResume() { super.onResume() mapControl?.onResume() } public override fun onPause() { mapControl?.onPause() super.onPause() } public override fun onStop() { mapControl?.onStop() super.onStop() } override fun onLowMemory() { mapControl?.onLowMemory() super.onLowMemory() } override fun onDestroy() { mapControl?.onDestroy() super.onDestroy() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) mapControl?.onSaveInstanceState(outState) } }
Selezionare il pulsante Esegui sulla barra degli strumenti, come illustrato nell'immagine seguente (o premere
Control
+R
su un Mac) per compilare l'applicazione.
Android Studio richiede alcuni secondi per compilare l'applicazione. Al termine della compilazione è possibile testare l'applicazione nel dispositivo Android emulato. Verrà visualizzata una mappa simile a questa:
Suggerimento
Per impostazione predefinita, Android ricarica l'attività quando l'orientamento cambia o la tastiera è nascosta. Ciò comporta la reimpostazione dello stato della mappa (ricaricare la mappa che reimposta la visualizzazione e ricarica i dati allo stato iniziale). Per evitare che ciò accada, aggiungere quanto segue al manifesto: android:configChanges="orientation|keyboardHidden"
. In questo modo l'attività smetterà di ricaricare e chiamerà onConfigurationChanged()
invece quando l'orientamento è cambiato o la tastiera è nascosta.
Pulire le risorse
Avviso
Le esercitazioni elencate nella sezione Passaggi successivi offrono indicazioni dettagliate su come usare e configurare Mappe di Azure con il proprio account. Non eliminare le risorse create in questa guida introduttiva se si prevede di continuare con le esercitazioni.
Se non si intende continuare con le esercitazioni, pulire le risorse eseguendo questa procedura:
- Chiudere Android Studio ed eliminare l'applicazione creata.
- Se l'applicazione è stata testata in un dispositivo esterno, disinstallarla da tale dispositivo.
Se non si prevede di continuare a sviluppare con Android SDK per Mappe di Azure:
- Accedere alla pagina del portale di Azure. Selezionare Tutte le risorse dalla pagina principale del portale.
- Selezionare il proprio account di Mappe di Azure. Nella parte superiore della pagina selezionare Elimina.
- Facoltativamente, se non si prevede di continuare a sviluppare app Android, disinstallare Android Studio.
Per altri esempi di codice, vedere queste guide:
- Gestire l'autenticazione in Mappe di Azure
- Cambiare gli stili della mappa nelle mappe Android
- Aggiungere un livello per i simboli
- Aggiungere un livello per le linee
- Aggiungere un livello per i poligoni
Passaggi successivi
In questa guida introduttiva vengono creati l'account di Mappe di Azure e un'applicazione demo. Per altre informazioni su Mappe di Azure, vedere l'esercitazione seguente: