สร้างวิธีการป้อนข้อมูล

ตัวแก้ไขวิธีการป้อนข้อมูล (IME) คือการควบคุมของผู้ใช้ที่ช่วยให้ผู้ใช้ป้อนข้อความได้ Android มี เฟรมเวิร์กวิธีการป้อนข้อมูลที่ขยายได้ซึ่งช่วยให้แอปพลิเคชันมีวิธีการป้อนข้อมูลสำรองให้ผู้ใช้ เช่น แป้นพิมพ์บนหน้าจอหรือการป้อนข้อมูลด้วยเสียง หลังจากติดตั้ง IME แล้ว ผู้ใช้จะเลือก IME จากการตั้งค่าระบบและใช้ในทั้งระบบได้ เปิดใช้ IME ได้ครั้งละ 1 รายการเท่านั้น

หากต้องการเพิ่ม IME ลงในระบบ Android ให้สร้างแอปพลิเคชัน Android ที่มีคลาสซึ่ง ขยาย InputMethodService นอกจากนี้ โดยปกติแล้วคุณจะสร้างกิจกรรม "การตั้งค่า" ที่ส่งตัวเลือกไปยังบริการ IME คุณ ยังกำหนด UI การตั้งค่าที่จะแสดงเป็นส่วนหนึ่งของการตั้งค่าระบบได้ด้วย

หน้านี้ครอบคลุมหัวข้อต่อไปนี้

หากยังไม่เคยใช้ IME ให้อ่านบทความเบื้องต้น วิธีการป้อนข้อมูลบนหน้าจอ ก่อน

วงจรการใช้งาน IME

แผนภาพต่อไปนี้อธิบายวงจรของ IME

รูปภาพแสดงวงจรของ IME
รูปที่ 1 วงจรการใช้งานของ 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 ละติน
รูปที่ 2 การป้อนข้อความด้วย IME ละติน

และนี่คืออินเทอร์เฟซที่ IME ละตินมีให้สำหรับแพลตฟอร์ม Android การป้อนตัวเลข:

รูปภาพแสดงการป้อนตัวเลขใน IME ละติน
รูปที่ 3 การป้อนตัวเลขด้วย IME ละติน

เมื่อช่องป้อนข้อมูลได้รับโฟกัสและ 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 Subtype

ประเภทย่อยช่วยให้ 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 ประเภทต่างๆ ที่พร้อมใช้งานได้จากแถบการแจ้งเตือนหรือแอปการตั้งค่า ดังที่แสดงในรูปต่อไปนี้

รูปภาพแสดงเมนูระบบภาษาและการป้อนข้อมูล
รูปที่ 4 เมนูระบบภาษาและการป้อนข้อมูล

เลือกประเภท IME ย่อยจากการตั้งค่าระบบ

นอกจากนี้ ผู้ใช้ยังควบคุมวิธีใช้ประเภทย่อยได้ในแผงการตั้งค่าภาษาและการป้อนข้อมูล ในการตั้งค่าระบบด้วย

รูปภาพที่แสดงเมนูการเลือกภาษา
รูปที่ 5 เมนูระบบภาษา

สลับระหว่าง IME ที่มีหลายประเภท

คุณสามารถช่วยให้ผู้ใช้สลับระหว่างประเภท IME ย่อยได้อย่างง่ายดายโดยระบุปุ่มสลับ เช่น ไอคอนภาษาที่มีรูปร่างเหมือนลูกโลกบนแป้นพิมพ์ ซึ่งจะช่วยปรับปรุงความสามารถในการใช้งานแป้นพิมพ์และอำนวยความสะดวก ให้แก่ผู้ใช้ หากต้องการเปิดใช้การสลับนี้ ให้ทำตามขั้นตอนต่อไปนี้

  1. ประกาศ 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">
  2. เรียกใช้เมธอด shouldOfferSwitchingToNextInputMethod()
  3. หากเมธอดแสดงผลเป็นจริง ให้แสดงปุ่มสลับ
  4. เมื่อผู้ใช้แตะปุ่มสลับ ระบบจะเรียก switchToNextInputMethod(), passing false ค่า false จะบอกให้ระบบถือว่าประเภทข้อมูลย่อยทั้งหมดเท่ากัน ไม่ว่าจะเป็นของ IME ใดก็ตาม การระบุค่าเป็น "จริง" จะทำให้ระบบหมุนเวียนผ่านประเภทย่อยใน IME ปัจจุบัน

ข้อควรพิจารณาทั่วไปเกี่ยวกับ IME

สิ่งอื่นๆ ที่ควรพิจารณาเมื่อใช้ IME มีดังนี้

  • มอบวิธีให้ผู้ใช้ตั้งค่าตัวเลือกจาก UI ของ IME โดยตรง
  • จัดหาวิธีให้ผู้ใช้เปลี่ยนไปใช้ IME อื่นโดยตรงจาก UI ของวิธีการป้อนข้อมูล เนื่องจากอาจมีการติดตั้ง IME หลายรายการในอุปกรณ์
  • เรียก UI ของ IME ขึ้นมาอย่างรวดเร็ว โหลดล่วงหน้าหรือโหลดตามต้องการสำหรับทรัพยากรขนาดใหญ่เพื่อให้ผู้ใช้ เห็น IME ทันทีที่แตะช่องข้อความ แคชทรัพยากรและมุมมองสำหรับการเรียกใช้ วิธีการป้อนข้อมูลในครั้งต่อๆ ไป
  • ปล่อยการจัดสรรหน่วยความจำขนาดใหญ่ทันทีหลังจากซ่อนหน้าต่างวิธีการป้อนข้อมูล เพื่อให้แอปพลิเคชันมีหน่วยความจำเพียงพอที่จะเรียกใช้ ใช้ข้อความที่ล่าช้าเพื่อปล่อยทรัพยากร หากซ่อน IME เป็นเวลา 2-3 วินาที
  • ตรวจสอบว่าผู้ใช้ป้อนอักขระสำหรับภาษาหรือภาษาและภูมิภาคที่เชื่อมโยงกับ IME ได้มากที่สุด ผู้ใช้อาจใช้อักขระวรรคตอนในรหัสผ่านหรือชื่อผู้ใช้ ดังนั้น IME ของคุณต้องมีอักขระที่แตกต่างกันมากมายเพื่อให้ผู้ใช้ป้อนรหัสผ่านและเข้าถึง อุปกรณ์ได้