2012-02-16 18 views
13

मैंएक्सेसिबिलिटी सेवा कैसे शुरू करें?

Intent mailAccessabilityIntent = new Intent(this, EmailAccessabilityService.class); 
startService(mailAccessabilityIntent); 

मेरे समस्या का उपयोग करके AccessibilityService की मेरी कार्यान्वयन शुरू करने के लिए कोशिश कर रहा हूँ onServiceConnected() कभी नहीं बुलाया गया है। मैं इस सेवा को ठीक से कैसे शुरू करूं?

उत्तर

1

मैंने आज यह किया है। एक बार आपकी सेवा बनाई जाती है और पहुंच योग्यता फ़िल्टर के साथ मेनिफेस्ट फ़ाइल में सही ढंग से सूचीबद्ध होती है। फिर आपकी सेवा सेटिंग्स-अभिगम्यता-सेवाओं के तहत दिखाई देगी। आप इसे क्लिक करके इसे शुरू करते हैं और फिर इसे टॉगल करते हैं। मैं नहीं जानता कि इसे इरादों के माध्यम से कैसे शुरू किया जाए, फिर भी यदि यह संभव हो। मुझे लगता है कि इसकी ली जीपीएस आप केवल बटन शुरू करने के लिए उपयोगकर्ताओं को नेविगेट कर सकते हैं।

24

क्योंकि एक्सेसिबिलिटी सेवाएं ऑन-स्क्रीन सामग्री का पता लगाने और बातचीत करने में सक्षम हैं, इसलिए उपयोगकर्ता को सेटिंग> एक्सेसिबिलिटी में स्पष्ट रूप से सेवाएं सक्षम करनी होंगी। एक बार सेवा सक्षम होने के बाद, सिस्टम इसे स्वचालित रूप से शुरू कर देगा और इसे एक्सेसिबिलिटी एपीआई से बांध देगा।

वाकई आपके ऐप्स मेनिफ़ेस्ट में आपकी सेवा की घोषणा करें:

<service android:name=".MyAccessibilityService" 
     android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"> 
    <intent-filter> 
     <action android:name="android.accessibilityservice.AccessibilityService" /> 
    </intent-filter> 
    . . . 
</service> 

आप भी अपनी सेवा के लिए विन्यास प्रदान करना होगा, या तो setServiceInfo (AccessibilityServiceInfo) अधिभावी या एक मेटा डेटा विशेषता और एक्सएमएल जोड़कर विन्यास फाइल

मेटा डेटा विशेषता < आशय फिल्टर > टैग के बाद अपने < सेवा > घोषणा में चला जाता है और इस तरह दिखता है:

<meta-data android:name="android.accessibilityservice" 
      android:resource="@xml/accessibilityservice" /> 

एक्सएमएल config है कि आप इस मामले में (संदर्भित कर रहे हैं, accessibilityservice .xml) इस तरह दिखता है:

<accessibility-service 
    android:accessibilityEventTypes="typeViewClicked|typeViewFocused" 
    android:packageNames="foo.bar, foo.baz" 
    android:accessibilityFeedbackType="feedbackSpoken" 
    android:notificationTimeout="100" 
    android:accessibilityFlags="flagDefault" 
    android:settingsActivity="foo.bar.TestBackActivity" 
    android:canRetrieveWindowContent="true" 
    . . . 
/> 

अधिक जानकारी है जिस पर टैग http://developer.android.com/reference/android/R.styleable.html#AccessibilityService

पर उपयोग कर सकते हैं नहीं है
+1

आप वास्तव में बहुत सारे अपवर्तनीय हैं। क्योंकि दस्तावेज़ भी http://developer.android.com/guide/topics/ui/accessibility/services.html पर गलत है। आपने एक्सेसिबिलिटी सेवा – gaurav414u

+1

@alanv बनाने का सही तरीका दिखाया है "एक बार सेवा सक्षम होने के बाद, सिस्टम स्वचालित रूप से इसे शुरू कर देगा और इसे एक्सेसिबिलिटी एपीआई से बांध देगा।" मेरे पास सवाल है, मेरी सुलभता सेवा एक बार काम करने में सक्षम है। बिट जब यह दुर्घटनाग्रस्त हो जाता है तो परिणाम ट्यू सेटिंग में सक्षम होते हैं लेकिन इसके परिणामस्वरूप निष्पादन सेवा नहीं होती है। क्रैश के बाद सिस्टम मेरी सेवा को पुनरारंभ क्यों नहीं करता है लेकिन यह अभी भी परिणाम सक्षम है? – Hoper

+2

@ v1sc3rr4k एक बार सिस्टम-लिंक्ड सेवा (जैसे एक्सेसिबिलिटी सर्विस) क्रैश हो जाती है, तब तक सिस्टम द्वारा पुनरारंभ नहीं किया जाता है जब तक अनुमति को रीसेट नहीं किया जाता है या ओएस रीबूट किया जाता है। अनुमति को रद्द करने और इसे फिर से सक्षम करने का प्रयास करें, सेवा फिर से शुरू हो जाएगी। आशा करता हूँ की ये काम करेगा। – abhinav

संबंधित मुद्दे