پلاتفرم Android چارچوب غلطیابی املایی ارائه میدهد که به شما امکان میدهد غلطیابی املایی را در برنامهتان پیادهسازی و به آن دسترسی پیدا کنید. این چارچوب یکی از میاناهای برنامهسازی کاربردی «سرویس نوشتار» است.
برای استفاده از چارچوب در برنامهتان، سرویس Android ایجاد میکنید که شیء جلسه غلطیاب املایی تولید میکند. براساس نوشتاری که ارائه میدهید، شیء جلسه پیشنهادهای املایی تولیدشده توسط غلطیاب املایی را برمیگرداند.
چرخه حیات غلطیابی املا
نمودار زیر چرخه حیات سرویس غلطیابی املا را نشان میدهد:
برای شروع غلطیابی املایی، برنامهتان پیادهسازی سرویس غلطیاب املایی را آغاز میکند. کارخواهها در برنامه شما، مانند فعالیتها یا عناصر میانای کاربر تکی، جلسه غلطیابی املا را از سرویس درخواست میکنند، سپس از جلسه برای دریافت پیشنهادهای نوشتار استفاده میکنند. وقتی کارخواه عملیاتش را خاتمه میدهد، جلسه غلطیاب املاییاش را میبندد. درصورت لزوم، برنامهتان میتواند هرزمان که بخواهد سرویس غلطیابی املا را خاموش کند.
پیادهسازی سرویس غلطیاب املایی
برای استفاده از چارچوب غلطیاب املایی در برنامهتان، مؤلفه سرویس غلطیاب املایی را که شامل تعریف شیء جلسه است اضافه کنید. همچنین میتوانید فعالیتی اختیاری به برنامهتان اضافه کنید که تنظیمات را کنترل میکند. فایل فراداده XML اضافه کنید که سرویس غلطیاب املایی را شرح دهد، و عناصر مناسب را به فایل مانیفست اضافه کنید.
کلاسهای غلطیاب املایی
سرویس و شیء جلسه را با کلاسهای زیر تعریف کنید:
-
- زیرکلاس
SpellCheckerServiceSpellCheckerServiceهم کلاس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.
بااینحال، ممکن است بخواهید در موارد دیگر مستقیماً با سرویس غلطیاب املایی تعامل داشته باشید. نمودار زیر جریان کنترل را برای تعامل با سرویس غلطیاب املایی نشان میدهد:
ویرایشگر روش ورودی LatinIME در پروژه منبع باز Android حاوی نمونهای از غلطیابی املایی است.