ব্যবহারকারী কখন হাঁটা, বাইক চালানো বা গাড়ি চালানোর মতো কোনও নির্দিষ্ট অ্যাক্টিভিটি শুরু বা বন্ধ করেন তা শনাক্ত করার জন্য আপনার অ্যাপ ডিজাইন করার প্রয়োজন হতে পারে। যেমন, কোনও ব্যবহারকারী গাড়ি চালানো শুরু করলে, মাইলেজ ট্র্যাকিং অ্যাপ মাইল ট্র্যাক করা শুরু করতে পারে অথবা কোনও মেসেজিং অ্যাপ ব্যবহারকারী গাড়ি চালানো বন্ধ না করা পর্যন্ত সব কথোপকথন মিউট করতে পারে।
ব্যবহারকারীর অ্যাক্টিভিটিতে পরিবর্তন শনাক্ত করতে Activity Recognition Transition API ব্যবহার করা যেতে পারে। আপনার অ্যাপ আগ্রহের অ্যাক্টিভিটিতে ট্রানজিশন সাবস্ক্রাইব করে এবং API শুধুমাত্র প্রয়োজন হলেই আপনার অ্যাপকে বিজ্ঞপ্তি পাঠায়। এই পৃষ্ঠায় দেখানো হয়েছে যে কীভাবে অ্যাক্টিভিটি শনাক্তকরণ ট্রানজিশন API ব্যবহার করতে হয়, যাকে সংক্ষেপে ট্রানজিশন API-ও বলা হয়।
আপনার প্রোজেক্ট সেট-আপ করুন
আপনার অ্যাপে ট্রানজিশন API ব্যবহার করতে, আপনাকে অবশ্যই
Google লোকেশন এবং অ্যাক্টিভিটি শনাক্তকরণ API ভার্সন ১২.০.০ বা তার পরবর্তী ভার্সনের উপর নির্ভরতা ঘোষণা করতে হবে এবং
অ্যাপ ম্যানিফেস্টে com.google.android.gms.permission.ACTIVITY_RECOGNITION অনুমতি
নির্দিষ্ট করতে হবে।
- API-তে ডিপেন্ডেন্সি ঘোষণা করতে, Google Maven রিপোজিটরিতে একটি রেফারেন্স যোগ করুন এবং আপনার অ্যাপের
build.gradleফাইলের ডিপেন্ডেন্সি বিভাগেcom.google.android.gms:play-services-location:12.0.0-এ একটি ইমপ্লিমেন্টেশন এন্ট্রি যোগ করুন। আরও তথ্যের জন্য, Google Play পরিষেবা সেট-আপ করুন নিবন্ধটি দেখুন। com.google.android.gms.permission.ACTIVITY_RECOGNITIONঅনুমতি নির্দিষ্ট করতে, অ্যাপ ম্যানিফেস্টে একটি<uses-permission>এলিমেন্ট যোগ করুন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapp"> <uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" /> … </manifest>
অ্যাক্টিভিটি ট্রানজিশন আপডেটের জন্য রেজিস্টার করুন
অ্যাক্টিভিটি ট্রানজিশন সম্পর্কে বিজ্ঞপ্তি পাওয়া শুরু করতে, আপনাকে নিম্নলিখিতগুলি প্রয়োগ করতে হবে:
- একটি
ActivityTransitionRequestঅবজেক্ট যা অ্যাক্টিভিটি ও ট্রানজিশনের ধরন নির্দিষ্ট করে। PendingIntentকলব্যাক যেখানে আপনার অ্যাপ বিজ্ঞপ্তি রিসিভ করে। আরও তথ্যের জন্য, পেন্ডিং ইনটেন্ট ব্যবহার করা দেখুন।
ActivityTransitionRequest
অবজেক্ট তৈরি করতে, আপনাকে অবশ্যই
ActivityTransition
অবজেক্টের একটি তালিকা তৈরি করতে হবে, যা আপনি যে ট্রানজিশন সম্পর্কে বিজ্ঞপ্তি পেতে চান তা দেখায়। ActivityTransition
অবজেক্টে নিম্নলিখিত ডেটা অন্তর্ভুক্ত থাকে:
- অ্যাক্টিভিটির ধরন, যা
DetectedActivityক্লাস দ্বারা দেখানো হয়। Transition API নিম্নলিখিত অ্যাক্টিভিটিগুলি সাপোর্ট করে: - ট্রানজিশনের ধরন
ACTIVITY_TRANSITION_ENTERবাACTIVITY_TRANSITION_EXIT। আরও তথ্যের জন্য,ActivityTransitionক্লাস দেখুন।
নিম্নলিখিত কোড থেকে জানা যায় যে কীভাবে ActivityTransition অবজেক্টের তালিকা তৈরি করতে হয়:
Kotlin
val transitions = mutableListOf<ActivityTransition>() transitions += ActivityTransition.Builder() .setActivityType(DetectedActivity.IN_VEHICLE) .setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_ENTER) .build() transitions += ActivityTransition.Builder() .setActivityType(DetectedActivity.IN_VEHICLE) .setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_EXIT) .build() transitions += ActivityTransition.Builder() .setActivityType(DetectedActivity.WALKING) .setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_EXIT) .build()
জাভা
List<ActivityTransition> transitions = new ArrayList<>(); transitions.add( new ActivityTransition.Builder() .setActivityType(DetectedActivity.IN_VEHICLE) .setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_ENTER) .build()); transitions.add( new ActivityTransition.Builder() .setActivityType(DetectedActivity.IN_VEHICLE) .setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_EXIT) .build()); transitions.add( new ActivityTransition.Builder() .setActivityType(DetectedActivity.WALKING) .setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_EXIT) .build());
আপনি ActivityTransitionRequest ক্লাসে ActivityTransitions-এর তালিকা পাস করে
ActivityTransitionRequest
অবজেক্ট তৈরি করতে পারেন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
Kotlin
val request = ActivityTransitionRequest(transitions)
জাভা
ActivityTransitionRequest request = new ActivityTransitionRequest(transitions);
আপনি
ActivityTransitionRequest
-এর ইনস্ট্যান্স এবং আপনার PendingIntent অবজেক্ট
requestActivityTransitionUpdates()
মেথডে পাস করে অ্যাক্টিভিটি ট্রানজিশন সংক্রান্ত আপডেটের জন্য রেজিস্টার করতে পারবেন। requestActivityTransitionUpdates() পদ্ধতিটি একটি
Task
অবজেক্ট রিটার্ন করে যা আপনি সফল বা ব্যর্থতার জন্য চেক করতে পারেন, যেমনটি নিম্নলিখিত কোড
উদাহরণে দেখানো হয়েছে:
Kotlin
// myPendingIntent is the instance of PendingIntent where the app receives callbacks. val task = ActivityRecognition.getClient(context) .requestActivityTransitionUpdates(request, myPendingIntent) task.addOnSuccessListener { // Handle success } task.addOnFailureListener { e: Exception -> // Handle error }
জাভা
// myPendingIntent is the instance of PendingIntent where the app receives callbacks. Task<Void> task = ActivityRecognition.getClient(context) .requestActivityTransitionUpdates(request, myPendingIntent); task.addOnSuccessListener( new OnSuccessListener<Void>() { @Override public void onSuccess(Void result) { // Handle success } } ); task.addOnFailureListener( new OnFailureListener() { @Override public void onFailure(Exception e) { // Handle error } } );
অ্যাক্টিভিটি ট্রানজিশন আপডেটের জন্য সফলভাবে রেজিস্টার করার পরে, আপনার অ্যাপ
রেজিস্টার করা PendingIntent-এ বিজ্ঞপ্তি পায়।
অ্যাক্টিভিটি ট্রানজিশন ইভেন্ট প্রসেস করুন
অনুরোধ করা অ্যাক্টিভিটি ট্রানজিশন হলে, আপনার অ্যাপ Intent কলব্যাক পায়। Intent থেকে একটি
ActivityTransitionResult
অবজেক্ট এক্সট্র্যাক্ট করা যেতে পারে, যার মধ্যে
ActivityTransitionEvent
অবজেক্টের একটি তালিকা অন্তর্ভুক্ত থাকে। ইভেন্টগুলি কালানুক্রমিক ক্রমে সাজানো হয়, উদাহরণস্বরূপ, যদি কোনও অ্যাপ
ACTIVITY_TRANSITION_ENTER
এবং
ACTIVITY_TRANSITION_EXIT
ট্রানজিশনে
IN_VEHICLE
অ্যাক্টিভিটির ধরনের জন্য অনুরোধ করে, তাহলে ব্যবহারকারী
ড্রাইভিং শুরু করলে এটি একটি ActivityTransitionEvent অবজেক্ট পায় এবং ব্যবহারকারী অন্য কোনও অ্যাক্টিভিটিতে ট্রানজিশন করলে আরেকটি অবজেক্ট পায়।
আপনি BroadcastReceiver-এর সাবক্লাস তৈরি করে এবং অ্যাক্টিভিটি ট্রানজিশন ইভেন্টের তালিকা পেতে onReceive() পদ্ধতি প্রয়োগ করে আপনার কলব্যাক প্রয়োগ করতে পারেন। আরও তথ্যের জন্য, ব্রডকাস্ট দেখুন। onReceive() পদ্ধতি কীভাবে প্রয়োগ করতে হয়
তা নিম্নলিখিত উদাহরণ থেকে দেখুন:
Kotlin
override fun onReceive(context: Context, intent: Intent) { if (ActivityTransitionResult.hasResult(intent)) { val result = ActivityTransitionResult.extractResult(intent)!! for (event in result.transitionEvents) { // chronological sequence of events.... } } }
জাভা
@Override public void onReceive(Context context, Intent intent) { if (ActivityTransitionResult.hasResult(intent)) { ActivityTransitionResult result = ActivityTransitionResult.extractResult(intent); for (ActivityTransitionEvent event : result.getTransitionEvents()) { // chronological sequence of events.... } } }
অ্যাক্টিভিটি ট্রানজিশন আপডেট থেকে রেজিস্টার বাতিল করুন
আপনি
ActivityRecognitionClient-এর
removeActivityTransitionUpdates()
মেথড কল করে এবং প্যারামিটার হিসেবে আপনার PendingIntent অবজেক্ট পাস করে অ্যাক্টিভিটি ট্রানজিশন আপডেট থেকে ডিরেজিস্টার করতে পারবেন, যেমনটি
নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
Kotlin
// myPendingIntent is the instance of PendingIntent where the app receives callbacks. val task = ActivityRecognition.getClient(context) .removeActivityTransitionUpdates(myPendingIntent) task.addOnSuccessListener { myPendingIntent.cancel() } task.addOnFailureListener { e: Exception -> Log.e("MYCOMPONENT", e.message) }
জাভা
// myPendingIntent is the instance of PendingIntent where the app receives callbacks. Task<Void> task = ActivityRecognition.getClient(context) .removeActivityTransitionUpdates(myPendingIntent); task.addOnSuccessListener( new OnSuccessListener<Void>() { @Override public void onSuccess(Void result) { myPendingIntent.cancel(); } } ); task.addOnFailureListener( new OnFailureListener() { @Override public void onFailure(Exception e) { Log.e("MYCOMPONENT", e.getMessage()); } } );
অতিরিক্ত রিসোর্স
ব্যবহারকারীর অ্যাক্টিভিটি শনাক্তকরণ API-এর ব্যবহার সম্পর্কে আরও জানতে, নিম্নলিখিত তথ্য দেখুন:
নমুনা
ব্যবহারকারীর অ্যাক্টিভিটি শনাক্তকরণের জন্য পেশাদার পদ্ধতি দেখানোর স্যাম্পেল।