কোনও ব্যবহারকারী কখন হাঁটা, বাইক চালানো বা ড্রাইভিং করার মতো একটি নির্দিষ্ট কার্যকলাপ শুরু করে বা বন্ধ করে তা সনাক্ত করতে আপনার অ্যাপটি ডিজাইন করা প্রয়োজন হতে পারে। উদাহরণস্বরূপ, একটি মাইলেজ ট্র্যাকিং অ্যাপ মাইল ট্র্যাক করা শুরু করতে পারে যখন একজন ব্যবহারকারী ড্রাইভিং শুরু করেন, বা ব্যবহারকারী ড্রাইভিং বন্ধ না করা পর্যন্ত একটি মেসেজিং অ্যাপ সমস্ত কথোপকথন নিঃশব্দ করতে পারে।
অ্যাক্টিভিটি রিকগনিশন ট্রানজিশন API ব্যবহারকারীর কার্যকলাপের পরিবর্তন সনাক্ত করতে ব্যবহার করা যেতে পারে। আপনার অ্যাপটি আগ্রহের ক্রিয়াকলাপে একটি রূপান্তর সাবস্ক্রাইব করে এবং API শুধুমাত্র প্রয়োজন হলেই আপনার অ্যাপকে অবহিত করে। এই পৃষ্ঠাটি দেখায় কিভাবে অ্যাক্টিভিটি রিকগনিশন ট্রানজিশন এপিআই ব্যবহার করতে হয়, যাকে সংক্ষেপে ট্রানজিশন এপিআইও বলা হয়।
আপনার প্রকল্প সেট আপ করুন
আপনার অ্যাপে ট্রানজিশন API ব্যবহার করতে, আপনাকে অবশ্যই Google অবস্থান এবং কার্যকলাপ শনাক্তকরণ API সংস্করণ 12.0.0 বা উচ্চতরের উপর নির্ভরতা ঘোষণা করতে হবে এবং অ্যাপ ম্যানিফেস্টে 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
ক্লাস দ্বারা প্রতিনিধিত্ব করা হয়। ট্রানজিশন API নিম্নলিখিত ক্রিয়াকলাপগুলিকে সমর্থন করে: -
ACTIVITY_TRANSITION_ENTER
বাACTIVITY_TRANSITION_EXIT
এর একটি রূপান্তর প্রকার। আরও তথ্যের জন্য,ActivityTransition
ক্লাস পড়ুন।
নিম্নলিখিত কোড দেখায় কিভাবে ActivityTransition
অবজেক্টের একটি তালিকা তৈরি করতে হয়:
কোটলিন
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
অবজেক্ট তৈরি করতে পারেন, যেমনটি নিচের উদাহরণে দেখানো হয়েছে:
কোটলিন
val request = ActivityTransitionRequest(transitions)
জাভা
ActivityTransitionRequest request = new ActivityTransitionRequest(transitions);
আপনি আপনার ActivityTransitionRequest
এর উদাহরণ এবং আপনার PendingIntent
অবজেক্টকে requestActivityTransitionUpdates()
পদ্ধতিতে পাস করে কার্যকলাপ পরিবর্তন আপডেটের জন্য নিবন্ধন করতে পারেন। requestActivityTransitionUpdates()
পদ্ধতিটি একটি Task
অবজেক্ট প্রদান করে যা আপনি সাফল্য বা ব্যর্থতার জন্য পরীক্ষা করতে পারেন, যেমনটি নিম্নলিখিত কোড উদাহরণে দেখানো হয়েছে:
কোটলিন
// 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
কলব্যাক পাবেন। একটি ActivityTransitionResult
অবজেক্ট Intent
থেকে বের করা যেতে পারে, যার মধ্যে ActivityTransitionEvent
অবজেক্টের একটি তালিকা রয়েছে। ইভেন্টগুলি কালানুক্রমিক ক্রমে সাজানো হয়, উদাহরণস্বরূপ, যদি কোনো অ্যাপ ACTIVITY_TRANSITION_ENTER
এবং ACTIVITY_TRANSITION_EXIT
ট্রানজিশনে IN_VEHICLE
অ্যাক্টিভিটি টাইপের জন্য অনুরোধ করে, তাহলে ব্যবহারকারী ড্রাইভিং শুরু করলে এটি একটি ActivityTransitionEvent
অবজেক্ট পায় এবং অন্য একটি যখন ব্যবহারকারী অন্য কোনো অ্যাক্টিভিটিতে স্থানান্তরিত হয় .
আপনি BroadcastReceiver
এর একটি সাবক্লাস তৈরি করে এবং কার্যকলাপ পরিবর্তন ইভেন্টের তালিকা পেতে onReceive()
পদ্ধতি প্রয়োগ করে আপনার কলব্যাক বাস্তবায়ন করতে পারেন। আরও তথ্যের জন্য, সম্প্রচার দেখুন। নিম্নলিখিত উদাহরণ দেখায় কিভাবে onReceive()
পদ্ধতি বাস্তবায়ন করতে হয়:
কোটলিন
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
অবজেক্টকে প্যারামিটার হিসেবে পাস করার মাধ্যমে কার্যকলাপ পরিবর্তন আপডেটের জন্য নিবন্ধনমুক্ত করতে পারেন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
কোটলিন
// 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 ব্যবহার সম্পর্কে আরও জানতে, নিম্নলিখিত উপকরণ দেখুন:
নমুনা
ব্যবহারকারীর কার্যকলাপ স্বীকৃতির জন্য সর্বোত্তম অনুশীলন প্রদর্শনের নমুনা ।