ব্যবহারকারীরা কখন একটি কার্যকলাপ শুরু বা শেষ করেন তা সনাক্ত করুন

কোনও ব্যবহারকারী কখন হাঁটা, বাইক চালানো বা ড্রাইভিং করার মতো একটি নির্দিষ্ট কার্যকলাপ শুরু করে বা বন্ধ করে তা সনাক্ত করতে আপনার অ্যাপটি ডিজাইন করা প্রয়োজন হতে পারে। উদাহরণস্বরূপ, একটি মাইলেজ ট্র্যাকিং অ্যাপ মাইল ট্র্যাক করা শুরু করতে পারে যখন একজন ব্যবহারকারী ড্রাইভিং শুরু করেন, বা ব্যবহারকারী ড্রাইভিং বন্ধ না করা পর্যন্ত একটি মেসেজিং অ্যাপ সমস্ত কথোপকথন নিঃশব্দ করতে পারে।

অ্যাক্টিভিটি রিকগনিশন ট্রানজিশন API ব্যবহারকারীর কার্যকলাপের পরিবর্তন সনাক্ত করতে ব্যবহার করা যেতে পারে। আপনার অ্যাপটি আগ্রহের ক্রিয়াকলাপে একটি রূপান্তর সাবস্ক্রাইব করে এবং API শুধুমাত্র প্রয়োজন হলেই আপনার অ্যাপকে অবহিত করে। এই পৃষ্ঠাটি দেখায় কিভাবে অ্যাক্টিভিটি রিকগনিশন ট্রানজিশন এপিআই ব্যবহার করতে হয়, যাকে সংক্ষেপে ট্রানজিশন এপিআইও বলা হয়।

আপনার প্রকল্প সেট আপ করুন

আপনার অ্যাপে ট্রানজিশন API ব্যবহার করতে, আপনাকে অবশ্যই Google অবস্থান এবং কার্যকলাপ শনাক্তকরণ API সংস্করণ 12.0.0 বা উচ্চতরের উপর নির্ভরতা ঘোষণা করতে হবে এবং অ্যাপ ম্যানিফেস্টে com.google.android.gms.permission.ACTIVITY_RECOGNITION অনুমতি উল্লেখ করতে হবে।

  1. API-এ নির্ভরতা ঘোষণা করতে, Google maven সংগ্রহস্থলে একটি রেফারেন্স যোগ করুন এবং আপনার অ্যাপ build.gradle ফাইলের নির্ভরতা বিভাগে com.google.android.gms:play-services-location:12.0.0 এ একটি বাস্তবায়ন এন্ট্রি যোগ করুন . আরও তথ্যের জন্য, Google Play পরিষেবা সেট আপ দেখুন।
  2. 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 অবজেক্ট তৈরি করতে, আপনাকে অবশ্যই ActivityTransition অবজেক্টের একটি তালিকা তৈরি করতে হবে, যা সেই পরিবর্তনের প্রতিনিধিত্ব করে যেটি সম্পর্কে আপনি বিজ্ঞপ্তি পেতে চান। একটি 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 ব্যবহার সম্পর্কে আরও জানতে, নিম্নলিখিত উপকরণ দেখুন:

নমুনা

ব্যবহারকারীর কার্যকলাপ স্বীকৃতির জন্য সর্বোত্তম অনুশীলন প্রদর্শনের নমুনা