چارچوب غلط‌گیر املا

پلتفرم اندروید یک چارچوب غلط‌گیر املای ارائه می‌دهد که به شما امکان می‌دهد املای بررسی را در برنامه خود پیاده کنید و به آن دسترسی داشته باشید. این فریم ورک یکی از APIهای سرویس متنی است.

برای استفاده از چارچوب در برنامه خود، یک سرویس Android ایجاد می کنید که یک شی جلسه بررسی املا را تولید می کند. بر اساس متنی که ارائه می‌کنید، شی جلسه پیشنهادات املایی ایجاد شده توسط غلط‌گیر املا را برمی‌گرداند.

چرخه عمر غلط‌گیر املا

نمودار زیر چرخه عمر سرویس غلط گیر املا را نشان می دهد:

تصویری که چرخه عمر سرویس جستجوگر املا را نشان می دهد
شکل 1. چرخه عمر سرویس غلط گیر املا.

برای شروع بررسی املا، برنامه شما اجرای سرویس غلط گیر املا را شروع می کند. کلاینت‌های برنامه شما، مانند فعالیت‌ها یا عناصر UI فردی، یک جلسه غلط‌گیر املا را از سرویس درخواست می‌کنند، سپس از جلسه برای دریافت پیشنهادات متنی استفاده می‌کنند. هنگامی که یک کلاینت به عملیات خود پایان می دهد، جلسه غلط گیر املای خود را می بندد. در صورت لزوم، برنامه شما می تواند سرویس غلط گیر املا را در هر زمانی خاموش کند.

یک سرویس غلط گیر املا را پیاده سازی کنید

برای استفاده از چارچوب جستجوگر املا در برنامه خود، یک مؤلفه سرویس غلط‌گیر املا را اضافه کنید که شامل تعریف شی جلسه است. همچنین می توانید یک فعالیت اختیاری به برنامه خود اضافه کنید که تنظیمات را کنترل می کند. یک فایل فراداده XML که سرویس غلط‌گیر املا را توصیف می‌کند، اضافه کنید و عناصر مناسب را به فایل مانیفست خود اضافه کنید.

کلاس های غلط گیر املا

شیء سرویس و جلسه را با کلاس های زیر تعریف کنید:

  • زیر کلاس SpellCheckerService
    SpellCheckerService هم کلاس Service و هم رابط فریمورک غلط‌گیر املا را پیاده‌سازی می‌کند. در زیر کلاس خود، روش زیر را پیاده سازی کنید:
    createSession()
    یک روش کارخانه ای که یک شی SpellCheckerService.Session را به کلاینتی که می خواهد املا را بررسی کند، برمی گرداند.
  • پیاده سازی SpellCheckerService.Session
    شی ای که سرویس غلط گیر املا در اختیار مشتریان قرار می دهد تا به آنها اجازه دهد متنی را به غلط گیر املا ارسال کنند و پیشنهادات را دریافت کنند. در این کلاس، متدهای زیر را پیاده سازی کنید:
    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. تعامل با یک سرویس غلط گیر املا.

ویرایشگر روش ورودی LatinIME در پروژه متن باز Android حاوی نمونه ای از بررسی املا است.