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 Mulai. Untuk mengetahui detail 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 menggunakan ini untuk mendapatkan banyak aspek aktivitas pengguna saat ini. Contoh:

Contoh kode berikut menggunakan getMostProbableActivity() untuk mendapatkan aktivitas terdeteksi yang paling mungkin, 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 terdekat

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

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 Anda. Untuk informasi selengkapnya, lihat Pendaftaran dan Kunci API dan Mulai.

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 diminta untuk memberikan 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 menampilkan beacon dengan lampiran yang terdaftar dengan namespace dan jenis yang ditentukan. Anda juga dapat memfilter berdasarkan kecocokan byte demi byte pada konten lampiran. Contoh berikut menunjukkan cara membuat filter jenis:

    private static final List<BeaconState.TypeFilter> 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. Kemudian, Anda 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 adalah 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 (lintang-bujur) dengan panggilan ke getLocation(), yang akan menampilkan LocationResponse. Kemudian, 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 diminta untuk memberikan 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();
        }
    })