ตัวแก้ไขวิธีการป้อนข้อมูล (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 แสดงขึ้นเป็นครั้งแรก ระบบจะเรียกใช้ 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 ภาษาละตินมีให้สำหรับการป้อนข้อความในแพลตฟอร์ม 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 เพื่อเลือกคำที่แนะนำระหว่างการเขียน นอกจากนี้ คุณอาจต้องจับแป้น Back เพื่อปิดกล่องโต้ตอบที่มาจากหน้าต่างวิธีการป้อนข้อมูลด้วย
หากต้องการสกัดกั้นคีย์ฮาร์ดแวร์ ให้ลบล้าง
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()
โดยส่งค่าเท็จ ค่าเท็จจะบอกให้ระบบปฏิบัติกับประเภทย่อยทั้งหมดอย่างเท่าเทียมกัน ไม่ว่าประเภทย่อยเหล่านั้นจะอยู่ใน IME ใดก็ตาม การระบุค่า "จริง" จะทำให้ระบบวนดูประเภทย่อยใน IME ปัจจุบัน
ข้อควรพิจารณาทั่วไปเกี่ยวกับ IME
สิ่งที่ควรพิจารณาอื่นๆ เมื่อติดตั้งใช้งาน IME มีดังนี้
- ระบุวิธีให้ผู้ใช้ตั้งค่าตัวเลือกได้โดยตรงจาก UI ของ IME
- ระบุวิธีให้ผู้ใช้เปลี่ยนไปใช้ IME อื่นได้โดยตรงจาก UI ของวิธีการป้อนข้อมูล เนื่องจากอาจมีการติดตั้ง IME หลายรายการในอุปกรณ์
- แสดง UI ของ IME อย่างรวดเร็ว โหลดทรัพยากรขนาดใหญ่ไว้ล่วงหน้าหรือโหลดตามคําขอเพื่อให้ผู้ใช้เห็น IME ทันทีที่แตะช่องข้อความ แคชทรัพยากรและมุมมองสำหรับการเรียกใช้วิธีการป้อนข้อมูลในภายหลัง
- ปล่อยการจัดสรรหน่วยความจำขนาดใหญ่ทันทีหลังจากที่หน้าต่างวิธีการป้อนข้อมูลซ่อนอยู่ เพื่อให้แอปพลิเคชันมีหน่วยความจำเพียงพอที่จะทำงาน ใช้ข้อความที่เลื่อนเวลาไว้เพื่อปล่อยทรัพยากรหาก IME ซ่อนอยู่เป็นเวลา 2-3 วินาที
- ตรวจสอบว่าผู้ใช้ป้อนอักขระได้มากที่สุดเท่าที่จะเป็นไปได้สำหรับภาษาหรือภาษาท้องถิ่นที่เชื่อมโยงกับ IME ผู้ใช้อาจใช้เครื่องหมายวรรคตอนในรหัสผ่านหรือชื่อผู้ใช้ ดังนั้น IME ของคุณจึงต้องมีอักขระหลายแบบเพื่อให้ผู้ใช้ป้อนรหัสผ่านและเข้าถึงอุปกรณ์ได้