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