Erstellen einer Android-Anwendung - Amazon Location Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erstellen einer Android-Anwendung

Gehen Sie wie folgt vor, um mithilfe von Amazon Location Service eine iOS-Anwendung zu erstellen.

Klonen Sie die Projektdateien von GitHub.

Sie können Amazon Location Service Service-Ressourcen generieren, sobald Ihr AWS Konto bereit ist. Diese Ressourcen sind für die Ausführung der bereitgestellten Codefragmente unerlässlich.

Anmerkung

Wenn Sie noch kein AWS Konto erstellt haben, erstellen Sie bitte ein AWS Konto.

Zunächst müssen Sie eine Amazon Cognito Identity Pool-ID erstellen. Gehen Sie dazu wie folgt vor:

  1. Navigieren Sie in der AWS Konsole zum Amazon Cognito-Service und wählen Sie dann im Menü auf der linken Seite Identitätspools und dann Identitätspool erstellen aus.

  2. Vergewissern Sie sich, dass Gastzugriff aktiviert ist, und klicken Sie auf Weiter, um fortzufahren.

  3. Erstellen Sie als Nächstes eine neue IAM-Rolle oder Verwenden Sie eine vorhandene IAM-Rolle.

  4. Geben Sie einen Namen für den Identitätspool ein und stellen Sie sicher, dass Identity Pool Zugriff auf (geo) Amazon-Standortressourcen für die Karte und den Tracker hat, die Sie im nächsten Verfahren erstellen werden.

Jetzt müssen Sie in der AWS Amazon Location-Konsole eine Karte erstellen und gestalten. Gehen Sie dazu wie folgt vor:

  1. Navigieren Sie in der Amazon Location-Konsole zum Abschnitt Maps und wählen Sie Create Map aus, um eine Vorschau der verfügbaren Kartenstile anzuzeigen.

  2. Geben Sie der neuen Kartenressource einen Namen und eine Beschreibung. Notieren Sie sich den Namen, den Sie der Kartenressource zuweisen, so wie er später im Tutorial verwendet wird.

  3. Berücksichtigen Sie bei der Auswahl eines Kartenstils den Kartendatenanbieter. Weitere Informationen finden Sie in Abschnitt 82 der AWS Servicebedingungen.

  4. Akzeptieren Sie die Allgemeinen Geschäftsbedingungen für Amazon-Standorte und wählen Sie dann Karte erstellen aus. Nachdem die Karte erstellt wurde, können Sie mit der Karte interagieren, indem Sie sie vergrößern, verkleinern oder in eine beliebige Richtung schwenken.

So erstellen Sie einen Tracker mit der Amazon Location-Konsole

  1. Öffnen Sie die Amazon Location Service Service-Konsole.

  2. Wählen Sie im linken Navigationsbereich Trackers aus.

  3. Wählen Sie Tracker erstellen.

  4. Füllen Sie alle erforderlichen Felder aus.

  5. Wählen Sie unter Positionsfilterung die Option aus, die am besten zu Ihrer geplanten Nutzung Ihrer Tracker-Ressource passt. Wenn Sie die Positionsfilterung nicht einrichten, ist die Standardeinstellung TimeBased. Weitere Informationen finden Sie unter Trackers in diesem Handbuch und PositionFiltering in der Amazon Location Service Trackers API-Referenz.

  6. Wählen Sie „Tracker erstellen“, um den Vorgang abzuschließen.

Beim Erstellen einer Geofence-Sammlung können Sie entweder die Konsole, die API oder die CLI verwenden. Die folgenden Verfahren führen Sie durch die einzelnen Optionen.

