ตัวแก้ไขวิธีการป้อนข้อมูล (IME) คือตัวควบคุมผู้ใช้ที่ช่วยให้ผู้ใช้ป้อนข้อความได้ Android มีเฟรมเวิร์กวิธีการป้อนข้อมูลที่ขยายได้ ซึ่งช่วยให้แอปพลิเคชันนำเสนอวิธีการป้อนข้อมูลอื่นๆ แก่ผู้ใช้ได้ เช่น แป้นพิมพ์บนหน้าจอหรือการป้อนข้อมูลด้วยเสียง หลังจากติดตั้ง IME แล้ว ผู้ใช้จะเลือก IME รายการใดรายการหนึ่งจากการตั้งค่าระบบและใช้ IME นั้นในทั้งระบบได้ คุณเปิดใช้ IME ได้ครั้งละ 1 รายการเท่านั้น
หากต้องการเพิ่ม IME ลงในระบบ Android ให้สร้างแอปพลิเคชัน Android ที่มีคลาสที่ extends 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 ของแอปพลิเคชันต้องประกาศบริการ ขอสิทธิ์ที่จำเป็น จัดเตรียมตัวกรองความตั้งใจที่ตรงกับการดำเนินการ 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
นอกจากการใช้วงจรบริการตามปกติแล้ว คลาสนี้ยังมีการเรียกกลับสำหรับแสดง UI ของ IME, จัดการการป้อนข้อมูลของผู้ใช้ และส่งข้อความไปยังช่องที่มีโฟกัส โดยค่าเริ่มต้น คลาส InputMethodService
จะจัดเตรียมการใช้งานส่วนใหญ่สำหรับจัดการสถานะและระดับการมองเห็นของ IME รวมถึงการสื่อสารกับช่องป้อนข้อมูลปัจจุบัน
คลาสต่อไปนี้ก็มีความสำคัญเช่นกัน
BaseInputConnection
-
กำหนดช่องทางการสื่อสารจาก
InputMethod
กลับไปยังแอปพลิเคชันที่กำลังรับอินพุต คุณใช้แป้นพิมพ์นี้เพื่ออ่านข้อความรอบๆ เคอร์เซอร์ ยืนยันข้อความไปยังกล่องข้อความ และส่งเหตุการณ์สำคัญที่เป็นข้อมูลดิบไปยังแอปพลิเคชันได้ แอปพลิเคชันต้องขยายคลาสนี้แทนการติดตั้งใช้งานอินเทอร์เฟซพื้นฐานInputConnection
KeyboardView
-
ส่วนขยายของ
View
ที่แสดงผลแป้นพิมพ์และตอบสนองต่อเหตุการณ์ที่เป็นอินพุตจากผู้ใช้ได้ รูปแบบแป้นพิมพ์จะกำหนดโดยอินสแตนซ์ของKeyboard
ที่คุณกำหนดในไฟล์ XML ได้
ออกแบบ UI ของวิธีการป้อนข้อมูล
องค์ประกอบภาพหลักของ IME มี 2 อย่าง ได้แก่ มุมมองอินพุตและมุมมองตัวเลือก คุณต้องใช้เฉพาะองค์ประกอบที่เกี่ยวข้องกับวิธีการป้อนข้อมูลที่คุณออกแบบเท่านั้น
มุมมองอินพุต
มุมมองการป้อนข้อมูลคือ 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 เป็นลักษณะการทำงานเริ่มต้น คุณจึงไม่ต้องใช้งานนี้หากไม่ได้ให้คำแนะนำ
ข้อควรพิจารณาเกี่ยวกับการออกแบบ UI
ส่วนนี้จะอธิบายข้อควรพิจารณาบางอย่างในการออกแบบ UI สำหรับ IME
จัดการหน้าจอหลายขนาด
UI สำหรับ IME ต้องปรับขนาดให้เหมาะกับหน้าจอขนาดต่างๆ และรองรับการวางแนวทั้งแนวนอนและแนวตั้ง ในโหมด IME แบบไม่เต็มหน้าจอ โปรดเว้นพื้นที่ให้แอปพลิเคชันจะแสดงช่องข้อความและบริบทที่เกี่ยวข้องเพื่อไม่ให้ IME ใช้งานหน้าจอเกินครึ่ง กรณีนี้จะไม่เป็นปัญหาในโหมด IME แบบเต็มหน้าจอ
จัดการอินพุตประเภทต่างๆ
ช่องข้อความ Android ให้คุณตั้งค่าประเภทอินพุตเฉพาะ เช่น ข้อความรูปแบบอิสระ, ตัวเลข, URL, อีเมล และสตริงการค้นหา เมื่อคุณใช้ IME ใหม่ ให้ตรวจหาประเภทอินพุตของแต่ละฟิลด์ และระบุอินเทอร์เฟซที่เหมาะสมสำหรับ 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>
การตั้งค่านี้จะทำให้ชื่อที่แสดงของประเภทย่อยตรงกับการตั้งค่าภาษา ตัวอย่างเช่น ในภาษาท้องถิ่นใดก็ได้ของอังกฤษ ชื่อที่แสดงจะเป็น "อังกฤษ (สหรัฐอเมริกา)"
เลือกประเภทย่อยของ 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 ของคุณจึงต้องมีอักขระที่แตกต่างกันจำนวนมากเพื่อให้ผู้ใช้ป้อนรหัสผ่านและเข้าถึงอุปกรณ์ได้