Android emulator ไม่ใช้การป้อนข้อมูลด้วยแป้นพิมพ์ - เครื่องมือ SDK rev 20


324

ฉันได้อัพเกรดเครื่องมือ SDK เป็นรุ่นที่ 20 (จาก 18) และตั้งแต่การอัพเกรดตัวจำลองดูเหมือนจะไม่ยอมรับอินพุตจากแป้นพิมพ์ของแล็ปท็อป แต่จะใช้เฉพาะแป้นพิมพ์ 'อ่อน' ของตัวจำลองเท่านั้น (ซึ่งจะปรากฏเมื่อโฟกัสอินพุตฟิลด์)

ฉันได้ลองติดตั้งเครื่องมือ SDK (และ SDK ทั้งหมดสำหรับเรื่องนั้น) ถอนการติดตั้งและติดตั้งปลั๊กอิน Eclipse Android ใหม่อุปกรณ์จำลองที่สร้างขึ้นใหม่ แต่ไม่มีสิ่งใดที่ดูเหมือนจะช่วยได้และมันทำให้ฉันเป็นบ้า สิ้นหวังที่จะเข้าสู่ระบบโดยใช้ trackpad ของแล็ปท็อป

มีใครพบปัญหานี้หรือไม่?


ผลข้างเคียงของสิ่งนี้ดูเหมือนว่าปุ่มค้นหาในอีมูเลเตอร์ไม่ได้ทำงานเช่นกัน โชคดีที่การแก้ไขแบบเดียวกันสำหรับแป้นพิมพ์ก็เป็นการแก้ไขปุ่มค้นหาเช่นกัน
bmaupin

ฉันยังพบว่าสำหรับแอพบางตัวฉันต้องไปที่Extended Controls-> Send keyboard shortcuts to->s/Emulator controls (default)/Virtual device/
snapfractalpop

คำตอบ:


468

ปรับปรุง

ตั้งแต่ SDK rev 21 ตัวจัดการอุปกรณ์ Android เสมือนมี UI ที่ได้รับการปรับปรุงซึ่งแก้ไขปัญหานี้ได้ ฉันได้เน้นการตั้งค่าการกำหนดค่าที่สำคัญบางอย่างด้านล่าง:

ป้อนคำอธิบายรูปภาพที่นี่

ถ้าคุณสังเกตเห็นว่านุ่ม (หน้าจอ-based) คีย์หลักBack, Homeและอื่น ๆ จะหายไปจากโปรแกรมจำลองการทำงานของคุณคุณสามารถตั้งค่าhw.mainKeys=noเพื่อให้พวกเขา

ป้อนคำอธิบายรูปภาพที่นี่

คำตอบเดิม

แม้ว่าเอกสารประกอบของนักพัฒนาซอฟต์แวร์บอกว่าการสนับสนุนแป้นพิมพ์เปิดใช้งานตามค่าเริ่มต้นแล้วดูเหมือนจะไม่เป็นเช่นนั้นใน SDK rev 20 ฉันเปิดใช้งานการสนับสนุนแป้นพิมพ์อย่างชัดเจนในไฟล์ config.ini ของอีมูเลเตอร์และทำงานได้!

เพิ่ม: hw.keyboard=yes

ถึง: ~/.android/avd/<emulator-device-name>.avd/config.ini

ในทำนองเดียวกันเพิ่มhw.dPad=yesหากคุณต้องการใช้ปุ่มลูกศรเพื่อสำรวจรายการแอปพลิเคชัน

การอ้างอิง: http://developer.android.com/tools/devices/managing-avds-cmdline.html#hardwareopts

บน Mac OS และ Linux คุณสามารถแก้ไขการกำหนดค่าตัวจำลองทั้งหมดของคุณด้วยคำสั่ง Terminal เดียว:

