ส่วนนี้จะแสดงวิธีใช้ 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()
เพื่อแสดงผลค่าความเชื่อมั่นสําหรับประเภทกิจกรรมที่ระบุ - เรียกใช้
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();
}
})