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