ส่วนนี้จะแสดงวิธีใช้ 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 Key
และ เริ่มต้นใช้งาน
หากต้องการรับข้อมูลเกี่ยวกับบีคอนที่อยู่ใกล้เคียง ให้ทำตามขั้นตอนต่อไปนี้
ตรวจสอบว่าผู้ใช้ให้สิทธิ์ที่จำเป็นแล้วหรือไม่ ตัวอย่างต่อไปนี้จะตรวจสอบว่าได้รับสิทธิ์
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();
}
})