স্ন্যাপশট ডেটা পান

এই বিভাগটি দেখায় যে কীভাবে Snapshot API ব্যবহার করে প্রতিটি সমর্থিত প্রসঙ্গ প্রকারের বর্তমান অবস্থা জানতে হবে। আরও তথ্যের জন্য, শুরু করুন দেখুন। অবচিত প্রসঙ্গগত সংকেত সম্পর্কে বিস্তারিত জানার জন্য, নিম্নলিখিত প্রসারণযোগ্য বিজ্ঞপ্তিটি খুলুন:

বর্তমান কার্যকলাপ পান

ব্যবহারকারীর বর্তমান কার্যকলাপ জানতে, getDetectedActivity() কল করুন, যা একটি ActivityRecognitionResult প্রদান করে যাতে ব্যবহারকারীর সাম্প্রতিক কার্যকলাপ সম্পর্কে তথ্য থাকে।

getDetectedActivity() পদ্ধতির জন্য com.google.android.gms.permission.ACTIVITY_RECOGNITION অনুমতি প্রয়োজন। এই অনুমতিটি AndroidManifest.xml এ যোগ করুন।

ব্যবহারকারীর বর্তমান কার্যকলাপ পেতে, নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:

  1. SnapshotClient এর একটি ইনস্ট্যান্স তৈরি করতে getSnapshotClient() এ কল করুন।
  2. addOnSuccessListener ব্যবহার করে একটি OnSuccessListener তৈরি করুন যা একটি 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 সক্রিয় করতে হবে। আরও তথ্যের জন্য, Signup and API Keys এবং Get started দেখুন।

কাছাকাছি বীকন সম্পর্কে তথ্য পেতে, নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:

  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.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() কল করুন, যা OnSuccessListener সনাক্ত করার জন্য সেট করে একটি HeadphoneStateResponse সনাক্তকরণ অবস্থা তৈরি করে। তারপর আপনি HeadphoneState পেতে getHeadphoneState() কল করতে পারেন।

বর্তমান হেডফোন অবস্থা পেতে, নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:

  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() এ কল করে ব্যবহারকারীর বর্তমান অবস্থান (latitude-longitude) পেতে পারেন, যা একটি 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. বর্তমান Location ফেরত দিতে LocationResponse.getLocation() এ কল করুন।

নিচের উদাহরণটি বর্তমান অবস্থান কীভাবে পেতে হয় তা দেখায়:

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