ตัวแก้ไขวิธีการป้อนข้อมูล (IME) คือการควบคุมของผู้ใช้ที่ช่วยให้ผู้ใช้ป้อนข้อความได้ Android มี เฟรมเวิร์กวิธีการป้อนข้อมูลที่ขยายได้ซึ่งช่วยให้แอปพลิเคชันมีวิธีการป้อนข้อมูลสำรองให้ผู้ใช้ เช่น แป้นพิมพ์บนหน้าจอหรือการป้อนข้อมูลด้วยเสียง หลังจากติดตั้ง IME แล้ว ผู้ใช้จะเลือก IME จากการตั้งค่าระบบและใช้ในทั้งระบบได้ เปิดใช้ IME ได้ครั้งละ 1 รายการเท่านั้น
หากต้องการเพิ่ม IME ลงในระบบ Android ให้สร้างแอปพลิเคชัน Android ที่มีคลาสซึ่ง
ขยาย
InputMethodService
นอกจากนี้ โดยปกติแล้วคุณจะสร้างกิจกรรม "การตั้งค่า" ที่ส่งตัวเลือกไปยังบริการ IME คุณ
ยังกำหนด UI การตั้งค่าที่จะแสดงเป็นส่วนหนึ่งของการตั้งค่าระบบได้ด้วย
หน้านี้ครอบคลุมหัวข้อต่อไปนี้
- วงจรของ IME
- การประกาศคอมโพเนนต์ IME ในไฟล์ Manifest ของแอปพลิเคชัน
- IME API
- การออกแบบ UI ของ IME
- การส่งข้อความจาก IME ไปยังแอปพลิเคชัน
- การทำงานกับประเภทย่อยของ IME
- ข้อควรพิจารณาอื่นๆ เกี่ยวกับ IME
หากยังไม่เคยใช้ IME ให้อ่านบทความเบื้องต้น วิธีการป้อนข้อมูลบนหน้าจอ ก่อน
วงจรการใช้งานของ IME
แผนภาพต่อไปนี้อธิบายวงจรการใช้งานของ IME
ส่วนต่อไปนี้จะอธิบายวิธีใช้ UI และโค้ดที่เชื่อมโยงกับ IME ที่ ทำตามวงจรนี้
ประกาศคอมโพเนนต์ IME ในไฟล์ Manifest
ในระบบ Android นั้น IME คือแอปพลิเคชัน Android ที่มีบริการ IME พิเศษ ไฟล์ Manifest ของแอปพลิเคชันต้องประกาศบริการ ขอสิทธิ์ที่จำเป็น ระบุตัวกรอง Intent ที่ตรงกับการดำเนินการ action.view.InputMethod และระบุข้อมูลเมตาที่กำหนดลักษณะของ IME นอกจากนี้ หากต้องการมีอินเทอร์เฟซการตั้งค่าที่ช่วยให้
ผู้ใช้แก้ไขลักษณะการทำงานของ IME ได้ คุณสามารถกำหนดกิจกรรม "การตั้งค่า" ที่เปิดได้จาก
การตั้งค่าระบบ
ข้อมูลโค้ดต่อไปนี้ประกาศบริการ IME โดยจะขอสิทธิ์
BIND_INPUT_METHOD
เพื่อให้บริการเชื่อมต่อ IME กับระบบ ตั้งค่าตัวกรอง Intent ที่ตรงกับการดำเนินการ
android.view.InputMethod และกำหนดข้อมูลเมตาสำหรับ IME ดังนี้
<!-- Declares the input method service. --> <service android:name="FastInputIME" android:label="@string/fast_input_label" android:permission="android.permission.BIND_INPUT_METHOD"> <intent-filter> <action android:name="android.view.InputMethod" /> </intent-filter> <meta-data android:name="android.view.im" android:resource="@xml/method" /> </service>
ข้อมูลโค้ดถัดไปประกาศกิจกรรมการตั้งค่าสำหรับ IME โดยมีตัวกรอง Intent สำหรับ
ACTION_MAIN ซึ่ง
ระบุว่ากิจกรรมนี้เป็นจุดแรกเข้าหลักสำหรับแอปพลิเคชัน IME ดังนี้
<!-- Optional: an activity for controlling the IME settings. --> <activity android:name="FastInputIMESettings" android:label="@string/fast_input_settings"> <intent-filter> <action android:name="android.intent.action.MAIN"/> </intent-filter> </activity>
นอกจากนี้ คุณยังให้สิทธิ์เข้าถึงการตั้งค่าของ IME ได้โดยตรงจาก UI ของ IME
API วิธีการป้อนข้อมูล
คลาสที่เฉพาะเจาะจงสำหรับ IME จะอยู่ในแพ็กเกจ
android.inputmethodservice
และ
android.view.inputmethod
KeyEvent คลาสนี้
มีความสำคัญต่อการจัดการอักขระในแป้นพิมพ์
ส่วนกลางของ IME คือคอมโพเนนต์บริการ ซึ่งเป็นคลาสที่ขยายInputMethodService นอกเหนือจากการใช้รอบวงจรของบริการปกติแล้ว คลาสนี้ยังมี Callback สำหรับการแสดง UI ของ IME, การจัดการอินพุตของผู้ใช้ และการส่งข้อความไปยังฟิลด์ที่โฟกัส โดยค่าเริ่มต้น InputMethodService คลาสจะให้การ
ติดตั้งใช้งานส่วนใหญ่สำหรับการจัดการสถานะและการมองเห็นของ IME และการสื่อสารกับช่อง
ป้อนข้อมูลปัจจุบัน
นอกจากนี้ คลาสต่อไปนี้ก็มีความสำคัญเช่นกัน
BaseInputConnection-
กำหนดช่องทางการสื่อสารจาก
InputMethodกลับไปยังแอปพลิเคชันที่รับอินพุต คุณใช้เพื่ออ่านข้อความรอบๆ เคอร์เซอร์ ส่งข้อความไปยังกล่องข้อความ และส่งเหตุการณ์คีย์ดิบไปยังแอปพลิเคชัน แอปพลิเคชันต้องขยายคลาสนี้แทนการติดตั้งอินเทอร์เฟซพื้นฐานInputConnection KeyboardView-
ส่วนขยายของ
Viewที่ แสดงแป้นพิมพ์และตอบสนองต่อเหตุการณ์ที่เป็นอินพุตจากผู้ใช้ รูปแบบแป้นพิมพ์จะระบุโดย อินสแตนซ์ของKeyboardซึ่งคุณกำหนดได้ในไฟล์ XML
ออกแบบ UI ของวิธีการป้อนข้อมูล
องค์ประกอบภาพหลักของ IME มี 2 อย่าง ได้แก่ มุมมองอินพุตและมุมมองคำที่แนะนำ คุณต้องใช้เฉพาะองค์ประกอบที่เกี่ยวข้องกับวิธีการป้อนข้อมูลที่คุณออกแบบเท่านั้น
มุมมองอินพุต
มุมมองอินพุตคือ UI ที่ผู้ใช้ป้อนข้อความในรูปแบบการคลิกแป้น การเขียนด้วยลายมือ หรือ
ท่าทางสัมผัส เมื่อแสดง IME เป็นครั้งแรก ระบบจะเรียกใช้แฮนเดิล
onCreateInputView()
ในการใช้งานเมธอดนี้ ให้สร้างเลย์เอาต์ที่ต้องการแสดงในหน้าต่าง IME
แล้วส่งคืนเลย์เอาต์ไปยังระบบ ข้อมูลโค้ดต่อไปนี้แสดงตัวอย่างการใช้เมธอด onCreateInputView()
Kotlin
override fun onCreateInputView(): View { return layoutInflater.inflate(R.layout.input, null).apply { if (this is MyKeyboardView) { setOnKeyboardActionListener(this@MyInputMethod) keyboard = latinKeyboard } } }
Java
@Override public View onCreateInputView() { MyKeyboardView inputView = (MyKeyboardView) getLayoutInflater().inflate(R.layout.input, null); inputView.setOnKeyboardActionListener(this); inputView.setKeyboard(latinKeyboard); return inputView; }
ในตัวอย่างนี้ MyKeyboardView เป็นอินสแตนซ์ของการติดตั้งใช้งาน KeyboardView ที่กำหนดเองซึ่งแสดงผล Keyboard
มุมมองผู้สมัคร
มุมมองคำที่แนะนำคือ UI ที่ IME แสดงการแก้ไขหรือคำแนะนำที่อาจเป็นไปได้
เพื่อให้ผู้ใช้เลือก ในวงจรของ IME ระบบจะเรียกใช้
onCreateCandidatesView()
เมื่อพร้อมที่จะแสดงมุมมองตัวเลือก ในการใช้งานเมธอดนี้ ให้ส่งคืนเลย์เอาต์ที่แสดงคำแนะนำ หรือส่งคืนค่า Null หากไม่ต้องการแสดงสิ่งใด การตอบกลับที่ไม่มีค่า
เป็นลักษณะการทำงานเริ่มต้น คุณจึงไม่ต้องใช้การตอบกลับนี้หากไม่ได้ให้คำแนะนำ
ข้อควรพิจารณาในการออกแบบ UI
ส่วนนี้จะอธิบายข้อควรพิจารณาบางประการในการออกแบบ UI สำหรับ IME
จัดการหน้าจอหลายขนาด
UI สำหรับ IME ต้องปรับขนาดให้พอดีกับหน้าจอขนาดต่างๆ และรองรับทั้งการวางแนวแนวนอน และแนวตั้ง ในโหมด IME ที่ไม่ใช่แบบเต็มหน้าจอ ให้เว้นที่ว่างเพียงพอสำหรับแอปพลิเคชันเพื่อ แสดงช่องข้อความและบริบทที่เกี่ยวข้อง เพื่อให้ IME ใช้พื้นที่ไม่เกินครึ่งหน้าจอ ในโหมด IME แบบเต็มหน้าจอ จะไม่มีปัญหานี้
จัดการอินพุตประเภทต่างๆ
ช่องข้อความ Android ช่วยให้คุณตั้งค่าประเภทอินพุตที่เฉพาะเจาะจงได้ เช่น ข้อความแบบอิสระ ตัวเลข URL อีเมล และสตริงการค้นหา เมื่อติดตั้งใช้งาน IME ใหม่ ให้ตรวจหาประเภทอินพุตของแต่ละ ฟิลด์และระบุอินเทอร์เฟซที่เหมาะสมสำหรับฟิลด์นั้น อย่างไรก็ตาม คุณไม่จำเป็นต้องตั้งค่า IME เพื่อ ตรวจสอบว่าผู้ใช้ป้อนข้อความที่ถูกต้องสำหรับประเภทอินพุตหรือไม่ ซึ่งเป็นความรับผิดชอบของ แอปพลิเคชันที่เป็นเจ้าของช่องข้อความ
ตัวอย่างเช่น นี่คืออินเทอร์เฟซที่ IME ละตินมีให้สำหรับข้อความ อินพุตของแพลตฟอร์ม Android
และนี่คืออินเทอร์เฟซที่ IME ละตินมีให้สำหรับแพลตฟอร์ม Android การป้อนตัวเลข:
เมื่อช่องป้อนข้อมูลได้รับโฟกัสและ IME เริ่มทำงาน ระบบจะเรียกใช้
onStartInputView()
โดยส่งออบเจ็กต์
EditorInfo
ซึ่งมีรายละเอียดเกี่ยวกับประเภทอินพุตและแอตทริบิวต์อื่นๆ ของช่องข้อความ ในออบเจ็กต์นี้ ฟิลด์ inputType มีประเภทอินพุตของช่องข้อความ
ฟิลด์ inputType คือ int ที่มีรูปแบบบิตสำหรับการตั้งค่าประเภทอินพุตต่างๆ
หากต้องการทดสอบประเภทอินพุตของช่องข้อความ ให้มาสก์ด้วยค่าคงที่
TYPE_MASK_CLASS
ดังนี้
Kotlin
inputType and InputType.TYPE_MASK_CLASS
Java
inputType & InputType.TYPE_MASK_CLASS
รูปแบบบิตของประเภทอินพุตอาจมีค่าใดค่าหนึ่งต่อไปนี้
TYPE_CLASS_NUMBER- ช่องข้อความสำหรับป้อนตัวเลข ดังที่แสดงในรูปที่ 3, IME ละตินจะแสดงแป้นตัวเลขสำหรับฟิลด์ประเภทนี้
TYPE_CLASS_DATETIME- ช่องข้อความสำหรับป้อนวันที่และเวลา
TYPE_CLASS_PHONE- ฟิลด์ข้อความสำหรับป้อนหมายเลขโทรศัพท์
TYPE_CLASS_TEXT- ช่องข้อความสำหรับป้อนอักขระที่รองรับ
ค่าคงที่เหล่านี้อธิบายไว้โดยละเอียดเพิ่มเติมในเอกสารอ้างอิงสำหรับ
InputType
ฟิลด์ inputType อาจมีบิตอื่นๆ ที่ระบุตัวแปรของช่องข้อความ
ประเภท เช่น
TYPE_TEXT_VARIATION_PASSWORD- รูปแบบหนึ่งของ
TYPE_CLASS_TEXTสำหรับป้อนรหัสผ่าน วิธีการป้อนข้อมูลแสดง สัญลักษณ์แทนข้อความจริง TYPE_TEXT_VARIATION_URI- รูปแบบของ
TYPE_CLASS_TEXTสำหรับป้อน URL ของเว็บและ Uniform Resource Identifier (URI) อื่นๆ TYPE_TEXT_FLAG_AUTO_COMPLETE- รูปแบบของ
TYPE_CLASS_TEXTสำหรับป้อนข้อความที่แอปพลิเคชัน เติมข้อความอัตโนมัติจากพจนานุกรม การค้นหา หรือสิ่งอำนวยความสะดวกอื่นๆ
มาสก์ inputType ด้วยค่าคงที่ที่เหมาะสมเมื่อทดสอบตัวแปรเหล่านี้ ค่าคงที่ของมาสก์ที่ใช้ได้จะแสดงอยู่ในเอกสารประกอบอ้างอิงสำหรับ InputType
ส่งข้อความไปยังแอปพลิเคชัน
เมื่อผู้ใช้ป้อนข้อความด้วย IME คุณจะส่งข้อความไปยังแอปพลิเคชันได้โดยการส่งเหตุการณ์ของแต่ละคีย์ หรือโดยการแก้ไขข้อความรอบๆ เคอร์เซอร์ในช่องข้อความของแอปพลิเคชัน ไม่ว่าในกรณีใด ให้ใช้อินสแตนซ์ของ InputConnection เพื่อส่งข้อความ หากต้องการรับอินสแตนซ์นี้ ให้เรียกใช้
InputMethodService.getCurrentInputConnection()
แก้ไขข้อความรอบเคอร์เซอร์
เมื่อจัดการการแก้ไขข้อความที่มีอยู่ วิธีที่มีประโยชน์บางอย่างใน
BaseInputConnection มีดังนี้
-
getTextBeforeCursor() - แสดงผล
CharSequenceที่มีจำนวนอักขระที่ขอไว้ก่อนตำแหน่งเคอร์เซอร์ปัจจุบัน -
getTextAfterCursor() - แสดง
CharSequenceที่มีจำนวนอักขระที่ขอตาม ตำแหน่งเคอร์เซอร์ปัจจุบัน -
deleteSurroundingText() - ลบจำนวนอักขระที่ระบุทั้งก่อนและหลังตำแหน่งเคอร์เซอร์ปัจจุบัน
-
commitText() - ส่ง
CharSequenceไปยังช่องข้อความและตั้งค่าตำแหน่งเคอร์เซอร์ใหม่
ตัวอย่างเช่น ข้อมูลโค้ดต่อไปนี้แสดงวิธีแทนที่อักขระ 4 ตัวทางด้านซ้ายของเคอร์เซอร์ด้วยข้อความ "สวัสดี!"
Kotlin
currentInputConnection.also { ic: InputConnection -> ic.deleteSurroundingText(4, 0) ic.commitText("Hello", 1) ic.commitText("!", 1) }
Java
InputConnection ic = getCurrentInputConnection(); ic.deleteSurroundingText(4, 0); ic.commitText("Hello", 1); ic.commitText("!", 1);
รองรับการเขียนข้อความก่อนยืนยัน
หาก IME คาดคะเนข้อความหรือต้องใช้หลายขั้นตอนในการเขียนสัญลักษณ์หรือคำ คุณสามารถแสดงความคืบหน้าในช่องข้อความจนกว่าผู้ใช้จะเขียนคำเสร็จ แล้วจึงแทนที่ข้อความที่เขียนไม่เสร็จด้วยข้อความที่เขียนเสร็จแล้ว คุณสามารถจัดรูปแบบข้อความได้โดยการเพิ่มแท็ก
span เมื่อส่งข้อความไปยัง
setComposingText()
ข้อมูลโค้ดต่อไปนี้แสดงวิธีแสดงความคืบหน้าในช่องข้อความ
Kotlin
currentInputConnection.also { ic: InputConnection -> ic.setComposingText("Composi", 1) ic.setComposingText("Composin", 1) ic.commitText("Composing ", 1) }
Java
InputConnection ic = getCurrentInputConnection(); ic.setComposingText("Composi", 1); ic.setComposingText("Composin", 1); ic.commitText("Composing ", 1);
สกัดกั้นเหตุการณ์สำคัญของฮาร์ดแวร์
แม้ว่าหน้าต่างวิธีการป้อนข้อมูลจะไม่มีโฟกัสที่ชัดเจน แต่จะได้รับเหตุการณ์คีย์ฮาร์ดแวร์ก่อน และสามารถใช้หรือส่งต่อเหตุการณ์ไปยังแอปพลิเคชันได้ เช่น คุณอาจต้องการ ใช้ปุ่มลูกศรเพื่อไปยังส่วนต่างๆ ใน UI สำหรับการเลือกคำที่ต้องการในระหว่างการเขียน นอกจากนี้ คุณอาจต้องดักจับปุ่มย้อนกลับเพื่อปิดกล่องโต้ตอบที่มาจากหน้าต่างของวิธีการป้อนข้อมูล
หากต้องการสกัดกั้นปุ่มฮาร์ดแวร์ ให้ลบล้าง
onKeyDown()
และ
onKeyUp()
เรียกใช้เมธอด super() สำหรับคีย์ที่คุณไม่ต้องการจัดการด้วยตนเอง
สร้างประเภท IME ย่อย
ประเภทข้อมูลย่อยช่วยให้ IME แสดงโหมดการป้อนข้อมูลและภาษาหลายภาษาที่ IME รองรับ ประเภทย่อยสามารถ แสดงถึงสิ่งต่อไปนี้
- ภาษา เช่น en_US หรือ fr_FR
- โหมดการป้อนข้อมูล เช่น เสียง แป้นพิมพ์ หรือลายมือ
- รูปแบบการป้อนข้อมูล แบบฟอร์ม หรือพร็อพเพอร์ตี้อื่นๆ ที่เฉพาะเจาะจงสำหรับ IME เช่น รูปแบบแป้นพิมพ์ 10 ปุ่มหรือ QWERTY
โหมดอาจเป็นข้อความใดก็ได้ เช่น "แป้นพิมพ์" หรือ "เสียง" ประเภทย่อยยังแสดงชุดค่าผสม ของค่าเหล่านี้ได้ด้วย
ระบบจะใช้ข้อมูลประเภทย่อยสำหรับกล่องโต้ตอบตัวสลับ IME ที่พร้อมใช้งานจากแถบการแจ้งเตือน และสำหรับการตั้งค่า IME นอกจากนี้ ข้อมูลยังช่วยให้เฟรมเวิร์กแสดง IME ประเภทย่อยที่เฉพาะเจาะจงได้โดยตรง เมื่อสร้าง IME ให้ใช้ฟีเจอร์ประเภทย่อย เนื่องจากจะช่วยให้ผู้ใช้ระบุและ สลับระหว่างภาษาและโหมด IME ต่างๆ ได้
กำหนดประเภทย่อยในไฟล์ทรัพยากร XML ของวิธีการป้อนข้อมูลโดยใช้แท็ก
<subtype> ข้อมูลโค้ดต่อไปนี้กำหนด IME ที่มี 2 ประเภทย่อย ได้แก่ ประเภทย่อยของแป้นพิมพ์สำหรับภาษาอังกฤษแบบสหรัฐอเมริกา และประเภทย่อยของแป้นพิมพ์อีกอันสำหรับภาษาฝรั่งเศสในประเทศฝรั่งเศส
<input-method xmlns:android="http://schemas.android.com/apk/res/android" android:settingsActivity="com.example.softkeyboard.Settings" android:icon="@drawable/ime_icon"> <subtype android:name="@string/display_name_english_keyboard_ime" android:icon="@drawable/subtype_icon_english_keyboard_ime" android:languageTag="en-US" android:imeSubtypeMode="keyboard" android:imeSubtypeExtraValue="somePrivateOption=true" /> <subtype android:name="@string/display_name_french_keyboard_ime" android:icon="@drawable/subtype_icon_french_keyboard_ime" android:languageTag="fr-FR" android:imeSubtypeMode="keyboard" android:imeSubtypeExtraValue="someVariable=30,someInternalOption=false" /> <subtype android:name="@string/display_name_german_keyboard_ime" ... /> </input-method>
หากต้องการให้ระบบติดป้ายกำกับประเภทย่อยอย่างถูกต้องใน UI ให้ใช้ `%s` เพื่อรับป้ายกำกับประเภทย่อยที่ เหมือนกับป้ายกำกับภาษาของประเภทย่อย ซึ่งจะแสดงให้เห็นในข้อมูลโค้ด 2 รายการถัดไป ข้อมูลโค้ดแรกแสดงส่วนหนึ่งของไฟล์ XML ของวิธีการป้อนข้อมูล
<subtype android:label="@string/label_subtype_generic" android:imeSubtypeLocale="en_US" android:icon="@drawable/icon_en_us" android:imeSubtypeMode="keyboard" />
ข้อมูลโค้ดถัดไปเป็นส่วนหนึ่งของไฟล์ strings.xml ของ IME กำหนดทรัพยากรสตริง
label_subtype_generic ซึ่งใช้โดยคำจำกัดความ UI ของวิธีการป้อนข้อมูลเพื่อตั้งค่าป้ายกำกับของ
ประเภทข้อมูลย่อย ดังนี้
<string name="label_subtype_generic">%s</string>การตั้งค่านี้จะทำให้ชื่อที่แสดงของประเภทย่อยตรงกับการตั้งค่าภาษา เช่น ในภาษาอังกฤษ ทุกภาษา ชื่อที่แสดงจะเป็น "English (United States)"
เลือกประเภท IME ย่อยจากแถบการแจ้งเตือน
ระบบ Android จะจัดการประเภทข้อมูลย่อยทั้งหมดที่ IME ทุกตัวแสดง ระบบจะถือว่า IME ย่อยเป็นโหมดของ IME ที่ IME ย่อยนั้นสังกัดอยู่ ผู้ใช้สามารถไปยังเมนูของ IME ประเภทต่างๆ ที่พร้อมใช้งานได้จากแถบการแจ้งเตือนหรือแอปการตั้งค่า ดังที่แสดงในรูปต่อไปนี้
เลือกประเภท IME ย่อยจากการตั้งค่าระบบ
นอกจากนี้ ผู้ใช้ยังควบคุมวิธีใช้ประเภทอินพุตย่อยได้ในแผงการตั้งค่าภาษาและการป้อนข้อมูล ในการตั้งค่าระบบ
สลับระหว่าง IME ที่มีหลายรูปแบบ
คุณอนุญาตให้ผู้ใช้สลับระหว่างประเภท IME ย่อยได้อย่างง่ายดายโดยระบุปุ่มสลับ เช่น ไอคอนภาษาที่มีรูปร่างเหมือนลูกโลกบนแป้นพิมพ์ ซึ่งจะช่วยปรับปรุงความสามารถในการใช้งานแป้นพิมพ์และอำนวยความสะดวก ให้แก่ผู้ใช้ หากต้องการเปิดใช้การสลับนี้ ให้ทำตามขั้นตอนต่อไปนี้
- ประกาศ
supportsSwitchingToNextInputMethod = "true"ในไฟล์ทรัพยากร XML ของวิธีการป้อนข้อมูล การประกาศของคุณต้องมีลักษณะคล้ายกับข้อมูลโค้ดต่อไปนี้<input-method xmlns:android="http://schemas.android.com/apk/res/android" android:settingsActivity="com.example.softkeyboard.Settings" android:icon="@drawable/ime_icon" android:supportsSwitchingToNextInputMethod="true">
- เรียกใช้เมธอด
shouldOfferSwitchingToNextInputMethod() - หากเมธอดแสดงผลเป็นจริง ให้แสดงแป้นสลับ
- เมื่อผู้ใช้แตะคีย์การสลับ ให้เรียกใช้
switchToNextInputMethod()โดยส่งค่าเป็น false ค่า false จะบอกให้ระบบถือว่าประเภทข้อมูลย่อยทั้งหมดเท่ากัน ไม่ว่าจะเป็นของ IME ใดก็ตาม การระบุค่าเป็น "จริง" จะทำให้ระบบหมุนเวียนผ่านประเภทย่อยใน IME ปัจจุบัน
ข้อควรพิจารณาทั่วไปเกี่ยวกับ IME
สิ่งอื่นๆ ที่ควรพิจารณาเมื่อใช้ IME มีดังนี้
- มอบวิธีให้ผู้ใช้ตั้งค่าตัวเลือกจาก UI ของ IME โดยตรง
- จัดหาวิธีให้ผู้ใช้เปลี่ยนไปใช้ IME อื่นโดยตรงจาก UI ของวิธีการป้อนข้อมูล เนื่องจากอาจมีการติดตั้ง IME หลายรายการในอุปกรณ์
- เรียก UI ของ IME ขึ้นมาอย่างรวดเร็ว โหลดล่วงหน้าหรือโหลดตามต้องการสำหรับทรัพยากรขนาดใหญ่เพื่อให้ผู้ใช้ เห็น IME ทันทีที่แตะช่องข้อความ แคชทรัพยากรและมุมมองสำหรับการเรียกใช้ วิธีการป้อนข้อมูลในครั้งต่อๆ ไป
- ปล่อยการจัดสรรหน่วยความจำขนาดใหญ่ทันทีหลังจากซ่อนหน้าต่างวิธีการป้อนข้อมูล เพื่อให้แอปพลิเคชันมีหน่วยความจำเพียงพอที่จะเรียกใช้ ใช้ข้อความที่ล่าช้าเพื่อปล่อยทรัพยากร หากซ่อน IME เป็นเวลา 2-3 วินาที
- ตรวจสอบว่าผู้ใช้ป้อนอักขระได้มากที่สุดเท่าที่จะเป็นไปได้สำหรับภาษาหรือภาษา ที่เชื่อมโยงกับ IME ผู้ใช้อาจใช้อักขระวรรคตอนในรหัสผ่านหรือชื่อผู้ใช้ ดังนั้น IME ของคุณต้องมีอักขระที่แตกต่างกันมากมายเพื่อให้ผู้ใช้ป้อนรหัสผ่านและเข้าถึง อุปกรณ์ได้