उपयोगकर्ताओं के किसी गतिविधि को शुरू या खत्म करने का पता लगाएं

अपने ऐप्लिकेशन को इस तरह से डिज़ाइन करना ज़रूरी हो सकता है कि वह उपयोगकर्ता के शुरू या बंद होने की पहचान कर सके चलने, बाइकिंग या ड्राइव करने जैसी कोई विशेष गतिविधि. उदाहरण के लिए, जब कोई उपयोगकर्ता गाड़ी चलाना शुरू करता है, तो माइलेज ट्रैकिंग ऐप्लिकेशन मील को ट्रैक करना शुरू कर सकता है या मैसेजिंग ऐप्लिकेशन, सभी बातचीत को तब तक म्यूट कर सकता है, जब तक उपयोगकर्ता गाड़ी चलाना बंद नहीं कर देता.

गतिविधि की पहचान करने वाली सुविधा से जुड़े ट्रांज़िशन एपीआई का इस्तेमाल, उपयोगकर्ता की गतिविधि में शामिल होने के बारे में ज़्यादा जानें. आपका ऐप्लिकेशन, आपकी पसंद की गतिविधियों में ट्रांज़िशन के लिए सदस्यता लेता है साथ ही, एपीआई ज़रूरत पड़ने पर ही आपके ऐप्लिकेशन को सूचना देता है. इस पेज में बताया गया है कि ऐक्टिविटी रिकग्निशन एपीआई को कम शब्दों में ट्रांज़िशन एपीआई भी कहा जाता है.

अपना प्रोजेक्ट सेट अप करना

अपने ऐप्लिकेशन में ट्रांज़िशन एपीआई का इस्तेमाल करने के लिए, आपको Google की जगह की जानकारी और गतिविधि की पहचान एपीआई का 12.0.0 या इसके बाद वाला वर्शन और com.google.android.gms.permission.ACTIVITY_RECOGNITION की अनुमति बताएं शामिल हैं.

  1. एपीआई पर डिपेंडेंसी का एलान करने के लिए, Google मेवन में रेफ़रंस जोड़ें डेटा स्टोर करने की जगह पर जाएं और डिपेंडेंसी के लिए com.google.android.gms:play-services-location:12.0.0 सेक्शन में build.gradle फ़ाइल का डेटा शामिल करें. ज़्यादा जानकारी के लिए, सेट अप करना देखें Google Play services.
  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 ऑब्जेक्ट की सूची बनाने का तरीका बताता है:

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

Java

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)

Java

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
}

Java

// 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 ऑब्जेक्ट हैं. इवेंट को समय के हिसाब से क्रम में लगाया जाता है, उदाहरण के लिए, अगर कोई ऐप्लिकेशन इसके लिए किए गए अनुरोध IN_VEHICLE गतिविधि का टाइप ACTIVITY_TRANSITION_ENTER और ACTIVITY_TRANSITION_EXIT ट्रांज़िशन है, तो उसे एक 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....
        }
    }
}

Java

@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....
        }
    }
}

गतिविधि के ट्रांज़िशन से जुड़े अपडेट पाने के लिए रजिस्ट्रेशन रद्द करें

गतिविधि ट्रांज़िशन अपडेट के लिए, इस नंबर पर कॉल करके रजिस्ट्रेशन रद्द किया जा सकता है: removeActivityTransitionUpdates() का तरीका ActivityRecognitionClient और 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)
}

Java

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

अन्य संसाधन

उपयोगकर्ता गतिविधि की पहचान करने वाले एपीआई के इस्तेमाल के बारे में ज़्यादा जानने के लिए, यह जानकारी देखें सामग्री:

सैंपल

उपयोगकर्ता गतिविधि की पहचान करने के सबसे सही तरीके दिखाने के लिए सैंपल.