Erstellen Sie mit der Amazon Location-Konsole eine Geofence-Sammlung:

  1. Öffnen Sie die Amazon Location Service Service-Konsole unter https://console.aws.amazon.com/location/.

  2. Wählen Sie im linken Navigationsbereich Geofence Collections aus.

  3. Wählen Sie Geofence-Sammlung erstellen aus.

  4. Geben Sie einen Namen und eine Beschreibung für die Sammlung an.

  5. Unter EventBridge CloudWatch Regel mit Ziel können Sie eine optionale EventBridge Regel erstellen, mit der Sie sofort auf Geofence-Ereignisse reagieren können. Dadurch kann Amazon Location Ereignisse in Amazon CloudWatch Logs veröffentlichen.

  6. Wählen Sie Geofence-Sammlung erstellen aus.

Erstellen Sie eine Geofence-Sammlung mithilfe des Amazon-Standorts: APIs

Verwenden Sie den CreateGeofenceCollection Vorgang von Amazon Location Geofences APIs aus. Das folgende Beispiel verwendet eine API-Anfrage, um eine Geofence-Sammlung namens zu erstellen. GOECOLLECTION_NAME

POST /geofencing/v0/collections Content-type: application/json { "CollectionName": "GOECOLLECTION_NAME", "Description": "Geofence collection 1 for shopping center", "Tags": { "Tag1" : "Value1" } }

Erstellen Sie eine Geofence-Sammlung mithilfe von Befehlen: AWS CLI

Verwenden Sie den create-geofence-collection-Befehl. Im folgenden Beispiel wird eine verwendet AWS CLI , um eine Geofence-Sammlung namens zu erstellen. GOECOLLECTION_NAME

aws location \ create-geofence-collection \ --collection-name "GOECOLLECTION_NAME" \ --description "Shopping center geofence collection" \ --tags Tag1=Value1  

Um einen Tracker mit einer Geofence-Sammlung zu verknüpfen, können Sie entweder die Konsole, die API oder die CLI verwenden. Die folgenden Verfahren führen Sie durch die einzelnen Optionen.

Verknüpfen Sie mithilfe der Amazon Location Service Service-Konsole eine Tracker-Ressource mit einer Geofence-Sammlung:

  1. Öffnen Sie die Amazon Location-Konsole.

  2. Wählen Sie im linken Navigationsbereich Trackers aus.

  3. Wählen Sie unter Device Trackers den Namenslink des Ziel-Trackers aus.

  4. Wählen Sie unter Verknüpfte Geofence-Sammlungen die Option Geofence-Sammlung verknüpfen aus.

  5. Wählen Sie im Fenster Verknüpfte Geofence-Sammlung eine Geofence-Sammlung aus dem Drop-down-Menü aus.

  6. Wählen Sie Verknüpfen.

  7. Nachdem Sie die Tracker-Ressource verknüpft haben, wird ihr der Status Aktiv zugewiesen.

Verknüpfen Sie mithilfe des Amazon-Standorts eine Tracker-Ressource mit einer Geofence-Sammlung: APIs

Verwenden Sie den AsssociateTrackerConsumer Vorgang von Amazon Location Trackers APIs aus. Im folgenden Beispiel wird eine API-Anfrage verwendet, die mithilfe ihres Amazon-Ressourcennamens (ARN) ExampleTracker mit einer Geofence-Sammlung verknüpft wird.

POST /tracking/v0/trackers/ExampleTracker/consumers Content-type: application/json { "ConsumerArn": "arn:aws:geo:us-west-2:123456789012:geofence-collection/GOECOLLECTION_NAME" }

Verknüpfen Sie mithilfe von Befehlen eine Tracker-Ressource mit einer Geofence-Sammlung: AWS CLI

Verwenden Sie den associate-tracker-consumer -Befehl. Im folgenden Beispiel wird eine verwendet AWS CLI , um eine Geofence-Sammlung namens zu erstellen. GOECOLLECTION_NAME

aws location \ associate-tracker-consumer \ --consumer-arn "arn:aws:geo:us-west-2:123456789012:geofence-collection/GOECOLLECTION_NAME" \ --tracker-name "ExampleTracker"

Erstellen einer Lambda-Funktion:

