این بخش نحوه استفاده از 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()را فراخوانی کنید تا مقدار اطمینان را برای نوع فعالیت دادهشده برگرداند.- برای تشخیص اینکه آیا
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 اضافه کنید.
علاوهبراین، باید 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()تماس بگیرید.برای برگرداندن
Locationفعلی، باLocationResponse.getLocation()تماس بگیرید.
مثال زیر نحوه دریافت مکان فعلی را نشان میدهد:
Awareness.getSnapshotClient(this).getLocation()
.addOnSuccessListener(new OnSuccessListener<LocationResponse>() {
@Override
public void onSuccess(LocationResponse locationResponse) {
Location loc = locationResponse.getLocationResult();
}
})