این بخش نحوه استفاده از Snapshot API را برای به دست آوردن وضعیت فعلی برای هر یک از انواع زمینه های پشتیبانی شده نشان می دهد. برای اطلاعات بیشتر، به شروع مراجعه کنید. برای جزئیات بیشتر درباره سیگنالهای متنی منسوخ، اعلان قابل توسعه زیر را باز کنید:
فعالیت فعلی را دریافت کنید
برای دریافت فعالیت فعلی کاربر، getDetectedActivity() را فراخوانی کنید، که یک ActivityRecognitionResult که حاوی اطلاعاتی درباره آخرین فعالیت های کاربر است را برمی گرداند.
متد getDetectedActivity() به مجوز com.google.android.gms.permission.ACTIVITY_RECOGNITION نیاز دارد. این مجوز را به AndroidManifest.xml اضافه کنید.
برای دریافت فعالیت فعلی کاربر، مراحل زیر را انجام دهید:
- برای ایجاد یک نمونه از
SnapshotClientgetSnapshotClient()را فراخوانی کنید. - از
addOnSuccessListenerبرای ایجادOnSuccessListenerاستفاده کنید که بتواند بهDetectedActivityResponseگوش دهد. - برای اطمینان از معتبر بودن نتیجه
getStatus()را فراخوانی کنید. برای برگرداندن
ActivityRecognitionResultDetectedActivityResponse.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() تماس بگیرید. داده های 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()را فراخوانی کنید.برای برگرداندن وضعیت beacon
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 برای شناسایی ایجاد می کند. سپس می توانید برای دریافت HeadphoneState getHeadphoneState() فراخوانی کنید.
برای دریافت وضعیت فعلی هدفون، مراحل زیر را انجام دهید:
- با
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();
}
})