for f in ~/.android/avd/*.avd/config.ini; do echo 'hw.keyboard=yes' >> "$f"; done


ในบันทึกที่เกี่ยวข้องหากตัวจำลองแท็บเล็ตของคุณไม่มีปุ่ม BACK / HOME ลองเลือกWXGA800เป็นสกินในตัวในเครื่องมือแก้ไข AVD: ป้อนคำอธิบายรูปภาพที่นี่

หรือโดยการตั้งค่าสกินด้วยตนเองใน config.ini:

skin.name=WXGA800
skin.path=platforms/android-16/skins/WXGA800

(ตัวอย่างสำหรับ API 16)


1
ตามคำตอบอื่น ๆ ที่กล่าวถึงคุณสามารถใช้เครื่องมือ AVD Manager ได้เช่นกัน แต่ฉันพบข้อบกพร่องที่ป้องกันไม่ให้บันทึกการเปลี่ยนแปลงการกำหนดค่า
James Wald

มีการตั้งค่าระดับโลกที่จะมีผลต่อ AVD ที่มีอยู่ทั้งหมดของฉันหรือไม่? ฉันไม่ต้องการเปลี่ยนประมาณ 20 avd ที่มีอยู่
Hoang Tran

@ HoangTran ไม่มีการกำหนดค่าส่วนกลางอย่างไรก็ตามหากคุณใช้ Mac OS คุณสามารถใช้คำสั่ง Terminal ที่ฉันเพิ่มลงในคำตอบเพื่อแก้ไข AVD ที่มีอยู่ทั้งหมดในครั้งเดียว
James Wald

น่าเศร้าที่วิธีนี้ไม่ได้ผลสำหรับฉัน หลังจากรันคำสั่งแป้นพิมพ์ยังคงไม่ทำงานใน avd ของฉัน
Justin

1
การแก้ไขไฟล์ปรับแต่งใช้งานได้สำหรับฉัน แต่แปลกที่ฉันไม่เห็น UI ที่แสดงในภาพแม้ว่าจะมี SDK เวอร์ชัน 21
offby1 1

112

ได้รับการยืนยัน ฉันมีปัญหาเดียวกันหลังจากอัปเกรดเป็นเครื่องมือเวอร์ชัน 20 ฉันต้องแก้ไข AVD เพื่อเพิ่มตัวเลือกดังนี้:

  1. จาก Eclipse ไปที่ AVD Mananger
  2. เลือก AVD เฉพาะและคลิกที่แก้ไข
  3. ไปที่ส่วนของฮาร์ดแวร์คลิกที่ใหม่
  4. เลือกชื่อคุณสมบัติ: การสนับสนุนคีย์บอร์ด
  5. โดยค่าเริ่มต้นจะมีการเพิ่มด้วยค่า 'ไม่' เพียงคลิกที่คอลัมน์ค่าและเปลี่ยนเป็น 'ใช่'
  6. คลิกที่แก้ไข AVD อีกครั้ง

สิ่งนี้จะเพิ่มคุณสมบัติ hw.keyboard = ใช่ในไฟล์ config.ini สำหรับ AVD

คุณต้องตั้งค่า hw.mainKeys = ใช่


19
ตรวจสอบให้แน่ใจว่าคอลัมน์ค่าสูญเสียโฟกัสก่อนคลิกแก้ไข AVD มิฉะนั้นการเปลี่ยนแปลงเป็น 'ใช่' จะไม่ถูกบันทึก!
Nuthatch

1
สวัสดีฉันทำตามคำแนะนำด้านบน แต่ก็ยังไม่สามารถแทรกข้อความใด ๆ โดยใช้บอร์ดคีย์ของพีซี เมื่อฉันดับเบิลคลิกที่ AVD ที่อยู่ในรายการภายใต้ตัวจัดการ AVD ฉันพบว่าการแก้ไขสำเร็จตามที่ระบุว่า hw.keyboard: ใช่ ฉันพลาดอะไรไปรึเปล่า???
JibW

3
ฉันขอแนะนำสิ่งต่อไปนี้: ลบ AVD และสร้าง AVD ใหม่ที่สมบูรณ์ด้วยการรองรับคีย์บอร์ด
Romin

59

ใน Android Studio ให้เปิด AVD Manager (เครื่องมือ> Android> AVD Manager) แตะปุ่มแก้ไขของอีมูเลเตอร์: ป้อนคำอธิบายรูปภาพที่นี่

เลือก "แสดงการตั้งค่าขั้นสูง" ป้อนคำอธิบายรูปภาพที่นี่

ทำเครื่องหมาย "เปิดใช้งานการป้อนข้อมูลด้วยแป้นพิมพ์" ป้อนคำอธิบายรูปภาพที่นี่

คลิกเสร็จสิ้นแล้วเริ่มโปรแกรมจำลองการทำงาน


ทำงานให้ฉันหลังจากตั้งค่าอินพุตคีย์บอร์ด enablinh แต่สงสัยว่ามันหยุดทำงานด้วยตัวเองตั้งแต่แรก
Justcurious

3
เป็นเรื่องน่าผิดหวังอย่างยิ่งที่ช่องทำเครื่องหมายนี้จะไม่ทำเครื่องหมายตัวเองหลังจากอัปเดตอีมูเลเตอร์ทุกครั้ง :(
Misha Akopov

2
ในกรณีของฉันแป้นพิมพ์ถูกเปิดใช้งาน แต่ไม่ทำงานในโปรแกรมจำลอง การแก้ไขคือการปิดการใช้งานแป้นพิมพ์เริ่มต้นจำลองจำลองยุติการใช้งานแป้นพิมพ์
beroal

15

ดูใน AVD Manager เลือก AVD และคลิกในแก้ไข ในส่วนฮาร์ดแวร์: คลิกที่ "ใหม่" และค้นหา "การสนับสนุนแป้นพิมพ์" และเพิ่มด้วยปุ่มตกลงและตั้งค่าเป็น "ใช่" และบันทึกการเปลี่ยนแปลงด้วย "แก้ไข AVD"


สิ่งที่แปลกคือเมื่อฉันตั้งค่านี้เป็นใช่มันบังคับให้ค่ากลับเป็นไม่อยู่แล้วจะทดสอบด้วยอุปกรณ์ใหม่อีกครั้ง
epsilonpsi

ฉันชอบคำตอบนี้ การใช้ตัวจัดการ AVD เป็นโซลูชันที่น่าจดจำมากกว่าการเปลี่ยนไฟล์ config.ini
เซ

10

Google ต้องการให้นักพัฒนาปวดหัวมากขึ้น

ดังนั้นสิ่งที่คุณต้องทำตอนนี้คือแก้ไข AVD ของคุณและเพิ่ม "การสนับสนุนแป้นพิมพ์" ในส่วนฮาร์ดแวร์และเปลี่ยนค่าเป็น "ใช่"


1
ไม่ได้ผลสำหรับฉันค่าการสนับสนุนคีย์บอร์ด avd ของ "ใช่" ไม่ได้รับการบันทึกไว้ แต่จะคืนค่ากลับเป็น "ไม่"
Justin

จริงๆแล้ว Google ต้องการที่จะปรับปรุงสิ่งต่าง ๆ ขณะนี้อุปกรณ์ส่วนใหญ่ไม่มีคีย์บอร์ดฮาร์ดแวร์ดังนั้นค่าเริ่มต้นควรเป็นไม่มี / ปิดใช้งาน ใช่มันง่ายกว่าที่จะทำงานกับอีมูเลเตอร์ด้วยหนึ่ง แต่นั่นไม่ได้สะท้อนสภาพโลกแห่งความจริง วิธีที่ถูกต้องคือการทำให้ devs เปิดใช้งานโดยเฉพาะ
Charlie Collins


2

ในกรณีที่มีคนพบว่ามีประโยชน์

ฉันมีปัญหากับKEYCODE_DPAD_UPมันเป็นของ trackBall เพื่อแก้ปัญหานี้ให้เปลี่ยน avdfolder / config.ini hw.trackBall = ใช่แล้วกด DEL หรือ F6


2

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


0

ค้นหาโฟลเดอร์. android ที่ซ่อนอยู่ในโฟลเดอร์โฮมของผู้ใช้ของคุณ คุณอาจเปลี่ยนชื่อหรือลบโฟลเดอร์นี้สร้าง AVD ของคุณใหม่และเริ่มโปรแกรมจำลอง อาจเป็นไปได้ว่ามีไฟล์. ini ในโฟลเดอร์นั้นที่มีการตั้งค่าที่ munged


ใช่ฉันได้ลบ. android และไฟล์ avd เกินไป .. ไม่ได้ช่วย ขอบคุณสำหรับการป้อนข้อมูล
epsilonpsi

0

การสร้าง AVD ขึ้นใหม่ด้วยการตั้งค่า Hardware Keyboard + บูลีนเป็นจริงเป็นทางออกเดียวที่เหมาะกับฉัน อีกสองวิธีแก้ปัญหาหลัก (เทอร์มินัลหรือการแก้ไข AVD ที่มีอยู่ผ่าน GUI) ทำให้ซอฟต์แวร์ / โปรแกรมจำลองการทำงานขัดข้องใน Mac ของฉัน การสร้าง AVD ใหม่ทำให้คีย์บอร์ดทำงานได้ดี


0

นี่คือวิธีแก้ปัญหาบางอย่างที่ใช้งานได้จริงสำหรับฉันมันเป็นคำตอบเดียวกับคำตอบที่ได้รับความนิยมมากที่สุด - เพียงเพิ่ม hw.keyboard = ใช่ไปที่ config.ini แต่เนื่องจากมันไม่ได้ผลสำหรับฉัน

  1. เปลี่ยนชื่อ config.ini (ชื่อใด ๆ จะทำ) เป็น consssssfig.ini
  2. รีสตาร์ทเครื่องจำลอง (เห็นได้ชัดว่ามันไม่ได้เริ่ม)
  3. เปลี่ยนชื่อ config.ini อีกครั้ง
  4. (ฉันไม่แน่ใจว่าเกี่ยวข้องหรือไม่) ฉันได้เพิ่มพารามิเตอร์ใหม่นี้ (hw.keyboard = ใช่) ที่จุดเริ่มต้นของไฟล์ config.ini
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.