این بخش نحوه استفاده از 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()
تماس بگیرید. داده های 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
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
برای شناسایی ایجاد می کند. سپس می توانید برای دریافت 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();
}
})