Mendapatkan data snapshot

Bagian ini menunjukkan cara menggunakan Snapshot API untuk mendapatkan status saat ini untuk setiap jenis konteks yang didukung. Untuk mengetahui informasi selengkapnya, lihat Memulai. Untuk mengetahui detail tentang sinyal kontekstual yang tidak digunakan lagi, buka pemberitahuan yang dapat diluaskan berikut:

Mendapatkan aktivitas saat ini

Untuk mendapatkan aktivitas pengguna saat ini, panggil getDetectedActivity(), yang menampilkan ActivityRecognitionResult yang berisi informasi tentang aktivitas terbaru pengguna.

Metode getDetectedActivity() memerlukan izin com.google.android.gms.permission.ACTIVITY_RECOGNITION. Tambahkan izin ini ke AndroidManifest.xml.

Untuk mendapatkan aktivitas pengguna saat ini, lakukan langkah-langkah berikut:

  1. Panggil getSnapshotClient() untuk membuat instance SnapshotClient.
  2. Gunakan addOnSuccessListener untuk membuat OnSuccessListener yang dapat memproses DetectedActivityResponse.
  3. Panggil getStatus() untuk memastikan hasilnya valid.
  4. Panggil DetectedActivityResponse.getActivityRecognitionResult() untuk menampilkan ActivityRecognitionResult. Anda dapat menggunakannya untuk mendapatkan berbagai aspek aktivitas pengguna saat ini. Contoh:

Contoh kode berikut menggunakan getMostProbableActivity() untuk mendapatkan aktivitas yang paling mungkin terdeteksi, dan mencatat hasilnya ke konsol:

Awareness.getSnapshotClient(this).getDetectedActivity()
    .addOnSuccessListener(new OnSuccessListener<DetectedActivityResponse>() {
        @Override
        public void onSuccess(DetectedActivityResponse dar) {
            ActivityRecognitionResult arr = dar.getActivityRecognitionResult();
            DetectedActivity probableActivity = arr.getMostProbableActivity();

            int confidence = probableActivity.getConfidence();
            String activityStr = probableActivity.toString();
            mLogFragment.getLogView().println("Activity: " + activityStr
                + ", Confidence: " + confidence + "/100");
        }
    })

Mendapatkan beacon di sekitar

Untuk mendapatkan informasi tentang beacon di sekitar, panggil getBeaconState(). Data beacon terdiri dari konten, jenis, dan namespace dari lampiran apa pun.

Metode getBeaconState() memerlukan izin android.permission.ACCESS_FINE_LOCATION. Tambahkan izin ini ke AndroidManifest.xml. Selain itu, Anda harus mengaktifkan Nearby Messages API untuk project Google Developers Console. Untuk mengetahui informasi selengkapnya, lihat Pendaftaran dan Kunci API serta Memulai.

Untuk mendapatkan informasi tentang beacon di sekitar, lakukan langkah-langkah berikut:

  1. Periksa apakah pengguna telah memberikan izin yang diperlukan. Contoh berikut memeriksa apakah izin android.permission.ACCESS_FINE_LOCATION diberikan. Jika tidak, pengguna akan dimintai izin.

    if (ContextCompat.checkSelfPermission(
                MainActivity.this,
                Manifest.permission.ACCESS_FINE_LOCATION) !=
                PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(
                    MainActivity.this,
                    new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
                    MY_PERMISSION_LOCATION
            );
            return;
        }
    
  2. Tentukan BeaconState.TypeFilter. Tindakan ini hanya akan menampilkan beacon dengan lampiran yang terdaftar dengan namespace dan jenis yang ditentukan. Anda juga dapat memfilter berdasarkan pencocokan byte-ke-byte pada konten lampiran. Contoh berikut menunjukkan cara membuat filter jenis:

    private static final List BEACON_TYPE_FILTERS = Arrays.asList(
            BeaconState.TypeFilter.with(
                "my.beacon.namespace",
                "my-attachment-type"),
            BeaconState.TypeFilter.with(
                "my.other.namespace",
                "my-attachment-type"));
    
  3. Panggil getSnapshotClient.getBeaconState().

  4. Gunakan addOnSuccessListener untuk membuat OnSuccessListener yang dapat memproses BeaconStateResponse.

  5. Panggil getStatus() untuk memastikan hasilnya valid.

  6. Panggil BeaconStateResponse.getBeaconState() untuk menampilkan status beacon.

  7. Panggil BeaconState.getBeaconInfo() untuk mendapatkan BeaconState.BeaconInfo.

