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 diperluas 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:
- Panggil
getSnapshotClient()untuk membuat instanceSnapshotClient. - Gunakan
addOnSuccessListeneruntuk membuatOnSuccessListeneryang dapat memprosesDetectedActivityResponse. - Panggil
getStatus()untuk memastikan hasilnya valid. Panggil
DetectedActivityResponse.getActivityRecognitionResult()untuk menampilkanActivityRecognitionResult. Anda dapat menggunakannya untuk mendapatkan banyak aspek aktivitas pengguna saat ini. Contoh:- Panggil
getMostProbableActivity()untuk mendapatkan aktivitas yang paling mungkin saja. - Panggil
getProbableActivities()untuk mendapatkan daftar aktivitas terbaru yang diurutkan berdasarkan probabilitas. - Panggil
getActivityConfidence()untuk menampilkan nilai keyakinan untuk jenis aktivitas tertentu. - Panggil
hasResult()untuk mendeteksi apakahIntentberisiActivityRecognitionResult.
- Panggil
Contoh kode berikut menggunakan getMostProbableActivity()
untuk mendapatkan aktivitas terdeteksi yang paling mungkin, dan untuk 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 terdekat, panggil getBeaconState().
Data beacon terdiri dari konten, jenis, dan namespace 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 terdekat, lakukan langkah-langkah berikut:
Periksa apakah pengguna telah memberikan izin yang diperlukan. Contoh berikut memeriksa apakah izin
android.permission.ACCESS_FINE_LOCATIONdiberikan. 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; }Tentukan
BeaconState.TypeFilter. Tindakan ini hanya akan menampilkan beacon dengan lampiran yang terdaftar dengan namespace dan jenis yang ditentukan. Anda juga dapat memfilter berdasarkan kecocokan byte per 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"));Panggil
getSnapshotClient.getBeaconState().Gunakan
addOnSuccessListeneruntuk membuatOnSuccessListeneryang dapat memprosesBeaconStateResponse.Panggil
getStatus()untuk memastikan hasilnya valid.Panggil
BeaconStateResponse.getBeaconState()untuk menampilkan status beacon.Panggil
BeaconState.getBeaconInfo()untuk mendapatkanBeaconState.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 terhubung ke perangkat, panggil getHeadphoneState(),
yang membuat status deteksi HeadphoneStateResponse
dengan OnSuccessListener yang ditetapkan untuk mendeteksi.
Kemudian, Anda dapat memanggil getHeadphoneState() untuk mendapatkan HeadphoneState.
Untuk mendapatkan status headphone saat ini, lakukan langkah-langkah berikut:
- Panggil
getSnapshotClient.getHeadphoneState(). - Gunakan
addOnSuccessListeneruntuk membuatOnSuccessListeneryang dapat memprosesHeadphoneStateResponse. - Panggil
getStatus()untuk memastikan hasilnya valid. - Jika berhasil, panggil
HeadphoneStateResponse.getHeadphoneState()untuk menampilkan status headphone. Nilai ini adalahPLUGGED_INatauUNPLUGGED.
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);
}
});
Mendapatkan lokasi
Anda bisa mendapatkan lokasi pengguna saat ini (lintang-bujur) dengan panggilan ke getLocation(), yang 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:
Periksa apakah pengguna telah memberikan izin yang diperlukan. Contoh berikut memeriksa apakah izin
android.permission.ACCESS_FINE_LOCATIONtelah 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; }Panggil
getSnapshotClient.getLocation().Gunakan
addOnSuccessListeneruntuk membuatOnSuccessListeneryang dapat memprosesLocationResponse.Panggil
getStatus()untuk memastikan hasilnya valid.Panggil
LocationResponse.getLocation()untuk menampilkanLocationsaat 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();
}
})