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

เครื่องมือแก้ไขวิธีการป้อนข้อมูล (IME) คือตัวควบคุมของผู้ใช้ที่ให้ผู้ใช้ป้อนข้อความได้ Android มอบ เฟรมเวิร์กวิธีการป้อนข้อมูลที่ขยายได้ ซึ่งช่วยให้แอปพลิเคชันสามารถมอบวิธีการป้อนข้อมูลอื่นๆ ให้แก่ผู้ใช้ เช่น แป้นพิมพ์บนหน้าจอหรือการป้อนข้อมูลด้วยเสียงพูด หลังจากติดตั้ง 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 และการสื่อสารกับ IME ฟิลด์ป้อนข้อมูล

ชั้นเรียนต่อไปนี้ก็มีความสำคัญเช่นกัน

BaseInputConnection
กำหนดช่องทางการสื่อสารจาก วันที่ InputMethod กลับไปยังแอปพลิเคชันที่ได้รับอินพุต คุณใช้หน้านี้เพื่ออ่านข้อความรอบๆ เคอร์เซอร์ คอมมิตข้อความลงในกล่องข้อความ และส่งเหตุการณ์สำคัญที่เป็นข้อมูลดิบไปยังแอปพลิเคชัน แอปพลิเคชันต้องขยายคลาสนี้แทนที่จะใช้อินเทอร์เฟซพื้นฐาน InputConnection
KeyboardView
ส่วนขยายของ View ที่ แสดงผลแป้นพิมพ์และตอบสนองต่อเหตุการณ์การป้อนข้อมูลของผู้ใช้ รูปแบบแป้นพิมพ์จะกำหนดโดย อินสแตนซ์ของ Keyboard, ที่คุณกำหนดในไฟล์ XML ได้

ออกแบบ UI วิธีการป้อนข้อมูล

มีองค์ประกอบภาพหลัก 2 ส่วนสำหรับ IME ได้แก่ มุมมองอินพุตและ ตัวเลือก คุณต้องติดตั้งเฉพาะองค์ประกอบที่เกี่ยวข้องกับ วิธีการป้อนข้อมูลที่คุณออกแบบ

มุมมองอินพุต

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

จัดการอินพุตประเภทต่างๆ

ช่องข้อความ Android ให้คุณตั้งค่าประเภทอินพุตเฉพาะ เช่น ข้อความรูปแบบอิสระ, ตัวเลข, URL ที่อยู่อีเมล และสตริงการค้นหา เมื่อคุณใช้ IME ใหม่ ให้ตรวจหาประเภทอินพุตของแต่ละ 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 สำหรับป้อนรหัสผ่าน วิธีการป้อนข้อมูลจะปรากฏขึ้น Dingbats แทนข้อความจริง
TYPE_TEXT_VARIATION_URI
รูปแบบหนึ่งของ TYPE_CLASS_TEXT สำหรับป้อน URL ของเว็บและ Uniform Resource อื่นๆ ตัวระบุ (URL)
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 (สหรัฐอเมริกา)"

เลือกประเภทย่อยของ IME จากแถบการแจ้งเตือน

ระบบ Android จัดการประเภทย่อยทั้งหมดที่ 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(), การส่งค่าเท็จ ค่าเท็จจะบอกระบบให้ดำเนินการกับประเภทย่อยทั้งหมดอย่างเท่าเทียมกัน โดยไม่คำนึงถึงค่า หมายเลข IME ของอุปกรณ์ การระบุ "จริง" ต้องการให้ระบบหมุนเวียนผ่านประเภทย่อยใน IME ปัจจุบัน

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

ต่อไปนี้คือสิ่งอื่นๆ ที่ควรพิจารณาเมื่อคุณใช้ IME

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