Contoh aplikasi pelacakan dan geofence untuk Android - Amazon Location Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Contoh aplikasi pelacakan dan geofence untuk Android

Topik ini mencakup tutorial Android yang dirancang untuk mendemonstrasikan fitur utama menggunakan geofences dan pelacak Lokasi Amazon dalam aplikasi seluler. Aplikasi menunjukkan bagaimana pelacak dan geonfence berinteraksi menggunakan kombinasi fitur Lambda, AWS IoT dan Amazon Location.

Membuat sumber daya Lokasi Amazon untuk aplikasi Anda

Untuk memulai, Anda perlu membuat sumber daya Lokasi Amazon yang diperlukan. Sumber daya ini akan sangat penting untuk fungsionalitas aplikasi dan mengeksekusi cuplikan kode yang disediakan.

catatan

Jika Anda belum membuat AWS akun, ikuti petunjuk di panduan pengguna pengelolaan AWS akun.

Untuk memulai, Anda perlu membuat Id Kolam Identitas Amazon Cognito, gunakan prosedur berikut:

  1. Buka konsol Amazon Cognito dan pilih Identity pool dari menu sebelah kiri, lalu pilih Create Identity pool.

  2. Pastikan Akses Tamu dicentang, dan tekan Next untuk contiue.

  3. Selanjutnya buat peran IAM baru atau Gunakan peran IAM yang ada.

  4. Masukkan nama kumpulan Identity, dan pastikan Identity Pool memiliki akses ke (geo) sumber daya Lokasi Amazon untuk peta dan pelacak yang akan Anda buat di prosedur selanjutnya.

Selanjutnya Anda perlu membuat dan menata peta di konsol Lokasi AWS Amazon, gunakan prosedur berikut:

  1. Arahkan ke bagian Maps di konsol Lokasi Amazon dan pilih Buat Peta.

  2. Berikan peta baru Nama dan Deskripsi. Rekam nama yang Anda tetapkan, seperti yang digunakan nanti dalam tutorial.

  3. Saat memilih gaya peta, pertimbangkan penyedia data peta. Lihat bagian 82 dari ketentuan AWS layanan untuk detail selengkapnya.

  4. Terima Syarat dan Ketentuan Lokasi Amazon, lalu pilih Buat Peta, untuk menyelesaikan proses pembuatan peta.

Selanjutnya Anda perlu membuat pelacak di konsol Lokasi Amazon, gunakan prosedur berikut:

  1. Buka bagian Maps di konsol Lokasi Amazon.

  2. Pilih Buat pelacak.

  3. Isi kolom yang diperlukan. Catat Nama pelacak karena akan dibiaskan di seluruh tutoiral ini.

  4. Di bawah bidang Pemfilteran posisi, pilih opsi yang paling sesuai dengan cara Anda ingin menggunakan sumber daya pelacak Anda. Jika Anda tidak mengatur Pemfilteran posisi, pengaturan defaultnya adalahTimeBased. Untuk informasi selengkapnya, lihat Pelacak, dan PositionFilteringdi Referensi API Lokasi Amazon.

  5. Pilih Buat pelacak untuk menyelesaikan pembuatan pelacak.

Buat Koleksi Geofence

