ส่วนนี้จะแสดงวิธีใช้ 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
นอกจากนี้ คุณต้องเปิดใช้งาน API ข้อความ Nearby สําหรับโปรเจ็กต์ 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
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();
}
})