الحصول على بيانات اللقطة

يوضّح هذا القسم كيفية استخدام Snapshot API للحصول على الحالة الحالية لكل نوع من أنواع السياقات المتوافقة. لمزيد من المعلومات، يُرجى الاطّلاع على البدء. للاطّلاع على تفاصيل حول إشارات السياق المتوقّفة نهائيًا، افتح الإشعار القابل للتوسيع التالي:

الحصول على النشاط الحالي

للحصول على نشاط المستخدم الحالي، استدعِ الدالة getDetectedActivity() التي تعرض ActivityRecognitionResult يتضمّن معلومات حول أحدث أنشطة المستخدم.

تتطلّب الطريقة getDetectedActivity() الإذن com.google.android.gms.permission.ACTIVITY_RECOGNITION. أضِف هذا الإذن إلى AndroidManifest.xml.

للحصول على نشاط المستخدم الحالي، اتّبِع الخطوات التالية:

  1. اتّصِل بالرقم getSnapshotClient() لإنشاء مثيل من SnapshotClient.
  2. استخدِم addOnSuccessListener لإنشاء OnSuccessListener يمكنه الاستماع إلى DetectedActivityResponse.
  3. يُرجى الاتصال بالرقم getStatus() للتأكّد من أنّ النتيجة صالحة.
  4. اتّصِل بالرقم DetectedActivityResponse.getActivityRecognitionResult() لإرجاع 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. لمزيد من المعلومات، يُرجى الاطّلاع على الاشتراك ومفاتيح واجهة برمجة التطبيقات والبدء.

للحصول على معلومات عن أجهزة الإرسال القريبة، اتّبِع الخطوات التالية:

  1. تحقَّق ممّا إذا كان المستخدم قد منح الأذونات المطلوبة. يتحقّق المثال التالي مما إذا كان قد تم منح إذن 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;
        }
    
  2. حدِّد 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"));
    
  3. اتّصِل بالرقم getSnapshotClient.getBeaconState().

  4. استخدِم addOnSuccessListener لإنشاء OnSuccessListener يمكنه الاستماع إلى BeaconStateResponse.

  5. يُرجى الاتصال بالرقم getStatus() للتأكّد من أنّ النتيجة صالحة.

  6. استدعِ الدالة BeaconStateResponse.getBeaconState() لإرجاع حالة الإشارة.

  7. اتّصِل بالرقم 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.

للحصول على حالة سماعات الرأس الحالية، اتّبِع الخطوات التالية:

  1. اتّصِل بالرقم getSnapshotClient.getHeadphoneState().
  2. استخدِم addOnSuccessListener لإنشاء OnSuccessListener يمكنه الاستماع إلى HeadphoneStateResponse.
  3. يُرجى الاتصال بالرقم getStatus() للتأكّد من أنّ النتيجة صالحة.
  4. عند النجاح، استدعِ 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.

للحصول على الموقع الجغرافي الحالي، اتّبِع الخطوات التالية:

  1. تحقَّق ممّا إذا كان المستخدم قد منح الأذونات المطلوبة. يتحقّق المثال التالي مما إذا تم منح الإذن 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;
        }
    
  2. اتّصِل بالرقم getSnapshotClient.getLocation().

  3. استخدِم addOnSuccessListener لإنشاء OnSuccessListener يمكنه الاستماع إلى LocationResponse.

  4. يُرجى الاتصال بالرقم getStatus() للتأكّد من أنّ النتيجة صالحة.

  5. اتّصِل بالرقم LocationResponse.getLocation() لإرجاع Location الحالي.

يوضّح المثال التالي كيفية الحصول على الموقع الجغرافي الحالي:

Awareness.getSnapshotClient(this).getLocation()
    .addOnSuccessListener(new OnSuccessListener<LocationResponse>() {
        @Override
        public void onSuccess(LocationResponse locationResponse) {
            Location loc = locationResponse.getLocationResult();
        }
    })