Um eine Verbindung zwischen AWS IoT Core und Amazon Location Service herzustellen, benötigen Sie eine AWS Lambda Funktion zur Verarbeitung von Nachrichten, die von EventBridge CloudWatch Ereignissen weitergeleitet werden. Diese Funktion extrahiert alle Positionsdaten, formatiert sie für Amazon Location Service und übermittelt sie über die Amazon Location Tracker-API. Sie können diese Funktion über die AWS Lambda Konsole erstellen, oder Sie können die AWS Command Line Interface (AWS CLI) oder die AWS Lambda APIs verwenden. So erstellen Sie eine Lambda-Funktion, die mithilfe der Konsole Positionsaktualisierungen für Amazon Location veröffentlicht:

  1. Öffnen Sie die AWS Lambda Konsole unter. https://console.aws.amazon.com/lambda/

  2. Wählen Sie in der linken Navigationsleiste Funktionen aus.

  3. Wählen Sie „Funktion erstellen“ und stellen Sie sicher, dass „Von Grund auf neu erstellen“ ausgewählt ist.

  4. Füllen Sie die folgenden Felder aus:

    • ein Funktionsname

    • wählen Sie für die Runtime-Option Node.js 16.x.

  5. Wählen Sie Funktion erstellen.

  6. Wählen Sie die Registerkarte Code, um den Editor zu öffnen.

  7. Überschreiben Sie den Platzhaltercode in index.js mit dem Folgenden:

    const AWS = require('aws-sdk') const iot = new AWS.Iot(); exports.handler =  function(event) { console.log("event===>>>", JSON.stringify(event)); var param = { endpointType: "iot:Data-ATS" }; iot.describeEndpoint(param, function(err, data) { if (err) { console.log("error===>>>", err, err.stack); // an error occurred } else {       var endp = data['endpointAddress'];       const iotdata = new AWS.IotData({endpoint: endp});           const trackerEvent = event["detail"]["EventType"];       const src = event["source"];       const time = event["time"];       const gfId = event["detail"]["GeofenceId"];       const resources = event["resources"][0];         const splitResources = resources.split(".");         const geofenceCollection = splitResources[splitResources.length - 1];       const coordinates = event["detail"]["Position"];                                     const deviceId = event["detail"]["DeviceId"];       console.log("deviceId===>>>", deviceId);       const msg =  {           "trackerEventType" : trackerEvent,           "source" : src,           "eventTime" : time,           "geofenceId" : gfId,           "coordinates": coordinates,           "geofenceCollection": geofenceCollection       }; const params = { topic: `${deviceId}/tracker`, payload: JSON.stringify(msg), qos: 0  }; iotdata.publish(params, function(err, data) { if (err) { console.log("error===>>>", err, err.stack); // an error occurred } else { console.log("Ladmbda triggered===>>>", trackerEvent);  // successful response    } }); } }); }
  8. Wählen Sie Deploy, um die aktualisierte Funktion zu speichern.

  9. Wählen Sie die Registerkarte Konfiguration aus.

  10. Klicken Sie im Bereich Trigger auf Auslöser hinzufügen.

  11. Wählen Sie im Feld Quelle EventBridge (CloudWatch Ereignisse) aus.

  12. Wählen Sie das Optionsfeld `Existierende Regeln`.

  13. Geben Sie den Regelnamen wie folgt ein: `-GEOFENCECOLLECTION_NAME`. AmazonLocationMonitor

  14. Klicken Sie auf die Schaltfläche Hinzufügen.

  15. Dadurch werden auch `Ressourcenbasierte Richtlinienerklärungen` auf der Registerkarte „Berechtigungen“ angehängt

MQTT-Testclient

  1. Öffnen Sie die https://console.aws.amazon.com/iot/.

  2. Wählen Sie im linken Navigationsbereich MQTT-Testclient aus.

  3. Sie sehen einen Abschnitt mit dem Titel MQTT-Testclient, in dem Sie Ihre MQTT-Verbindung konfigurieren können.

  4. Nachdem Sie die erforderlichen Einstellungen konfiguriert haben, klicken Sie auf die Schaltfläche Connect, um mithilfe der bereitgestellten Parameter eine Verbindung zum MQTT-Broker herzustellen.

  5. Notieren Sie sich den Endpunktwert.

Sobald die Verbindung hergestellt ist, können Sie MQTT-Themen abonnieren oder Nachrichten zu Themen veröffentlichen, indem Sie die entsprechenden Eingabefelder verwenden, die in der MQTT-Testclient-Oberfläche bereitgestellt werden. Als Nächstes fügen Sie die MQTT-Richtlinie hinzu:

  1. Erweitern Sie im Menü auf der linken Seite unter Verwalten die Option Sicherheit und klicken Sie auf Richtlinien.

  2. Klicken Sie auf die Schaltfläche Richtlinie erstellen.

  3. Geben Sie den Namen einer Richtlinie ein.

  4. Wählen Sie im Richtliniendokument die Registerkarte JSON aus.

  5. Kopieren Sie die unten gezeigte Richtlinie und fügen Sie sie ein. Achten Sie jedoch darauf, alle Elemente mit Ihrem REGION und zu aktualisierenACCOUNT_ID:

    { "Version": "2012-10-17", "Statement": [     {       "Action": [         "iot:Connect",         "iot:Publish",         "iot:Subscribe",         "iot:Receive"     ],       "Resource": [         "arn:aws:iot:REGION:ACCOUNT_ID:client/${cognito-identity.amazonaws.com:sub}",     "arn:aws:iot:REGION:ACCOUNT_ID:topic/${cognito-identity.amazonaws.com:sub}", "arn:aws:iot:REGION:ACCOUNT_ID:topicfilter/${cognito-identity.amazonaws.com:sub}/", "arn:aws:iot:REGION:ACCOUNT_ID:topic/${cognito-identity.amazonaws.com:sub}/tracker" ], "Effect": "Allow" } ] }
    Anmerkung

    Notieren Sie sich den Richtliniennamen und den Themennamen zur Verwendung im nächsten Verfahren.

  6. Wählen Sie die Schaltfläche Erstellen, um den Vorgang abzuschließen.

Nachdem Sie das vorherige Verfahren abgeschlossen haben, aktualisieren Sie nun die Berechtigungen für die Gastrolle wie folgt:

  1. Navigieren Sie zu Amazon Cognito und öffnen Sie Ihren Identitätspool. Fahren Sie dann mit dem Benutzerzugriff fort und wählen Sie die Gastrolle aus.

  2. Klicken Sie auf Berechtigungsrichtlinien, um die Bearbeitung zu aktivieren.

    { 'Version': '2012-10-17 ', 'Statement': [ { 'Action': [ 'geo:GetMap*', 'geo:BatchUpdateDevicePosition', 'geo:BatchEvaluateGeofences', 'iot:Subscribe', 'iot:Publish', 'iot:Connect', 'iot:Receive', 'iot:AttachPrincipalPolicy', 'iot:AttachPolicy', 'iot:DetachPrincipalPolicy', 'iot:DetachPolicy' ], 'Resource': [ 'arn:aws:geo:us-east-1:{USER_ID}:map/{MAP_NAME}', 'arn:aws:geo:us-east-1:{USER_ID}:tracker/{TRACKER_NAME}', 'arn:aws:geo:us-east-1:{USER_ID}:geofence-collection/{GEOFENCE_COLLECTION_NAME}', 'arn:aws:iot:us-east-1:{USER_ID}:client/${cognito-identity.amazonaws.com:sub}', 'arn:aws:iot:us-east-1:{USER_ID}:topic/${cognito-identity.amazonaws.com:sub}', 'arn:aws:iot:us-east-1:{USER_ID}:topicfilter/${cognito-identity.amazonaws.com:sub}/*', 'arn:aws:iot:us-east-1:{USER_ID}:topic/${cognito-identity.amazonaws.com:sub}/tracker' ], 'Effect': 'Allow' }, { 'Condition': { 'StringEquals': { 'cognito-identity.amazonaws.com:sub': '${cognito-identity.amazonaws.com:sub}' } }, 'Action': [ 'iot:AttachPolicy', 'iot:DetachPolicy', 'iot:AttachPrincipalPolicy', 'iot:DetachPrincipalPolicy' ], 'Resource': [ '*' ], 'Effect': 'Allow' } ] }
  3. Mit den oben genannten Richtlinienänderungen sind nun alle erforderlichen AWS Ressourcen für die Anwendung entsprechend konfiguriert.

  1. Öffnen Sie Android Studio und wählen Sie in der Versionskontrolle Neu und dann Projekt aus.

  2. Navigieren Sie zum Menü Datei in der oberen linken Ecke von Android Studio.

  3. Wählen Sie im Drop-down-Menü „Neu“ aus.

  4. Wählen Sie „Projekt aus der Versionskontrolle“.

  5. Geben Sie die Repository-URL ein. Suchen Sie im daraufhin angezeigten Dialogfeld nach dem Feld mit der Bezeichnung „URL“.

  6. Kopieren Sie die folgende URL für die Beispiel-App und fügen Sie sie in dieses Feld ein: https://github.com/aws-geospatial/amazon-location-samples-android.git

  7. Entscheiden Sie sich für das Verzeichnis, in das Sie das Repository klonen möchten. Verwenden Sie entweder das Standardverzeichnis oder entscheiden Sie sich für einen benutzerdefinierten Speicherort.

  8. Nachdem Sie die Repository-URL und die Verzeichniseinstellungen festgelegt haben, klicken Sie auf die Schaltfläche „Klonen“. Android Studio klont das Repository weiter an den angegebenen Speicherort.

  9. Sie haben die Anwendung jetzt auf Ihren Computer geklont und können sie verwenden.

Gehen Sie wie folgt vor, um das Beispiel zu verwenden:

  • Erstellen Sie ein custom.properties:

    Gehen Sie folgendermaßen vor, um Ihre custom.properties Datei zu konfigurieren:

    1. Öffnen Sie Ihren bevorzugten Texteditor oder Ihre bevorzugte IDE.

    2. Erstellen Sie eine neue Datei.

    3. Speichern Sie die Datei mit dem Namen custom.properties.

    4. Aktualisieren Sie das custom.properties mit dem folgenden Codebeispiel und ersetzen Sie MQTT_END_POINTPOLICY_NAME,GEOFENCE_COLLECTION_NAME, und TOPIC_TRACKER durch tatsächliche Werte:

      MQTT_END_POINT=xxxxxxxxxxxxx-xxx.xxx.us-east-1.amazonaws.com POLICY_NAME=xxxxxxxxx GEOFENCE_COLLECTION_NAME=xxxxxxxxxxxxxxxxx TOPIC_TRACKER=xxxxxxxxxx
    5. Säubern Sie das Projekt und erstellen Sie es neu. Danach können Sie das Projekt ausführen.

  • Einloggen:

    Gehen Sie wie folgt vor, um sich bei der Anwendung anzumelden:

    1. Drücken Sie die Anmeldetaste.

    2. Geben Sie eine Identitätspool-ID, einen Tracker-Namen und einen Kartennamen an.

    3. Drücken Sie erneut auf Anmelden, um den Vorgang abzuschließen.

  • Filter verwalten:

    Öffnen Sie den Konfigurationsbildschirm und gehen Sie wie folgt vor:

    1. Schalten Sie die Filter on/off mithilfe der Switch-Benutzeroberfläche um.

    2. Aktualisieren Sie die Zeit- und Entfernungsfilter bei Bedarf.

  • Nachverfolgung von Vorgängen:

    Öffnen Sie den Tracking-Bildschirm und gehen Sie wie folgt vor:

    • Sie können das Tracking im Vordergrund, Hintergrund oder im Energiesparmodus starten und beenden, indem Sie die entsprechenden Tasten drücken.