বাংলায় অ্যান্ড্রয়েড সহায়িকা - Bangla Android Guide

আপনার এক্সেসিবিলিটি সার্ভিস কনফিগার করুন

আপনার এক্সেসিবিলিটি সার্ভিসের জন্য কনফিগারেশন ভেরিয়েবল সেট করা সিস্টেমকে জানায় কখন এবং কীভাবে আপনি এটাকে রান করতে চান। কোন ইভেন্ট টাইপ আপনি রেসপন্স করতে চান ? সকল অ্যাপলিকেশনের জন্য সার্ভিস সক্রিয় করা উচিত কিনা অথবা শুধুমাত্র প্যাকেজ নাম? কোন ধরনের ফিডব্যাক এটা ব্যবহার করে?

এই ভেরিয়েবলগুলো কীভাবে সেট করতে হবে তার জন্য আপনার দুইটা অপশন আছে। ব্যাকওয়ার্ড-উপযুক্ত অপশন setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)ব্যবহার করে, তাদের কোডে সেট করে। এটা করতে, onServiceConnected()পদ্ধতি ওভাররাইড করুন এবং সেখানে আপনার সার্ভিস কনফিগার করুন।

@Override
public void onServiceConnected() {
    // Set the type of events that this service wants to listen to.  Others
    // won't be passed to this service.
    info.eventTypes = AccessibilityEvent.TYPE_VIEW_CLICKED |
            AccessibilityEvent.TYPE_VIEW_FOCUSED;

    // If you only want this service to work with specific applications, set their
    // package names here.  Otherwise, when the service is activated, it will listen
    // to events from all applications.
    info.packageNames = new String[]
            {"com.example.android.myFirstApp", "com.example.android.mySecondApp"};

    // Set the type of feedback your service will provide.
    info.feedbackType = AccessibilityServiceInfo.FEEDBACK_SPOKEN;

    // Default services are invoked only if no package-specific ones are present
    // for the type of AccessibilityEvent generated.  This service *is*
    // application-specific, so the flag isn't necessary.  If this was a
    // general-purpose service, it would be worth considering setting the
    // DEFAULT flag.

    // info.flags = AccessibilityServiceInfo.DEFAULT;

    info.notificationTimeout = 100;

    this.setServiceInfo(info);

}

অ্যান্ড্রয়েড ৪.০ দিয়ে শুরু করলে, সেখানে দ্বিতীয় অপশনটি পাওয়া যায়: একটি XML ফাইল ব্যবহার করে সার্ভিস কনফিগার করুন। কিছু কনফিগারেশন যেমন canRetrieveWindowContent শুধুমাত্র তখনই পাওয়া যায় যদি আপনার কনফিগারেশন সার্ভিস XML ব্যবাহর করে। উপরের একই কনফিগারেশন অপশন, XML ব্যবহার করে নির্ধারিত, যেটা দেখতে এ রকম হবে:

<accessibility-service
     android:accessibilityEventTypes="typeViewClicked|typeViewFocused"
     android:packageNames="com.example.android.myFirstApp, com.example.android.mySecondApp"
     android:accessibilityFeedbackType="feedbackSpoken"
     android:notificationTimeout="100"
     android:settingsActivity="com.example.android.apis.accessibility.TestBackActivity"
     android:canRetrieveWindowContent="true"
/>

আপনি যদি XML ‘র রাস্তা ধরে যান, XML ফাইলে নির্দেশ করা আপনার সার্ভিস ডিক্লেয়ারেশনে একটি < meta-data>ট্যাগ যোগ করার মাধ্যমে আপনি আপনার মেনিফেস্টে এটাকে রেফারেন্স করার বিষয়ে নিশ্চিত হোন। আপন যদি res/xml/serviceconfig.xml'র মধ্যে আপনার XML ফাইল স্টোর করেন , নতুন ট্যাগ দেখতে এরকম হবে:

<service android:name=".MyAccessibilityService">
     <intent-filter>
         <action android:name="android.accessibilityservice.AccessibilityService" />
     </intent-filter>
     <meta-data android:name="android.accessibilityservice"
     android:resource="@xml/serviceconfig" />
</service>