Sekarang Anda akan membuat koleksi geofence. Anda dapat menggunakan konsol, API atau CLI. Prosedur berikut memandu Anda melalui setiap opsi.

  • Buat koleksi geofence menggunakan konsol Lokasi Amazon:

    1. Buka bagian Koleksi Geofence di konsol Lokasi Amazon.

    2. Pilih Buat koleksi geofence.

    3. Berikan nama dan deskripsi untuk koleksi.

    4. Di bawah EventBridge aturan dengan Amazon CloudWatch sebagai target, Anda dapat membuat EventBridge aturan opsional untuk mulai bereaksi terhadap peristiwa geofence. Hal ini memungkinkan Amazon Location untuk mempublikasikan acara ke Amazon CloudWatch Logs.

    5. Tekan Buat koleksi geofence untuk menyelesaikan pembuatan koleksi.

  • Membuat koleksi geofence menggunakan Amazon Location API:

    Gunakan CreateGeofenceCollectionoperasi dari Amazon Location Geofences API. Contoh berikut menggunakan permintaan API untuk membuat koleksi geofence yang disebut. GEOCOLLECTION_NAME

    POST /geofencing/v0/collections Content-type: application/json { "CollectionName": "GEOCOLLECTION_NAME", "Description": "Geofence collection 1 for shopping center", "Tags": { "Tag1" : "Value1" } }
  • Buat koleksi geofence menggunakan perintah CLI AWS :

    Gunakan perintah create-geofence-collection. Contoh berikut menggunakan AWS CLI untuk membuat koleksi geofence yang disebut. GEOCOLLECTION_NAME Untuk informasi selengkapnya tentang penggunaan AWS CLI, lihat Dokumentasi Antarmuka Baris AWS Perintah.

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

Untuk menautkan pelacak ke koleksi geofence, Anda dapat menggunakan konsol, API, atau CLI. Prosedur berikut memandu Anda melalui setiap opsi.

Menautkan sumber daya pelacak ke koleksi geofence menggunakan konsol Amazon Location Service:

  1. Buka konsol Lokasi Amazon.

  2. Di panel navigasi kiri, pilih Pelacak.

  3. Di bawah Pelacak Perangkat, pilih tautan nama pelacak target.

  4. Di bawah Koleksi Geofence Tertaut, pilih Link Geofence Collection.

  5. Di jendela Linked Geofence Collection, pilih koleksi geofence dari menu tarik-turun.

  6. Pilih Tautkan.

  7. Setelah Anda menautkan sumber daya pelacak, itu akan diberi status Aktif.

Menautkan resource pelacak ke koleksi geofence menggunakan Amazon Location API:

Gunakan AsssociateTrackerConsumer operasi dari Amazon Location Trackers API. Contoh berikut menggunakan permintaan API yang mengaitkan ExampleTracker dengan koleksi geofence menggunakan Amazon Resource Name (ARN).

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

Tautkan sumber daya pelacak ke koleksi geofence menggunakan perintah CLI AWS :

Gunakan perintah associate-tracker-consumer . Contoh berikut menggunakan AWS CLI untuk membuat koleksi geofence yang disebut. GOECOLLECTION_NAME

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

Menggunakan AWS Lambda dengan MQTT

Untuk membuat koneksi antara AWS IoT dan Lokasi Amazon, Anda memerlukan fungsi Lambda untuk memproses pesan yang diteruskan oleh peristiwa. EventBridge CloudWatch Fungsi ini akan mengekstrak data posisi apa pun, memformatnya untuk Lokasi Amazon, dan mengirimkannya melalui Amazon Location Tracker API.

Prosedur berikut menunjukkan cara membuat fungsi ini melalui konsol Lambda:

  1. Buka konsol .

  2. Dari navigasi kiri, pilih Fungsi.

  3. Kemudian pilih Create Function, dan pastikan bahwa opsi Author from scratch dipilih.

  4. berikan nama Fungsi, dan untuk opsi Runtime, pilih Node.js 16.x.

  5. Pilih Buat fungsi.

  6. Buka tab Kode untuk mengakses editor.

  7. Timpa kode placeholder dalam index.js file dengan yang berikut:

    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. Tekan tombol Deploy untuk menyimpan fungsi yang diperbarui.

  9. Selanjutnya buka tab Konfigurasi.

  10. Di bagian Pemicu, tekan tombol Tambah Pemicu.

  11. Pilih EventBridge (CloudWatch Acara) di bidang Sumber.

  12. Pilih opsi Aturan yang Ada.

  13. Masukkan nama aturan, misalnyaAmazonLocationMonitor-GEOFENCECOLLECTION_NAME.

  14. Tekan tombol Tambah.

  15. Ini juga akan melampirkan pernyataan kebijakan berbasis Sumber Daya di tab izin

