يوضّح هذا القسم كيفية استخدام 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");
}
})
الحصول على إشارات البلوتوث القريبة
للحصول على معلومات حول إشارات البلوتوث القريبة، اتّصِل بالرقم getBeaconState()
.
تتألف بيانات Beacon من المحتوى والنوع ومساحة الاسم لأي مرفقات.
تتطلّب الطريقة 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
. لا تعرض هذه الطريقة سوى إشارات Beacon التي تتضمّن مرفقات مسجّلة في مساحة الاسم والنوع المحدّدين. يمكنك أيضًا الفلترة استنادًا إلى تطابق تام في محتوى المرفق. يوضّح المثال التالي كيفية إنشاء فلتر نوع: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()
للتأكّد من أنّ النتيجة صالحة.اتّصِل بالرقم
LocationResponse.getLocation()
لإرجاعLocation
الحالي.
يوضّح المثال التالي كيفية الحصول على الموقع الجغرافي الحالي:
Awareness.getSnapshotClient(this).getLocation()
.addOnSuccessListener(new OnSuccessListener<LocationResponse>() {
@Override
public void onSuccess(LocationResponse locationResponse) {
Location loc = locationResponse.getLocationResult();
}
})