ส่วนนี้จะแสดงวิธีใช้ Snapshot API เพื่อดูสถานะปัจจุบันของบริบทแต่ละประเภทที่รองรับ ดูข้อมูลเพิ่มเติมได้ที่เริ่มต้นใช้งาน หากต้องการดูรายละเอียดเกี่ยวกับสัญญาณบริบทที่เลิกใช้งานแล้ว ให้เปิดประกาศที่ขยายได้ต่อไปนี้
ดูกิจกรรมปัจจุบัน
หากต้องการรับกิจกรรมปัจจุบันของผู้ใช้ ให้เรียกใช้ getDetectedActivity() ซึ่งจะแสดงผล ActivityRecognitionResult ที่มีข้อมูลเกี่ยวกับกิจกรรมล่าสุดของผู้ใช้
เมธอด getDetectedActivity() ต้องใช้สิทธิ์ com.google.android.gms.permission.ACTIVITY_RECOGNITION เพิ่มสิทธิ์นี้ใน AndroidManifest.xml
หากต้องการดูกิจกรรมปัจจุบันของผู้ใช้ ให้ทำตามขั้นตอนต่อไปนี้
- เรียกใช้
getSnapshotClient()เพื่อสร้างอินสแตนซ์ของSnapshotClient - ใช้
addOnSuccessListenerเพื่อสร้างOnSuccessListenerที่สามารถฟังDetectedActivityResponseได้ - โทรหา
getStatus()เพื่อตรวจสอบว่าผลลัพธ์ถูกต้อง เรียก
DetectedActivityResponse.getActivityRecognitionResult()เพื่อแสดงผลActivityRecognitionResultคุณสามารถใช้ข้อมูลนี้เพื่อดูแง่มุมต่างๆ ของกิจกรรมปัจจุบันของผู้ใช้ เช่น- เรียกใช้
getMostProbableActivity()เพื่อรับเฉพาะกิจกรรมที่มีแนวโน้มมากที่สุด - เรียกใช้
getProbableActivities()เพื่อดูรายการกิจกรรมล่าสุดที่จัดอันดับตามความน่าจะเป็น - เรียกใช้
getActivityConfidence()เพื่อแสดงผลค่า Confidence สำหรับประเภทกิจกรรมที่ระบุ - เรียกใช้
hasResult()เพื่อตรวจหาว่าIntentมีActivityRecognitionResultหรือไม่
- เรียกใช้
ตัวอย่างโค้ดต่อไปนี้ใช้ getMostProbableActivity() เพื่อรับกิจกรรมที่ตรวจพบซึ่งมีแนวโน้มมากที่สุด และเพื่อบันทึกผลลัพธ์ลงในคอนโซล
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");
}
})
รับบีคอนที่อยู่ใกล้เคียง
หากต้องการดูข้อมูลเกี่ยวกับบีคอนที่อยู่ใกล้เคียง ให้เรียกใช้ getBeaconState()
ข้อมูลบีคอนประกอบด้วยเนื้อหา ประเภท และเนมสเปซของไฟล์แนบ
เมธอด getBeaconState() ต้องใช้สิทธิ์ android.permission.ACCESS_FINE_LOCATION เพิ่มสิทธิ์นี้ใน AndroidManifest.xml
นอกจากนี้ คุณต้องเปิดใช้งาน Nearby Messages API สำหรับโปรเจ็กต์ Google Developers Console ด้วย ดูข้อมูลเพิ่มเติมได้ที่การลงชื่อสมัครใช้และคีย์ API และเริ่มต้นใช้งาน
หากต้องการดูข้อมูลเกี่ยวกับบีคอนที่อยู่ใกล้เคียง ให้ทำตามขั้นตอนต่อไปนี้
ตรวจสอบว่าผู้ใช้ได้ให้สิทธิ์ที่จำเป็นแล้วหรือไม่ ตัวอย่างต่อไปนี้จะตรวจสอบว่ามีการให้สิทธิ์
android.permission.ACCESS_FINE_LOCATIONหรือไม่ หากไม่ ระบบจะแจ้งให้ผู้ใช้ให้ความยินยอม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; }กำหนด
BeaconState.TypeFilterซึ่งจะแสดงผลเฉพาะบีคอนที่มีไฟล์แนบที่ลงทะเบียนกับเนมสเปซและประเภทที่ระบุ นอกจากนี้ คุณยังกรองตามการจับคู่แบบไบต์ต่อไบต์ในเนื้อหาไฟล์แนบได้ด้วย ตัวอย่างต่อไปนี้แสดงวิธีสร้างตัวกรองประเภท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"));ใช้
addOnSuccessListenerเพื่อสร้างOnSuccessListenerที่สามารถฟังBeaconStateResponseได้โทรหา
getStatus()เพื่อตรวจสอบว่าผลลัพธ์ถูกต้องเรียกใช้
BeaconStateResponse.getBeaconState()เพื่อแสดงสถานะบีคอนโทร
BeaconState.getBeaconInfo()เพื่อรับBeaconState.BeaconInfo
ตัวอย่างต่อไปนี้แสดงวิธีรับข้อมูลบีคอน
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();
}
})
ดูสถานะหูฟัง
หากต้องการตรวจจับว่ามีการเสียบหูฟังเข้ากับอุปกรณ์หรือไม่ ให้เรียกใช้ getHeadphoneState() ซึ่งจะสร้างสถานะการตรวจจับ HeadphoneStateResponse โดยตั้งค่า OnSuccessListener เป็นตรวจจับ
จากนั้นคุณสามารถโทรหา getHeadphoneState() เพื่อรับ HeadphoneState
หากต้องการดูสถานะปัจจุบันของหูฟัง ให้ทำตามขั้นตอนต่อไปนี้
- โทรหา
getSnapshotClient.getHeadphoneState() - ใช้
addOnSuccessListenerเพื่อสร้างOnSuccessListenerที่สามารถฟังHeadphoneStateResponseได้ - โทรหา
getStatus()เพื่อตรวจสอบว่าผลลัพธ์ถูกต้อง - เมื่อดำเนินการสำเร็จ ให้เรียกใช้
HeadphoneStateResponse.getHeadphoneState()เพื่อแสดงสถานะของหูฟัง ค่านี้เป็นPLUGGED_INหรือUNPLUGGED
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีใช้ 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);
}
});
รับตำแหน่งที่ตั้ง
คุณสามารถดูตำแหน่งปัจจุบันของผู้ใช้ (ละติจูด-ลองจิจูด) ได้ด้วยการเรียกใช้ getLocation() ซึ่งจะแสดงผลเป็น LocationResponse
จากนั้นคุณสามารถเรียกใช้ LocationResponse.getLocation() เพื่อรับ Location พร้อมข้อมูลตำแหน่งปัจจุบัน
เมธอด getLocation() ต้องใช้สิทธิ์ android.permission.ACCESS_FINE_LOCATION เพิ่มสิทธิ์นี้ใน AndroidManifest.xml
หากต้องการดูตำแหน่งปัจจุบัน ให้ทำตามขั้นตอนต่อไปนี้
ตรวจสอบว่าผู้ใช้ได้ให้สิทธิ์ที่จำเป็นแล้วหรือไม่ ตัวอย่างต่อไปนี้จะตรวจสอบว่าได้รับสิทธิ์
android.permission.ACCESS_FINE_LOCATIONแล้วหรือไม่ หากไม่ ระบบจะแจ้งให้ผู้ใช้ให้ความยินยอม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; }ใช้
addOnSuccessListenerเพื่อสร้างOnSuccessListenerที่สามารถฟังLocationResponseได้โทรหา
getStatus()เพื่อตรวจสอบว่าผลลัพธ์ถูกต้องเรียก
LocationResponse.getLocation()เพื่อแสดงLocationปัจจุบัน
ตัวอย่างต่อไปนี้แสดงวิธีรับตำแหน่งปัจจุบัน
Awareness.getSnapshotClient(this).getLocation()
.addOnSuccessListener(new OnSuccessListener<LocationResponse>() {
@Override
public void onSuccess(LocationResponse locationResponse) {
Location loc = locationResponse.getLocationResult();
}
})