अपने ऐप्लिकेशन को इस तरह से डिज़ाइन करना ज़रूरी हो सकता है कि वह उपयोगकर्ता के शुरू या बंद होने की पहचान कर सके चलने, बाइकिंग या ड्राइव करने जैसी कोई विशेष गतिविधि. उदाहरण के लिए, जब कोई उपयोगकर्ता गाड़ी चलाना शुरू करता है, तो माइलेज ट्रैकिंग ऐप्लिकेशन मील को ट्रैक करना शुरू कर सकता है या मैसेजिंग ऐप्लिकेशन, सभी बातचीत को तब तक म्यूट कर सकता है, जब तक उपयोगकर्ता गाड़ी चलाना बंद नहीं कर देता.
गतिविधि की पहचान करने वाली सुविधा से जुड़े ट्रांज़िशन एपीआई का इस्तेमाल, उपयोगकर्ता की गतिविधि में शामिल होने के बारे में ज़्यादा जानें. आपका ऐप्लिकेशन, आपकी पसंद की गतिविधियों में ट्रांज़िशन के लिए सदस्यता लेता है साथ ही, एपीआई ज़रूरत पड़ने पर ही आपके ऐप्लिकेशन को सूचना देता है. इस पेज में बताया गया है कि ऐक्टिविटी रिकग्निशन एपीआई को कम शब्दों में ट्रांज़िशन एपीआई भी कहा जाता है.
अपना प्रोजेक्ट सेट अप करना
अपने ऐप्लिकेशन में ट्रांज़िशन एपीआई का इस्तेमाल करने के लिए, आपको
Google की जगह की जानकारी और गतिविधि की पहचान एपीआई का 12.0.0 या इसके बाद वाला वर्शन और
com.google.android.gms.permission.ACTIVITY_RECOGNITION
की अनुमति बताएं
शामिल हैं.
- एपीआई पर डिपेंडेंसी का एलान करने के लिए, Google मेवन में रेफ़रंस जोड़ें
डेटा स्टोर करने की जगह पर जाएं और
डिपेंडेंसी के लिए
com.google.android.gms:play-services-location:12.0.0
सेक्शन मेंbuild.gradle
फ़ाइल का डेटा शामिल करें. ज़्यादा जानकारी के लिए, सेट अप करना देखें Google Play services. 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
क्लास. ट्रांज़िशन एपीआई नीचे दी गई गतिविधियों के साथ काम करता है: - ट्रांज़िशन टाइप
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()
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()); } } );
अन्य संसाधन
उपयोगकर्ता गतिविधि की पहचान करने वाले एपीआई के इस्तेमाल के बारे में ज़्यादा जानने के लिए, यह जानकारी देखें सामग्री:
सैंपल
उपयोगकर्ता गतिविधि की पहचान करने के सबसे सही तरीके दिखाने के लिए सैंपल.