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

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

    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.

يوضّح المثال التالي كيفية الحصول على معلومات ال 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.

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

  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();
        }
    })