پلتفرم اندروید یک چارچوب غلطگیر املای ارائه میدهد که به شما امکان میدهد املای بررسی را در برنامه خود پیاده کنید و به آن دسترسی داشته باشید. این فریم ورک یکی از APIهای سرویس متنی است.
برای استفاده از چارچوب در برنامه خود، یک سرویس Android ایجاد می کنید که یک شی جلسه بررسی املا را تولید می کند. بر اساس متنی که ارائه میکنید، شی جلسه پیشنهادات املایی ایجاد شده توسط غلطگیر املا را برمیگرداند.
چرخه عمر غلطگیر املا
نمودار زیر چرخه عمر سرویس غلط گیر املا را نشان می دهد:
![تصویری که چرخه عمر سرویس جستجوگر املا را نشان می دهد](https://developer.android.com/static/resources/articles/images/spellcheck_lifecycle.png?hl=fa)
برای شروع بررسی املا، برنامه شما اجرای سرویس غلط گیر املا را شروع می کند. کلاینتهای برنامه شما، مانند فعالیتها یا عناصر 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 فعال می شود](https://developer.android.com/static/images/ui/spellchecker_edittext.png?hl=fa)
EditText
.با این حال، ممکن است بخواهید در موارد دیگر به طور مستقیم با یک سرویس غلط گیر املا تعامل داشته باشید. نمودار زیر جریان کنترل برای تعامل با سرویس غلط گیر املا را نشان می دهد:
![تصویری که نمودار تعامل با سرویس غلطگیر املا را نشان میدهد](https://developer.android.com/static/resources/articles/images/spellcheck_client_flow.png?hl=fa)
ویرایشگر روش ورودی LatinIME در پروژه متن باز Android حاوی نمونه ای از بررسی املا است.