स्नैपशॉट का डेटा पाएं

इस सेक्शन में, Snapshot API का इस्तेमाल करके, सहायता पाने वाले हर कॉन्टेक्स्ट टाइप की मौजूदा स्थिति पाने का तरीका बताया गया है. ज़्यादा जानकारी के लिए, शुरू करें लेख पढ़ें. कॉन्टेक्स्ट के हिसाब से काम न करने वाले सिग्नल के बारे में ज़्यादा जानने के लिए, इस सूचना को बड़ा करके देखें:

मौजूदा गतिविधि की जानकारी पाना

उपयोगकर्ता की मौजूदा गतिविधि की जानकारी पाने के लिए, getDetectedActivity() को कॉल करें. इससे आपको ActivityRecognitionResult मिलेगा. इसमें उपयोगकर्ता की हाल ही की गतिविधियों के बारे में जानकारी होती है.

getDetectedActivity() तरीके के लिए, com.google.android.gms.permission.ACTIVITY_RECOGNITION अनुमति ज़रूरी है. AndroidManifest.xml में यह अनुमति जोड़ें.

उपयोगकर्ता की मौजूदा गतिविधि की जानकारी पाने के लिए, यह तरीका अपनाएं:

  1. SnapshotClient का इंस्टेंस बनाने के लिए, कॉल करें getSnapshotClient().
  2. OnSuccessListener बनाने के लिए, addOnSuccessListener का इस्तेमाल करें. यह DetectedActivityResponse को सुन सकता है.
  3. नतीजे की पुष्टि करने के लिए, getStatus() पर कॉल करें.
  4. ActivityRecognitionResult को वापस करने के लिए, DetectedActivityResponse.getActivityRecognitionResult() पर कॉल करें. इसका इस्तेमाल करके, उपयोगकर्ता की मौजूदा गतिविधि के बारे में कई तरह की जानकारी पाई जा सकती है. उदाहरण के लिए:

    • सिर्फ़ सबसे ज़्यादा संभावित गतिविधि पाने के लिए, 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 Developers Console प्रोजेक्ट के लिए Nearby Messages API चालू करना होगा. ज़्यादा जानकारी के लिए, साइन अप करना और एपीआई कुंजियां और शुरू करना लेख पढ़ें.

आस-पास मौजूद बीकन के बारे में जानकारी पाने के लिए, यह तरीका अपनाएं:

  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. OnSuccessListener बनाने के लिए, addOnSuccessListener का इस्तेमाल करें. यह BeaconStateResponse को सुन सकता है.

  5. नतीजे की पुष्टि करने के लिए, getStatus() पर कॉल करें.

  6. बीकन की स्थिति वापस पाने के लिए, BeaconStateResponse.getBeaconState() को कॉल करें.

  7. BeaconState.BeaconInfo पाने के लिए, BeaconState.getBeaconInfo() पर कॉल करें.

यहां दिए गए उदाहरण में, बीकन की जानकारी पाने का तरीका बताया गया है:

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 को डिटेक्ट पर सेट किया जाता है. इसके बाद, HeadphoneState पाने के लिए, getHeadphoneState() पर कॉल करें.

हेडफ़ोन की मौजूदा स्थिति पाने के लिए, यह तरीका अपनाएं:

  1. getSnapshotClient.getHeadphoneState() पर कॉल करें.
  2. OnSuccessListener बनाने के लिए, addOnSuccessListener का इस्तेमाल करें. यह 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. OnSuccessListener बनाने के लिए, addOnSuccessListener का इस्तेमाल करें. यह LocationResponse को सुन सकता है.

  4. नतीजे की पुष्टि करने के लिए, getStatus() पर कॉल करें.

  5. मौजूदा Location को वापस करने के लिए, LocationResponse.getLocation() पर कॉल करें.

यहां दिए गए उदाहरण में, मौजूदा जगह की जानकारी पाने का तरीका बताया गया है:

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