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

এই বিভাগে দেখানো হয়েছে কীভাবে প্রতিটি সমর্থিত কনটেক্সট টাইপের বর্তমান অবস্থা পেতে স্ন্যাপশট এপিআই ব্যবহার করতে হয়। আরও তথ্যের জন্য, 'Get started ' দেখুন। অপ্রচলিত কনটেক্সচুয়াল সিগন্যালগুলির বিশদ বিবরণের জন্য, নিম্নলিখিত এক্সপ্যান্ডেবল নোটিসটি খুলুন:

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

ব্যবহারকারীর বর্তমান অ্যাক্টিভিটি পেতে, 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 সক্রিয় করতে হবে। আরও তথ্যের জন্য, 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. একটি 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() কল করুন, যা OnSuccessListener detect-এ সেট করে একটি HeadphoneStateResponse ডিটেক্ট স্টেট তৈরি করে। এরপর আপনি 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 রিটার্ন করে। এরপর আপনি বর্তমান অবস্থানের ডেটা সহ একটি Location পেতে LocationResponse.getLocation() কল করতে পারেন।

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