Contoh berikut menunjukkan cara mendapatkan info beacon:

Awareness.getSnapshotClient(this).getBeaconState(BEACON_TYPE_FILTERS)
    .addOnSuccessListener(new OnSuccessListener<BeaconStateResponse>() {
        @Override
        public void onSuccess(BeaconStateResponse beaconStateResponse) {
            BeaconStateResult beaconStateResult = beaconStateResponse.getBeaconState();
            BeaconState.BeaconInfo beaconInfo = beaconStateResponse.getBeaconInfo();
        }
    })

Mendapatkan status headphone

Untuk mendeteksi apakah headphone dicolokkan ke perangkat, panggil getHeadphoneState(), yang membuat status deteksi HeadphoneStateResponse dengan OnSuccessListener disetel untuk mendeteksi. Anda kemudian dapat memanggil getHeadphoneState() untuk mendapatkan HeadphoneState.

Untuk mendapatkan status headphone saat ini, lakukan langkah-langkah berikut:

  1. Panggil getSnapshotClient.getHeadphoneState().
  2. Gunakan addOnSuccessListener untuk membuat OnSuccessListener yang dapat memproses HeadphoneStateResponse.
  3. Panggil getStatus() untuk memastikan hasilnya valid.
  4. Jika berhasil, panggil HeadphoneStateResponse.getHeadphoneState() untuk menampilkan status headphone. Nilai ini dapat berupa PLUGGED_IN atau UNPLUGGED.

Contoh kode berikut menunjukkan cara menggunakan getHeadphoneState():

Awareness.getSnapshotClient(this).getHeadphoneState()
    .addOnSuccessListener(new OnSuccessListener<HeadphoneStateResponse>() {
        @Override
        public void onSuccess(HeadphoneStateResponse headphoneStateResponse) {
            HeadphoneState headphoneState = headphoneStateResponse.getHeadphoneState();
            boolean pluggedIn = headphoneState.getState() == HeadphoneState.PLUGGED_IN;
            String stateStr =
                "Headphones are " + (pluggedIn ? "plugged in" : "unplugged");
            mLogFragment.getLogView().println(stateStr);
        }
    })
    .addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            Log.e(TAG, "Could not get headphone state: " + e);
        }
    });

Dapatkan lokasi

Anda bisa mendapatkan lokasi pengguna saat ini (garis lintang-bujur) dengan panggilan ke getLocation(), yang menampilkan LocationResponse. Selanjutnya, Anda dapat memanggil LocationResponse.getLocation() untuk mendapatkan Location dengan data lokasi saat ini.

Metode getLocation() memerlukan izin android.permission.ACCESS_FINE_LOCATION. Tambahkan izin ini ke AndroidManifest.xml.

Untuk mendapatkan lokasi saat ini, lakukan langkah-langkah berikut:

  1. Periksa apakah pengguna telah memberikan izin yang diperlukan. Contoh berikut memeriksa apakah izin android.permission.ACCESS_FINE_LOCATION telah diberikan. Jika tidak, pengguna akan dimintai izin.

    
    if (ContextCompat.checkSelfPermission(
                MainActivity.this,
                Manifest.permission.ACCESS_FINE_LOCATION) !=
                PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(
                    MainActivity.this,
                    new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
                    MY_PERMISSION_LOCATION
            );
            return;
        }
    
  2. Panggil getSnapshotClient.getLocation().

  3. Gunakan addOnSuccessListener untuk membuat OnSuccessListener yang dapat memproses LocationResponse.

  4. Panggil getStatus() untuk memastikan hasilnya valid.

  5. Panggil LocationResponse.getLocation() untuk menampilkan Location saat ini.

Contoh berikut menunjukkan cara mendapatkan lokasi saat ini:

Awareness.getSnapshotClient(this).getLocation()
    .addOnSuccessListener(new OnSuccessListener<LocationResponse>() {
        @Override
        public void onSuccess(LocationResponse locationResponse) {
            Location loc = locationResponse.getLocationResult();
        }
    })