این بخش نحوه استفاده از Snapshot API را برای دریافت وضعیت فعلی هریک از انواع بافت پشتیبانیشده نشان میدهد. برای اطلاعات بیشتر، به شروع به کار مراجعه کنید. برای جزئیات مربوط به نشانهای زمینهای منسوخشده، اعلان ازهم بازشدنی زیر را باز کنید:
دریافت فعالیت کنونی
برای دریافت فعالیت کنونی کاربر، getDetectedActivity() را فراخوانی کنید که ActivityRecognitionResult
حاوی اطلاعات مربوط به جدیدترین فعالیتهای کاربر را برمیگرداند.
روش getDetectedActivity() به اجازه
com.google.android.gms.permission.ACTIVITY_RECOGNITION نیاز دارد. این
اجازه را به AndroidManifest.xml اضافه کنید.
برای دریافت فعالیت فعلی کاربر، مراحل زیر را انجام دهید:
- برای ایجاد نمونهای از
SnapshotClient، باgetSnapshotClient()تماس بگیرید. - از
addOnSuccessListenerبرای ایجادOnSuccessListenerاستفاده کنید که میتواند بهDetectedActivityResponseگوش دهد. - برای اطمینان از معتبر بودن نتیجه، با
getStatus()تماس بگیرید. برای برگرداندن
ActivityRecognitionResult، باDetectedActivityResponse.getActivityRecognitionResult()تماس بگیرید. میتوانید از این برای دریافت جنبههای زیادی از فعالیت فعلی کاربر استفاده کنید. برای مثال:- برای دریافت فقط محتملترین فعالیت، با
getMostProbableActivity()تماس بگیرید. - برای دریافت فهرستی از فعالیتهای اخیر رتبهبندیشده براساس احتمال، با
getProbableActivities()تماس بگیرید. - برای برگرداندن مقدار اطمینان برای نوع فعالیت معین،
getActivityConfidence()را فراخوانی کنید. - برای تشخیص اینکه آیا
IntentحاویActivityRecognitionResultاست یا نه، باhasResult()تماس بگیرید.
- برای دریافت فقط محتملترین فعالیت، با
مثال کد زیر از 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 اضافه کنید.
علاوهبراین، باید «میانای برنامهسازی کاربردی پیامهای اطراف» را برای پروژه «کنسول توسعهدهندگان Google» خود فعال کنید. برای اطلاعات بیشتر، ثبتنام و کلیدهای 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.BeaconInfo، باBeaconState.getBeaconInfo()تماس بگیرید.
مثال زیر نحوه دریافت اطلاعات فانوس را نشان میدهد:
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()تماس بگیرید.برای برگرداندن
Locationفعلی، باLocationResponse.getLocation()تماس بگیرید.
مثال زیر نحوه دریافت مکان فعلی را نشان میدهد:
Awareness.getSnapshotClient(this).getLocation()
.addOnSuccessListener(new OnSuccessListener<LocationResponse>() {
@Override
public void onSuccess(LocationResponse locationResponse) {
Location loc = locationResponse.getLocationResult();
}
})