מסגרת בדיקת איות

פלטפורמת Android מציעה מסגרת לבדיקת איות שמאפשרת לך להטמיע את בדיקת האיות באפליקציה ולגשת אליה. המסגרת היא אחת ממשקי API של שירות טקסט.

כדי להשתמש ב-framework באפליקציה שלכם, אתם צריכים ליצור שירות Android יוצרת אובייקט סשן לבדיקת איות. על סמך טקסט שתספקו, אובייקט הסשן מחזיר הצעות איות שנוצרות על ידי האיות שבודק.

מחזור החיים של בדיקת איות

בתרשים הבא מוצג מחזור החיים של שירות בדיקת האיות:

תמונה שמציגה את מחזור החיים של שירות בדיקת איות
איור 1. שירות בדיקת האיות במחזור החיים.

כדי להתחיל בדיקת איות, האפליקציה מתחילה את הטמעת האיות שירות בדיקה. לקוחות באפליקציה שלך, כמו פעילויות או ממשק משתמש ספציפי רכיבים, לבקש מהשירות של בדיקת האיות להפעיל ואז להשתמש בסשן כדי לקבל הצעות לטקסט. כשלקוח מסיים את הפעילות שלו, הוא נסגר את הפעלת בדיקת האיות. במקרה הצורך, האפליקציה יכולה לכבות את האיות תמיד.

הטמעת שירות של בדיקת איות

כדי להשתמש במסגרת בדיקת האיות באפליקציה, צריך להוסיף שירות לבדיקת איות שכולל את הגדרת אובייקט הסשן. אפשר גם להוסיף פעילות אופציונלית באפליקציה ששולטת בהגדרות. הוספת קובץ מטא-נתונים בפורמט XML שמתארת את שירות בדיקת האיות, ומוסיפים את הרכיבים המתאימים את קובץ המניפסט.

כיתות בדיקת איות

מגדירים את אובייקט השירות והסשן באמצעות המחלקות הבאות:

  • תת-מחלקה של SpellCheckerService
    ב-SpellCheckerService מטמיעים גם את Service והממשק של מסגרת בדיקת האיות. במחלקה המשנית, להטמיע את השיטה הבאה:
    createSession()
    שיטת היצרן שמחזירה האובייקט SpellCheckerService.Session ללקוח רוצה לבדוק את האיות.
  • יישום של SpellCheckerService.Session
    אובייקט ששירות בדיקת האיות מספק ללקוחות כדי לאפשר להעביר להם טקסט לבודק האיות ולקבל הצעות. בתוך class, מטמיעים את השיטות הבאות:
    onCreate()
    נקראה על ידי המערכת בתגובה ל createSession(). בשיטה הזו אפשר לאתחל את האובייקט SpellCheckerService.Session על סמך המיקום הנוכחי ופרטים נוספים.
    onGetSentenceSuggestionsMultiple()
    מבצעת את בדיקת האיות בפועל. השיטה הזו מחזירה מערך של SentenceSuggestionsInfo שמכיל הצעות למשפטים שהועברו אליה.

    לחלופין, אפשר להטמיע onCancel(), שמטפל בבקשות לביטול בדיקת האיות; onGetSuggestions(), שמטפל בבקשה להצעת מילה; או onGetSuggestionsMultiple(), שמטפל בקבוצות של בקשות להצעת מילים.

מניפסט ומטא-נתונים של בדיקת איות

בנוסף לקוד, עליכם לספק את קובץ המניפסט המתאים ומטא-נתונים עבור בודק האיות.

קובץ המניפסט מגדיר את האפליקציה, השירות והפעילות של שליטה בהגדרות, כמו בדוגמה הבאה:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.samplespellcheckerservice" >
    <application
        android:label="@string/app_name" >
        <service
            android:label="@string/app_name"
            android:name=".SampleSpellCheckerService"
            android:permission="android.permission.BIND_TEXT_SERVICE" >
            <intent-filter >
                <action android:name="android.service.textservice.SpellCheckerService" />
            </intent-filter>

            <meta-data
                android:name="android.view.textservice.scs"
                android:resource="@xml/spellchecker" />
        </service>

        <activity
            android:label="@string/sample_settings"
            android:name="SpellCheckerSettingsActivity" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />
            </intent-filter>
        </activity>
    </application>
</manifest>

רכיבים שרוצים להשתמש בשירות חייבים לבקש את ההרשאה BIND_TEXT_SERVICE כדי להבטיח שרק המערכת מקשרת לשירות. הגדרת השירות מציין גם את קובץ המטא-נתונים spellchecker.xml, בקטע הבא.

קובץ המטא-נתונים spellchecker.xml מכיל את הפרטים הבאים XML:

<spell-checker xmlns:android="http://schemas.android.com/apk/res/android"
        android:label="@string/spellchecker_name"
        android:settingsActivity="com.example.SpellCheckerSettingsActivity">
    <subtype
            android:label="@string/subtype_generic"
            android:subtypeLocale="en”
    />
    <subtype
            android:label="@string/subtype_generic"
            android:subtypeLocale="fr”
    />
</spell-checker>

המטא-נתונים מציינים את הפעילות שבה בודק האיות משתמש כדי לשלוט הגדרות. הוא גם מגדיר סוגי משנה עבור בודק האיות. במקרה הזה, הפרמטר סוגי המשנה מגדירים לוקאלים שבודק האיות יכול לטפל בהם.

גישה לשירות בדיקת האיות מלקוח

אפליקציות שמשתמשות TextView והקבוצה EditText צפיות משתפרות אוטומטית מבדיקת איות, מפני ש-TextView משתמשת באופן אוטומטי בבדיקת איות:

תמונה שמראה איך בודק האיות מופעל באופן אוטומטי ב-EditText
איור 2. בדיקת איות EditText

עם זאת, יכול להיות שתרצו לקיים אינטראקציה ישירות עם שירות בדיקת איות במקרים אחרים. הדיאגרמה הבאה מציגה את זרימת הבקרה לאינטראקציה באמצעות שירות בדיקת איות:

תמונה שמציגה את הדיאגרמה של האינטראקציה עם שירות בדיקת איות
איור 3. אינטראקציה עם בודק איות לאחר השיפור.

קידוד לטיני עורך שיטות הקלט בפרויקט קוד פתוח של Android כולל דוגמה בדיקת איות.