Sekarang Anda akan mengatur MQTT Test Client menggunakan AWS IoT, gunakan prosedur berikut:

  1. Buka https://console.aws.amazon.com/iot/.

  2. Di panel navigasi kiri, pilih klien pengujian MQTT.

  3. Anda akan melihat bagian berjudul MQTT test client di mana Anda dapat mengonfigurasi koneksi MQTT Anda.

  4. Setelah mengkonfigurasi pengaturan yang diperlukan, klik tombol Connect untuk membuat koneksi ke broker MQTT menggunakan parameter yang disediakan.

  5. Catat titik akhir, seperti yang digunakan nanti di tutoiral.

    Setelah terhubung ke klien pengujian, Anda dapat berlangganan topik MQTT atau mempublikasikan pesan ke topik menggunakan bidang masukan masing-masing yang disediakan di antarmuka klien pengujian MQTT. Selanjutnya Anda akan membuat AWS IoT kebijakan.

  6. Di menu sebelah kiri, di bawah opsi Kelola perluas Keamanan dan klik Kebijakan.

  7. Klik tombol Create Policy.

  8. Masukkan nama kebijakan.

  9. Pada Dokumen Kebijakan pilih tab JSON.

  10. Salin tempel kebijakan yang ditunjukkan di bawah ini, tetapi pastikan untuk memperbarui semua elemen dengan Anda REGION danACCOUNT_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" } ] }
  11. Pilih tombol Create untuk menyelesaikan.

Setelah menyelesaikan prosedur sebelumnya, Anda sekarang akan memperbarui izin untuk peran tamu sebagai berikut:

  1. Arahkan ke Amazon Cognito dan buka kumpulan identitas Anda. Kemudian, lanjutkan ke akses pengguna dan pilih peran tamu.

  2. Klik kebijakan izin untuk mengaktifkan pengeditan.

    { '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. Dengan perubahan kebijakan di atas, semua AWS sumber daya yang diperlukan sekarang dikonfigurasi dengan tepat untuk aplikasi.

Siapkan contoh kode aplikasi

  1. Kloning repositori ini: https://github.com/aws-geospatial/ amazon-location-samples-android /tree/main/ tracking-with-geofence-notifications ke mesin lokal Anda.

  2. Buka AmazonSampleSDKApp proyek di Android Studio.

  3. Buat dan jalankan aplikasi di perangkat Android atau emulator Anda.

Menggunakan aplikasi sampel

Untuk menggunakan sampel ikuti prosedur ini:

  • Buat custom.properties:

    Untuk mengonfigurasi custom.properties file Anda, ikuti langkah-langkah berikut:

    1. Buka editor teks atau IDE pilihan Anda.

    2. Buat file baru.

    3. Simpan file dengan namacustom.properties.

    4. Perbarui custom.properties dengan contoh kode berikut, dan ganti,MQTT_END_POINT, POLICY_NAMEGEOFENCE_COLLECTION_NAME, dan TOPIC_TRACKER dengan nama resoucre Anda:

      MQTT_END_POINT=YOUR_END_POINT.us-east-1.amazonaws.com POLICY_NAME=YOUR_POLICY GEOFENCE_COLLECTION_NAME=YOUR_GEOFENCE TOPIC_TRACKER=YOUR_TRACKER
    5. Bersihkan dan Bangun kembali proyek. Setelah ini, Anda dapat menjalankan proyek.

  • Masuk:

    Untuk masuk ke aplikasi, ikuti langkah-langkah di bawah ini:

    1. Tekan tombol Masuk.

    2. Berikan Identity Pool Id, nama Tracker, dan nama Map.

    3. Tekan Masuk lagi untuk menyelesaikan.

  • Kelola Filter:

    Buka layar konfigurasi, dan lakukan hal berikut:

    1. Aktifkan atau nonaktifkan filter menggunakan UI sakelar.

    2. Perbarui filter Waktu dan Jarak bila diperlukan.

  • Operasi Pelacakan:

    Buka layar pelacakan dan lakukan hal berikut:

    • Anda dapat memulai dan menghentikan pelacakan di latar depan, latar belakang, atau dalam mode penghemat baterai dengan menekan tombol masing-masing.