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:
- Panggil
getSnapshotClient()
untuk membuat instanceSnapshotClient
. - Gunakan
addOnSuccessListener
untuk membuatOnSuccessListener
yang dapat memprosesDetectedActivityResponse
. - Panggil
getStatus()
untuk memastikan hasilnya valid. Panggil
DetectedActivityResponse.getActivityRecognitionResult()
untuk menampilkanActivityRecognitionResult
. Anda dapat menggunakannya untuk mendapatkan berbagai aspek aktivitas pengguna saat ini. Contoh:- Panggil
getMostProbableActivity()
untuk hanya mendapatkan aktivitas yang paling mungkin. - 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 apakahIntent
berisiActivityRecognitionResult
.
- Panggil
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:
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; }
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")); Panggil
getSnapshotClient.getBeaconState()
.Gunakan
addOnSuccessListener
untuk membuatOnSuccessListener
yang 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 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:
- Panggil
getSnapshotClient.getHeadphoneState()
. - Gunakan
addOnSuccessListener
untuk membuatOnSuccessListener
yang dapat memprosesHeadphoneStateResponse
. - Panggil
getStatus()
untuk memastikan hasilnya valid. - Jika berhasil, panggil
HeadphoneStateResponse.getHeadphoneState()
untuk menampilkan status headphone. Nilai ini dapat berupaPLUGGED_IN
atauUNPLUGGED
.
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:
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; }
Panggil
getSnapshotClient.getLocation()
.Gunakan
addOnSuccessListener
untuk membuatOnSuccessListener
yang dapat memprosesLocationResponse
.Panggil
getStatus()
untuk memastikan hasilnya valid.Panggil
LocationResponse.getLocation()
untuk menampilkanLocation
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();
}
})