เครื่องมือแก้ไขวิธีการป้อนข้อมูล (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
API วิธีการป้อนข้อมูล
คุณจะพบคลาสที่เจาะจงสำหรับ IME ได้ในแพ็กเกจ
android.inputmethodservice
และ
android.view.inputmethod คลาส KeyEvent มีความสำคัญต่อการจัดการอักขระบนแป้นพิมพ์
ส่วนกลางของ IME คือคอมโพเนนต์บริการ ซึ่งเป็นคลาสที่ขยาย InputMethodService นอกเหนือจากการใช้ตลอดอายุการใช้งานของบริการตามปกติแล้ว คลาสนี้ยังมี Callback สำหรับการจัดเตรียม UI ของ IME, การจัดการข้อมูลที่ผู้ใช้ป้อน และการส่งข้อความไปยังช่องที่โฟกัสอยู่ โดยค่าเริ่มต้น คลาส InputMethodService จะให้การใช้งานส่วนใหญ่สำหรับการจัดการสถานะและการมองเห็นของ IME และการสื่อสารกับช่องป้อนข้อมูลปัจจุบัน
คลาสต่อไปนี้ก็มีความสำคัญเช่นกัน
BaseInputConnection-
กำหนดช่องทางการสื่อสารจาก
InputMethodกลับไปยังแอปพลิเคชันที่รับอินพุต คุณใช้แป้นพิมพ์เพื่ออ่านข้อความรอบๆ เคอร์เซอร์ ยืนยันข้อความในกล่องข้อความ และส่งเหตุการณ์การกดแป้นพิมพ์ดิบไปยังแอปพลิเคชัน แอปพลิเคชันต้องขยายคลาสนี้แทนการติดตั้งใช้งานอินเทอร์เฟซพื้นฐานInputConnection KeyboardView-
ส่วนขยายของ
Viewที่แสดงผลแป้นพิมพ์และตอบสนองต่อเหตุการณ์ที่เป็นอินพุตจากผู้ใช้ รูปแบบแป้นพิมพ์จะระบุโดยอินสแตนซ์ของKeyboardซึ่งคุณกำหนดได้ในไฟล์ XML
ออกแบบ UI ของวิธีการป้อนข้อมูล
องค์ประกอบภาพหลัก 2 อย่างสำหรับ IME ได้แก่ มุมมองอินพุตและมุมมองตัวเลือก คุณเพียงแค่ต้องติดตั้งใช้งานองค์ประกอบที่เกี่ยวข้องกับวิธีการป้อนข้อมูลที่คุณออกแบบ
มุมมองอินพุต
มุมมองการป้อนข้อมูลคือ UI ที่ผู้ใช้ป้อนข้อความในรูปแบบของการคลิกแป้น การเขียนด้วยลายมือ หรือท่าทางสัมผัส เมื่อแสดง IME เป็นครั้งแรก ระบบจะเรียกใช้ Callback 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 ภาษาละตินจะแสดงแป้นตัวเลขสำหรับช่องประเภทนี้
TYPE_CLASS_DATETIME- ช่องข้อความสำหรับป้อนวันที่และเวลา
TYPE_CLASS_PHONE- ช่องข้อความสำหรับป้อนหมายเลขโทรศัพท์
TYPE_CLASS_TEXT- ช่องข้อความสำหรับป้อนอักขระที่รองรับ
ค่าคงที่เหล่านี้อธิบายไว้อย่างละเอียดในเอกสารอ้างอิงสำหรับ InputType
ฟิลด์ inputType อาจมีบิตอื่นๆ ที่ระบุตัวแปรของประเภทฟิลด์ข้อความ เช่น
TYPE_TEXT_VARIATION_PASSWORD- ตัวแปรของ
TYPE_CLASS_TEXTสำหรับการป้อนรหัสผ่าน วิธีการป้อนข้อมูลจะแสดง Dingbat แทนข้อความจริง 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 ได้อย่างง่ายดายโดยระบุแป้นสลับ เช่น ไอคอนภาษารูปลูกโลกบนแป้นพิมพ์ ซึ่งจะช่วยปรับปรุงความสามารถในการใช้งานแป้นพิมพ์และเพิ่มความสะดวกให้แก่ผู้ใช้ หากต้องการเปิดใช้การสลับนี้ ให้ทำตามขั้นตอนต่อไปนี้
- ประกาศ
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 จะบอกให้ระบบปฏิบัติต่อประเภทย่อยทั้งหมดอย่างเท่าเทียมกัน ไม่ว่าจะเป็น IME ใดก็ตาม การระบุ "จริง" กำหนดให้ระบบต้องวนรอบประเภทย่อยใน IME ปัจจุบัน
ข้อควรพิจารณาทั่วไปเกี่ยวกับ IME
สิ่งอื่นๆ ที่ควรพิจารณาเมื่อใช้ IME มีดังนี้
- จัดเตรียมวิธีให้ผู้ใช้ตั้งค่าตัวเลือกได้โดยตรงจาก UI ของ IME
- จัดเตรียมวิธีให้ผู้ใช้เปลี่ยนไปใช้ IME อื่นได้โดยตรงจาก UI ของวิธีการป้อนข้อมูล เนื่องจากอาจมีการติดตั้ง IME หลายรายการในอุปกรณ์
- เปิด UI ของ IME อย่างรวดเร็ว โหลดทรัพยากรขนาดใหญ่ล่วงหน้าหรือโหลดตามต้องการเพื่อให้ผู้ใช้เห็น IME ทันทีที่แตะช่องข้อความ แคชทรัพยากรและมุมมองสำหรับการเรียกใช้เมธอดการป้อนข้อมูลในครั้งต่อๆ ไป
- ปล่อยการจัดสรรหน่วยความจำขนาดใหญ่ทันทีหลังจากที่หน้าต่างวิธีการป้อนข้อมูลถูกซ่อน เพื่อให้แอปพลิเคชันมีหน่วยความจำเพียงพอที่จะทำงาน ใช้ข้อความที่ล่าช้าเพื่อปล่อยทรัพยากรหาก IME ซ่อนอยู่เป็นเวลา 2-3 วินาที
- ตรวจสอบว่าผู้ใช้สามารถป้อนอักขระได้มากที่สุดเท่าที่จะเป็นไปได้สำหรับภาษาหรือภาษาถิ่นที่เชื่อมโยงกับ IME ผู้ใช้อาจใช้เครื่องหมายวรรคตอนในรหัสผ่านหรือชื่อผู้ใช้ ดังนั้น IME ของคุณจึงต้องมีอักขระที่หลากหลายเพื่อให้ผู้ใช้ป้อนรหัสผ่านและเข้าถึงอุปกรณ์ได้