يوضّح هذا القسم كيفية استخدام 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
. لا يعرض هذا الطلب سوى العلامات التي تحتوي على مرفقات مسجّلة باستخدام اسم النطاق والنوع المحدّدَين. يمكنك أيضًا الفلترة استنادًا إلى مطابقة محتوى المرفق بايتة بايتة. يوضّح المثال التالي كيفية إنشاء فلتر نوع: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
.
يوضّح المثال التالي كيفية الحصول على معلومات ال beacon:
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();
}
})