يوضّح هذا القسم كيفية استخدام Snapshot API للحصول على الحالة الحالية لكل نوع من أنواع السياقات المتوافقة. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة البدء. للاطّلاع على تفاصيل الإشارات السياقية التي تم إيقافها نهائيًا، افتح الإشعار القابل للتوسيع التالي:
الحصول على النشاط الحالي
للحصول على النشاط الحالي للمستخدم، استدعِ الإجراء getDetectedActivity() الذي يعرض ActivityRecognitionResult
يحتوي على معلومات حول أحدث أنشطة المستخدم.
يتطلّب الإجراء 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");
}
})
الحصول على أجهزة البث القريبة
للحصول على معلومات حول أجهزة البث القريبة beacons، استدعِ getBeaconState().
تتألف بيانات جهاز البث من محتوى أي مرفقات ونوعها ومساحة اسمها.
يتطلّب الإجراء getBeaconState() الإذن android.permission.ACCESS_FINE_LOCATION. أضِف هذا الإذن إلى AndroidManifest.xml.
بالإضافة إلى ذلك، عليك تفعيل Nearby Messages API لمشروعك في Google Developers Console. لمزيد من المعلومات، يُرجى الاطّلاع على مقالتَي الاشتراك ومفاتيح واجهة برمجة التطبيقات
والبدء.
للحصول على معلومات حول أجهزة البث القريبة، اتّبِع الخطوات التالية:
تحقَّق مما إذا كان المستخدم قد منح الأذونات المطلوبة. يتحقّق المثال التالي مما إذا كان الإذن
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"));استخدِم
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()للتأكّد من أنّ النتيجة صالحة.استدعِ
LocationResponse.getLocation()لعرضLocationالحالية.
يوضّح المثال التالي كيفية الحصول على الموقع الجغرافي الحالي:
Awareness.getSnapshotClient(this).getLocation()
.addOnSuccessListener(new OnSuccessListener<LocationResponse>() {
@Override
public void onSuccess(LocationResponse locationResponse) {
Location loc = locationResponse.getLocationResult();
}
})