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

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

বর্তমান অ্যাক্টিভিটি পান

ব্যবহারকারীর বর্তমান অ্যাক্টিভিটি পেতে, getDetectedActivity() কল করুন, যা ActivityRecognitionResult রিটার্ন করে যার মধ্যে ব্যবহারকারীর সবচেয়ে সাম্প্রতিক অ্যাক্টিভিটি সম্পর্কে তথ্য থাকে।

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

ব্যবহারকারীর বর্তমান অ্যাক্টিভিটি পেতে, নিম্নলিখিত ধাপগুলি অনুসরণ করুন:

  1. SnapshotClient-এর ইনস্ট্যান্স তৈরি করতে getSnapshotClient() কল করুন।
  2. DetectedActivityResponse-এর জন্য শুনতে পারে এমন OnSuccessListener তৈরি করতে addOnSuccessListener ব্যবহার করুন।
  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 চালু করতে হবে। আরও তথ্যের জন্য, সাইন-আপ ও 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-এর সংজ্ঞা দাও। এটি শুধুমাত্র সেইসব অ্যাটাচমেন্ট সহ বিকন রিটার্ন করে যেগুলি নির্দিষ্ট নেমস্পেস এবং ধরনের সাথে রেজিস্টার করা আছে। এছাড়াও, অ্যাটাচমেন্ট কন্টেন্টে বাইট-ফর-বাইট ম্যাচ এর ভিত্তিতে ফিল্টার করতে পারবেন। নিম্নলিখিত উদাহরণে দেখানো হয়েছে কীভাবে type filter তৈরি করতে হয়:

    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. HeadphoneStateResponse-এর জন্য শুনতে পারে এমন OnSuccessListener তৈরি করতে addOnSuccessListener ব্যবহার করুন।
  3. ফলাফল সঠিক কিনা তা নিশ্চিত করতে getStatus()-কে কল করুন।
  4. সফল হলে, হেডফোনের স্ট্যাটাস রিটার্ন করতে call 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. বর্তমান Location রিটার্ন করতে LocationResponse.getLocation() কল করুন।

বর্তমান লোকেশন কীভাবে পাবেন তা নিম্নলিখিত উদাহরণ থেকে দেখুন:

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