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

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

वर्तमान गतिविधि पाएं

उपयोगकर्ता की मौजूदा गतिविधि देखने के लिए, 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 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 दिखाता है. इसके बाद, 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();
        }
    })