בקטע הזה נסביר איך להשתמש ב-Snapshot API כדי לקבל את המצב הנוכחי של כל אחד מסוגי ההקשר הנתמכים. מידע נוסף זמין במאמר איך מתחילים. לפרטים על אותות לפי הקשר שהוצאו משימוש, פותחים את ההודעה הבאה שאפשר להרחיב:
קבלת הפעילות הנוכחית
כדי לקבל את הפעילות הנוכחית של המשתמש, קוראים לפונקציה getDetectedActivity(), שמחזירה את ActivityRecognitionResult
שכולל מידע על הפעילויות האחרונות של המשתמש.
ה-method 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().
נתוני Beacon כוללים את התוכן, הסוג ומרחב השמות של כל הקבצים המצורפים.
ה-method 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
עם נתוני המיקום הנוכחיים.
ה-method 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();
}
})