เอดิเตอร์วิธีการป้อนข้อมูล (IME) คือการควบคุมของผู้ใช้ที่ช่วยให้ผู้ใช้ป้อนข้อความได้ Android มีเฟรมเวิร์กวิธีการป้อนข้อมูลที่ขยายได้ ซึ่งช่วยให้แอปพลิเคชันมีวิธีการป้อนข้อมูลทางเลือกให้ผู้ใช้ เช่น แป้นพิมพ์บนหน้าจอหรือการป้อนข้อมูลด้วยเสียงพูด หลังจากติดตั้ง IME แล้ว ผู้ใช้สามารถเลือก 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
Input Method API
คลาสเฉพาะสำหรับ IME จะอยู่ในแพ็กเกจ android.inputmethodservice และ android.view.inputmethod คลาส KeyEvent มีความสำคัญต่อการจัดการอักขระในแป้นพิมพ์
ส่วนกลางของ IME คือคอมโพเนนต์บริการ ซึ่งเป็นคลาสที่ขยาย InputMethodService นอกจากจะใช้การใช้งานวงจรการใช้งานบริการตามปกติแล้ว คลาสนี้ยังมีฟังก์ชันเรียกกลับสำหรับแสดง 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 หากไม่ต้องการแสดงสิ่งใด การตอบกลับเป็นค่า 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 สำหรับภาษาละตินจะแสดงa แป้นตัวเลขสำหรับช่องประเภทนี้
TYPE_CLASS_DATETIME- ช่องข้อความสำหรับป้อนวันที่และเวลา
TYPE_CLASS_PHONE- ช่องข้อความสำหรับป้อนหมายเลขโทรศัพท์
TYPE_CLASS_TEXT- ช่องข้อความสำหรับป้อนอักขระที่รองรับ
ค่าคงที่เหล่านี้อธิบายไว้โดยละเอียดในเอกสารอ้างอิงสำหรับ InputType
ช่อง inputType อาจมีบิตอื่นๆ ที่ระบุตัวแปรของช่องข้อความประเภทนั้นๆ เช่น
TYPE_TEXT_VARIATION_PASSWORD- ตัวแปรของ
TYPE_CLASS_TEXTสำหรับป้อนรหัสผ่าน Input Method จะแสดง อักขระพิเศษแทนข้อความจริง TYPE_TEXT_VARIATION_URI- ตัวแปรของ
TYPE_CLASS_TEXTสำหรับป้อน URL ของเว็บและ Uniform Resource Identifiers (URI) อื่นๆ TYPE_TEXT_FLAG_AUTO_COMPLETE- ตัวแปรของ
TYPE_CLASS_TEXTสำหรับป้อนข้อความที่แอปพลิเคชัน ป้อนข้อความอัตโนมัติจากพจนานุกรม การค้นหา หรือสิ่งอำนวยความสะดวกอื่นๆ
มาสก์ inputType ด้วยค่าคงที่ที่เหมาะสมเมื่อทดสอบตัวแปรเหล่านี้ ค่าคงที่มาสก์ที่ใช้ได้จะแสดงอยู่ในเอกสารอ้างอิงสำหรับ InputType
ส่งข้อความไปยังแอปพลิเคชัน
เมื่อผู้ใช้ป้อนข้อความด้วย IME ของคุณ คุณสามารถส่งข้อความไปยังแอปพลิเคชันได้โดยส่งเหตุการณ์สำคัญแต่ละรายการหรือแก้ไขข้อความรอบๆ เคอร์เซอร์ในช่องข้อความของแอปพลิเคชัน ไม่ว่าจะกรณีใดก็ตาม ให้ใช้อินสแตนซ์ของ InputConnection เพื่อส่งข้อความ หากต้องการรับอินสแตนซ์นี้ ให้เรียก InputMethodService.getCurrentInputConnection()
แก้ไขข้อความรอบๆ เคอร์เซอร์
เมื่อจัดการการแก้ไขข้อความที่มีอยู่ เมธอดที่มีประโยชน์บางอย่างใน BaseInputConnection มีดังนี้
-
getTextBeforeCursor() - แสดงผล
CharSequenceที่มีจำนวนอักขระที่ขอไว้ก่อนตำแหน่งเคอร์เซอร์ปัจจุบัน -
getTextAfterCursor() - แสดงผล
CharSequenceที่มีจำนวนอักขระที่ขอไว้หลังตำแหน่งเคอร์เซอร์ปัจจุบัน -
deleteSurroundingText() - ลบจำนวนอักขระที่ระบุก่อนและหลังตำแหน่งเคอร์เซอร์ปัจจุบัน
-
commitText() - ส่ง
CharSequenceไปยังช่องข้อความและตั้งค่าตำแหน่งเคอร์เซอร์ใหม่
ตัวอย่างเช่น ข้อมูลโค้ดต่อไปนี้แสดงวิธีแทนที่อักขระ 4 ตัวทางด้านซ้ายของเคอร์เซอร์ด้วยข้อความ "Hello!"
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 แสดงโหมดป้อนข้อมูลและภาษาต่างๆ ที่ IME รองรับ ประเภทย่อยสามารถแสดงถึงสิ่งต่อไปนี้
- ภาษา เช่น en_US หรือ fr_FR
- โหมดอินพุต เช่น เสียง แป้นพิมพ์ หรือการเขียนด้วยลายมือ
- รูปแบบอินพุต รูปแบบ หรือพร็อพเพอร์ตี้อื่นๆ ที่เฉพาะเจาะจงสำหรับ IME เช่น เลย์เอาต์แป้นพิมพ์ 10 ปุ่มหรือ QWERTY แป้นพิมพ์
โหมดอาจเป็นข้อความใดก็ได้ เช่น "แป้นพิมพ์" หรือ "เสียง" นอกจากนี้ ประเภทย่อยยังแสดงการผสมผสานของสิ่งเหล่านี้ได้ด้วย
ระบบจะใช้ข้อมูลประเภทย่อยสำหรับกล่องโต้ตอบตัวสลับ IME ที่มีให้ใช้งานจากแถบการแจ้งเตือนและสำหรับการตั้งค่า IME นอกจากนี้ ข้อมูลยังช่วยให้เฟรมเวิร์กแสดงประเภท IME ย่อยที่เฉพาะเจาะจงได้โดยตรง เมื่อสร้าง IME ให้ใช้ฟีเจอร์ประเภทย่อย เนื่องจากฟีเจอร์นี้ช่วยให้ผู้ใช้ระบุและสลับระหว่างภาษาและโหมดต่างๆ ของ IME ได้
กำหนดประเภท IME ย่อยในไฟล์ทรัพยากร XML ของ Input Method โดยใช้
<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>
ใช้ `%s` เพื่อให้แน่ใจว่าประเภทย่อยมีป้ายกำกับที่ถูกต้องใน UI โดยป้ายกำกับนี้จะเหมือนกับป้ายกำกับภาษาของประเภทย่อย ซึ่งแสดงไว้ในข้อมูลโค้ด 2 รายการถัดไป ข้อมูลโค้ดแรกแสดงส่วนหนึ่งของไฟล์ XML ของ Input Method
<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>การตั้งค่านี้จะทำให้ชื่อที่แสดงของประเภท IME ย่อยตรงกับการตั้งค่าภาษา ตัวอย่างเช่น ในภาษาอังกฤษ ชื่อที่แสดงจะเป็น "English (United States)"
เลือกประเภท IME ย่อยจากแถบการแจ้งเตือน
ระบบ Android จะจัดการประเภท IME ย่อยทั้งหมดที่ IME ทั้งหมดแสดง ระบบจะถือว่าประเภท IME ย่อยเป็นโหมดของ IME ที่ประเภท IME ย่อยนั้นๆ เป็นของ ผู้ใช้สามารถไปยังเมนูประเภท IME ย่อยที่มีให้ใช้งานได้จากแถบการแจ้งเตือนหรือแอปการตั้งค่า ดังที่แสดงในรูปต่อไปนี้
เลือกประเภท IME ย่อยจากการตั้งค่าระบบ
ผู้ใช้ยังควบคุมวิธีใช้ประเภทย่อยได้จากแผงการตั้งค่าภาษาและอินพุต ในการตั้งค่าระบบ
สลับระหว่างประเภท IME ย่อย
คุณสามารถให้ผู้ใช้สลับระหว่างประเภท IME ย่อยได้อย่างง่ายดายโดยระบุคีย์การสลับ เช่น ไอคอนภาษาที่มีรูปร่างเป็นลูกโลกบนแป้นพิมพ์ ซึ่งจะช่วยปรับปรุงการใช้งานแป้นพิมพ์และอำนวยความสะดวกให้ผู้ใช้ หากต้องการเปิดใช้การสลับนี้ ให้ทำตามขั้นตอนต่อไปนี้
- ประกาศ
supportsSwitchingToNextInputMethod = "true"ในไฟล์ทรัพยากร XML ของ Input Method การประกาศของคุณต้องมีลักษณะคล้ายกับข้อมูลโค้ดต่อไปนี้<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(), โดยส่งค่าเป็น "เท็จ" ค่า "เท็จ" จะบอกให้ระบบถือว่าประเภท IME ย่อยทั้งหมดเท่ากัน ไม่ว่าประเภท IME ย่อยนั้นๆ จะเป็นของ IME ใดก็ตาม การระบุค่าเป็น "จริง" จะกำหนดให้ระบบวนรอบประเภทย่อยใน IME ปัจจุบัน
ข้อควรพิจารณาโดยทั่วไปเกี่ยวกับ IME
ต่อไปนี้คือสิ่งอื่นๆ ที่ควรพิจารณาเมื่อใช้ IME
- ระบุวิธีให้ผู้ใช้ตั้งค่าตัวเลือกได้โดยตรงจาก UI ของ IME
- ระบุวิธีให้ผู้ใช้สลับไปใช้ IME อื่นได้โดยตรงจาก UI ของวิธีการป้อนข้อมูล เนื่องจากอาจมีการติดตั้ง IME หลายรายการในอุปกรณ์
- แสดง UI ของ IME อย่างรวดเร็ว โหลดทรัพยากรขนาดใหญ่ล่วงหน้าหรือโหลดตามความต้องการเพื่อให้ผู้ใช้ เห็น IME ทันทีที่แตะช่องข้อความ แคชทรัพยากรและมุมมองสำหรับการเรียกใช้ Input Method ในครั้งต่อๆ ไป
- ปล่อยการจัดสรรหน่วยความจำขนาดใหญ่ทันทีหลังจากซ่อนหน้าต่างวิธีการป้อนข้อมูล เพื่อให้แอปพลิเคชันมีหน่วยความจำเพียงพอที่จะทำงาน ใช้ข้อความที่ล่าช้าเพื่อปล่อยทรัพยากร หากซ่อน IME ไว้ 2-3 วินาที
- ตรวจสอบว่าผู้ใช้ป้อนอักขระได้มากที่สุดเท่าที่จะเป็นไปได้สำหรับภาษาหรือภาษาที่เชื่อมโยงกับ IME ผู้ใช้อาจใช้วรรคตอนในรหัสผ่านหรือชื่อผู้ใช้ ดังนั้น IME ของคุณต้องมีอักขระต่างๆ มากมายเพื่อให้ผู้ใช้ป้อนรหัสผ่านและเข้าถึง อุปกรณ์ได้