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

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

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

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

The 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() को कॉल करें.
    • यह पता लगाने के लिए कि किसी Intent में ActivityRecognitionResult है या नहीं, hasResult() को कॉल करें.

यहां दिए गए कोड के उदाहरण में, सबसे संभावित गतिविधि की जानकारी पाने और नतीजे को कंसोल में लॉग करने के लिए, 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 को पता लगाने के लिए सेट किया जाता है. इसके बाद, getHeadphoneState() पाने के लिए, HeadphoneState को कॉल किया जा सकता है.

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

  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` मिलता है. इसके बाद, मौजूदा जगह की जानकारी वाला Location पाने के लिए, LocationResponse.getLocation() को कॉल किया जा सकता है.

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