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

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

    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. BeaconStateResponse-এর জন্য শুনতে পারে এমন একটি OnSuccessListener তৈরি করতে addOnSuccessListener ব্যবহার করুন।

  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. HeadphoneStateResponse-এর জন্য শুনতে পারে এমন একটি OnSuccessListener তৈরি করতে addOnSuccessListener ব্যবহার করুন।
  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. LocationResponse-এর জন্য শুনতে পারে এমন একটি OnSuccessListener তৈরি করতে addOnSuccessListener ব্যবহার করুন।

  4. ফলাফল সঠিক কিনা তা নিশ্চিত করতে getStatus()-কে কল করুন।

  5. বর্তমান Location ফেরত পেতে LocationResponse.getLocation() কল করুন।

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

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