בקטע הזה נסביר איך להשתמש ב-Snapshot API כדי לראות את המצב הנוכחי של כל אחד מסוגי ההקשר הנתמכים. מידע נוסף זמין במאמר תחילת העבודה. לפרטים על אותות תלויי הקשר שהוצאו משימוש, פתחו את ההודעה הבאה הניתנת להרחבה:
קבלת הפעילות הנוכחית
כדי לקבל את הפעילות הנוכחית של המשתמש, מתקשרים אל getDetectedActivity()
שמחזיר ActivityRecognitionResult
מידע על הפעילויות האחרונות של המשתמש.
לשיטה getDetectedActivity()
נדרשת ההרשאה com.google.android.gms.permission.ACTIVITY_RECOGNITION
. מוסיפים את ההרשאה הזו אל AndroidManifest.xml
.
כדי לקבל מידע על הפעילות הנוכחית של המשתמש, מבצעים את הפעולות הבאות:
- כדי ליצור מכונה של
SnapshotClient
, צריך להפעיל את הפונקציהgetSnapshotClient()
. - כדאי להשתמש ב-
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");
}
})
קבלת איתותי Bluetooth בקרבת מקום
כדי לקבל מידע על משואות רשת בקרבת מקום, אפשר להתקשר למספר getBeaconState()
.
נתוני Beacon כוללים את התוכן, הסוג ומרחב השמות של קבצים מצורפים.
לשיטה getBeaconState()
נדרשת ההרשאה android.permission.ACCESS_FINE_LOCATION
. הוספת ההרשאה הזו אל AndroidManifest.xml
.
בנוסף, צריך להפעיל את ממשק ה-API של Messages בקרבת מקום לפרויקט ב-Google Developers Console. מידע נוסף זמין במאמרים הרשמה ומפתחות API ותחילת העבודה.
כדי לקבל מידע על איתות Bluetooth בקרבת מקום, יש לפעול לפי השלבים הבאים:
בודקים אם המשתמש נתן את ההרשאות הנדרשות. בדוגמה הבאה תוכלו לראות אם ההרשאה
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
. הפונקציה הזו מחזירה רק איתותי Bluetooth עם קבצים מצורפים שרשומים במרחב השמות ובסוג שצוינו. תוכלו גם לסנן על סמך התאמה של בייט לבייט בתוכן של הקובץ המצורף. הדוגמה הבאה ממחישה איך ליצור מסנן מסוג: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")); התקשרות אל
getSnapshotClient.getBeaconState()
כדאי להשתמש ב-
addOnSuccessListener
כדי ליצורOnSuccessListener
שיושמע ל-BeaconStateResponse
.מבצעים קריאה ל-
getStatus()
כדי לוודא שהתוצאה תקינה.קוראים ל-
BeaconStateResponse.getBeaconState()
כדי להחזיר את המצב של איתות Bluetooth.התקשרו
BeaconState.getBeaconInfo()
ומקבליםBeaconState.BeaconInfo
.
הדוגמה הבאה מראה איך לקבל מידע על איתות Bluetooth:
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; }
התקשרות אל
getSnapshotClient.getLocation()
כדאי להשתמש ב-
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();
}
})