يوضّح هذا القسم طريقة استخدام 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()
.
تتألف بيانات الإشارات من المحتوى والنوع ومساحة الاسم لأي مرفقات.
تتطلب طريقة getBeaconState()
الإذن android.permission.ACCESS_FINE_LOCATION
. أضِف هذا الإذن إلى AndroidManifest.xml
.
بالإضافة إلى ذلك، يجب تفعيل واجهة برمجة التطبيقات لميزة "الرسائل المجاورة" لمشروع Google Play 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
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();
}
})