อุปกรณ์เสมือนจริงที่ทำงานอยู่แต่ละเครื่องจะมีคอนโซลที่ให้คุณค้นหาและควบคุมสภาพแวดล้อมของอุปกรณ์จำลองได้ เช่น คุณสามารถใช้คอนโซลเพื่อจัดการการเปลี่ยนเส้นทางพอร์ต ลักษณะเครือข่าย และเหตุการณ์ทางโทรศัพท์ขณะที่แอปทำงานในโปรแกรมจำลอง
คำสั่งต่อไปนี้กำหนดให้คุณต้องมีโปรแกรมจำลองที่ทำงานอยู่แล้ว ดูข้อมูลเพิ่มเติมเกี่ยวกับการเรียกใช้โปรแกรมจำลองได้ที่หัวข้อเรียกใช้แอปในโปรแกรมจำลองของ Android และเริ่มโปรแกรมจำลองจากบรรทัดคำสั่ง
เริ่มและหยุดเซสชันคอนโซล
หากต้องการเข้าถึงคอนโซลและป้อนคำสั่งจากหน้าต่างเทอร์มินัล ให้ใช้ Telnet เพื่อเชื่อมต่อกับพอร์ตคอนโซลและระบุโทเค็นการตรวจสอบสิทธิ์ ทุกครั้งที่คอนโซลแสดงข้อความ OK แสดงว่าพร้อมรับคำสั่งแล้ว ไม่มีพรอมต์ที่ใช้กันทั่วไป
วิธีเชื่อมต่อกับคอนโซลของอุปกรณ์เสมือนจริงที่ทำงานอยู่
เปิดหน้าต่างเทอร์มินัลแล้วป้อนคำสั่งต่อไปนี้
telnet localhost console-portชื่อหน้าต่างโปรแกรมจำลองจะแสดงหมายเลขพอร์ตคอนโซลเมื่อทำงานในหน้าต่างแยกต่างหาก แต่จะไม่แสดงเมื่อทำงานในหน้าต่างเครื่องมือ ตัวอย่างเช่น ชื่อหน้าต่างของโปรแกรมจำลองที่ใช้พอร์ตคอนโซล 5554 อาจเป็น Pixel8_API_34:5554 นอกจากนี้ คำสั่ง
adb devicesจะพิมพ์รายการอุปกรณ์เสมือนจริงที่ทำงานอยู่และหมายเลขพอร์ตคอนโซลของอุปกรณ์เหล่านั้น ดูข้อมูลเพิ่มเติมได้ที่ค้นหาอุปกรณ์หมายเหตุ: โปรแกรมจำลองจะคอยตรวจหาการเชื่อมต่อในพอร์ต 5554 ถึง 5585 และยอมรับการเชื่อมต่อจาก Localhost เท่านั้น
หลังจากคอนโซลแสดงข้อความ OK ให้ป้อนคําสั่ง
auth auth_tokenคุณต้องตรวจสอบสิทธิ์คอนโซลโปรแกรมจำลองก่อนจึงจะป้อนคำสั่งคอนโซลได้
auth_tokenต้องตรงกับเนื้อหาของไฟล์.emulator_console_auth_tokenในไดเรกทอรีหลักหากไม่มีไฟล์ดังกล่าว คำสั่ง
telnet localhost console-portจะสร้างไฟล์ซึ่งมีโทเค็นการตรวจสอบสิทธิ์ที่สร้างขึ้นแบบสุ่ม หากต้องการปิดใช้การตรวจสอบสิทธิ์ ให้ลบโทเค็นออกจากไฟล์.emulator_console_auth_tokenหรือสร้างไฟล์เปล่าหากไม่มีอยู่หลังจากเชื่อมต่อกับคอนโซลแล้ว ให้ป้อนคำสั่งคอนโซล
ป้อน
help,help commandหรือhelp-verboseเพื่อดูรายการคำสั่งคอนโซลและดูข้อมูลเกี่ยวกับคำสั่งที่เฉพาะเจาะจงหากต้องการออกจากเซสชันคอนโซล ให้ป้อน
quitหรือexit
ตัวอย่างเซสชันมีดังนี้
$ telnet localhost 5554
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Android Console: Authentication required
Android Console: type 'auth <auth_token>' to authenticate
Android Console: you can find your <auth_token> in
'/Users/me/.emulator_console_auth_token'
OK
auth 123456789ABCdefZ
Android Console: type 'help' for a list of commands
OK
help-verbose
Android console command help:
help|h|? Prints a list of commands
help-verbose Prints a list of commands with descriptions
ping Checks if the emulator is alive
automation Manages emulator automation
event Simulates hardware events
geo Geo-location commands
gsm GSM related commands
cdma CDMA related commands
crash Crashes the emulator instance
crash-on-exit Simulates crash on exit for the emulator instance
kill Terminates the emulator instance
restart Restarts the emulator instance
network Manages network settings (ethernet and cellular only)
power Power related commands
quit|exit Quits control session
redir Manages port redirections
sms SMS related commands
avd Controls virtual device execution
qemu QEMU-specific commands
sensor Manages emulator sensors
physics Manages physical model
finger Manages emulator finger print
debug Controls the emulator debug output tags
rotate Rotates the screen clockwise by 90 degrees
screenrecord Records the emulator's display
fold Folds the device
unfold Unfolds the device
multidisplay Configures the multi-display
nodraw turn on/off NoDraw mode. (experimental)
resize-display resize the display resolution to the preset size
virtualscene-image customize virtualscene image for virtulscene camera
proxy manage network proxy server settings
phonenumber set phone number for the device
try 'help <command>' for command-specific help
OK
exit
Connection closed by foreign host.
คำสั่งแบบ Fire-and-forget
หากไม่ต้องการให้เซสชันเปิดอยู่ ให้ใช้แป้นพิมพ์ลัด adb emu ซึ่งจะเรียกใช้คำสั่งและคืนค่าการควบคุมไปยัง Shell ที่เรียกใช้ทันที
adb emu command commandParameter
การเรียกใช้ด้วย adb emu จะเชื่อมต่อกับโปรแกรมจำลองที่พร้อมใช้งาน หากมีโปรแกรมจำลองหลายโปรแกรมทำงานพร้อมกัน คุณต้องส่งหมายเลขซีเรียลของโปรแกรมจำลองที่ต้องการกำหนดเป้าหมาย ดังนี้
adb -s emulator-serial emu command commandParameter
ข้อมูลอ้างอิงคำสั่งโปรแกรมจำลอง
รายการต่อไปนี้อธิบายคำสั่งคอนโซลของโปรแกรมจำลองพร้อมพารามิเตอร์และค่า
คำสั่งทั่วไป
avd {stop| start| status| name}ค้นหา ควบคุม และจัดการอุปกรณ์เสมือนจริง ดังนี้- stop: หยุดการทำงานของอุปกรณ์
- start: เริ่มการทำงานของอุปกรณ์
- status: ค้นหาสถานะของอุปกรณ์เสมือนจริง ซึ่งอาจเป็นกำลังทำงานหรือหยุดทำงาน
- name: ค้นหาชื่ออุปกรณ์เสมือนจริง
avd snapshot {list| save name| load name| delete name}บันทึกและกู้คืนสถานะอุปกรณ์ในสแนปชอต ดังนี้- list: แสดงรายการสแนปชอตที่บันทึกไว้ทั้งหมด
- save name: บันทึกสแนปชอตเป็นชื่อ
- load name: โหลดสแนปชอตที่มีชื่อ
- delete name: ลบสแนปชอตที่ระบุชื่อ
ตัวอย่างต่อไปนี้จะบันทึกสแนปชอตที่มีชื่อว่า
firstactivitysnapshotavd snapshot save firstactivitysnapshotfold: พับอุปกรณ์เพื่อแสดงการกำหนดค่าหน้าจอที่เล็กลง หากอุปกรณ์พับได้และกางออกอยู่
unfold: กางอุปกรณ์ออกเพื่อแสดงการกำหนดค่าหน้าจอที่ใหญ่ขึ้น หากอุปกรณ์เป็นแบบพับได้และพับอยู่
kill: สิ้นสุดการทำงานของอุปกรณ์เสมือนจริง
ping: ตรวจสอบว่าอุปกรณ์เสมือนจริงทำงานอยู่หรือไม่
rotate: หมุน AVD ทวนเข็มนาฬิกาทีละ 45 องศา
ทำให้โปรแกรมจำลองขัดข้อง
crash: ทำให้โปรแกรมจำลองขัดข้องระหว่างการเรียกใช้แอป
crash-on-exit: ทำให้โปรแกรมจำลองขัดข้องเมื่อแอปปิด
แก้ไขข้อบกพร่องของแท็ก
debug tags ...: เปิดหรือปิดใช้ข้อความแก้ไขข้อบกพร่องจากบางส่วนของโปรแกรมจำลอง พารามิเตอร์แท็กต้องเป็นค่าจากรายการแท็กการแก้ไขข้อบกพร่องที่ปรากฏขึ้นเมื่อคุณเรียกใช้
emulator -help-debug-tagsดูข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือก-help-debug-tagsได้ที่ตารางตัวเลือกที่ใช้กันโดยทั่วไป ตัวอย่างต่อไปนี้จะเปิดใช้แท็กวิทยุdebug radio
การเปลี่ยนเส้นทางพอร์ต
redir list: แสดงรายการการเปลี่ยนเส้นทางพอร์ตปัจจุบัน
redir add protocol:host-port:guest-portเพิ่มการเปลี่ยนเส้นทางพอร์ตใหม่ดังนี้- protocol: ต้องเป็น tcp หรือ udp
- host-port: หมายเลขพอร์ตที่จะเปิดในโฮสต์
- guest-port: หมายเลขพอร์ตที่จะกำหนดเส้นทางข้อมูลไปยังโปรแกรมจำลอง
redir del protocol:host-portลบการเปลี่ยนเส้นทางพอร์ต- protocol: ต้องเป็น tcp หรือ udp
- host-port: หมายเลขพอร์ตที่จะเปิดในโฮสต์
สถานที่ตั้งทางภูมิศาสตร์
ตั้งค่าสถานที่ตั้งทางภูมิศาสตร์ที่รายงานไปยังแอปที่ทำงานภายในโปรแกรมจำลองโดยส่งการแก้ไข GPS ไปยังโปรแกรมจำลอง
คุณสามารถออกคำสั่งเกี่ยวกับภูมิศาสตร์อย่างใดอย่างหนึ่งต่อไปนี้ได้ทันทีที่อุปกรณ์เสมือนจริงทำงาน โปรแกรมจำลองจะตั้งค่าตำแหน่งที่คุณป้อนโดยการสร้างผู้ให้บริการจำลองสถานที่ ผู้ให้บริการรายนี้จะตอบสนองต่อ Listener ตำแหน่งที่แอปตั้งค่าไว้และส่งตำแหน่งไปยัง LocationManager แอปใดก็ตามสามารถค้นหาเครื่องมือจัดการตำแหน่งเพื่อรับการแก้ไข GPS ปัจจุบันสำหรับอุปกรณ์จำลองได้โดยเรียกใช้ LocationManager.getLastKnownLocation("gps")
geo fix longitude latitude [altitude] [satellites] [velocity]: ส่งการแก้ไข GPS ไปยังโปรแกรมจำลอง ระบุลองจิจูดและละติจูดเป็นองศาทศนิยม ใช้ตัวเลขตั้งแต่ 1 ถึง 12 เพื่อระบุจำนวนดาวเทียมที่จะใช้ในการระบุตำแหน่ง และระบุระดับความสูงเป็นเมตรและความเร็วเป็นนอตgeo nmea sentence: ส่งประโยค NMEA 0183 ไปยังอุปกรณ์ที่จำลองเสมือนว่าส่งมาจากโมเด็ม GPS ที่จำลอง เริ่มต้นประโยคด้วย "$GP" ปัจจุบันระบบรองรับเฉพาะประโยค "$GPGGA" และ "$GPRCM" เท่านั้น ตัวอย่างต่อไปนี้คือประโยค GPGGA (ข้อมูลการแก้ไขระบบดาวเทียมนำร่อง) ที่รับเวลา ตำแหน่ง และข้อมูลการแก้ไขสำหรับเครื่องรับ GPSgeo nmea $GPGGA,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx
เหตุการณ์ฮาร์ดแวร์ปลอม
ระบบย่อยของเหตุการณ์ฮาร์ดแวร์ของคอนโซลโปรแกรมจำลองช่วยให้คุณจำลองการโต้ตอบทางกายภาพกับอุปกรณ์ได้แทบทุกอย่าง ซึ่งรวมถึงปุ่มจริง การแตะ/ท่าทางสัมผัสหน้าจอ แป้นหมุน อินพุตจอยสติ๊ก และสวิตช์ฮาร์ดแวร์
event types: แสดงรายการประเภทเหตุการณ์ปลอมทั้งหมด สำหรับเหตุการณ์ที่มีรหัส จำนวนรหัสจะแสดงอยู่ในวงเล็บทางด้านขวา ตัวอย่างเอาต์พุตevent types event <type> can be an integer or one of the following aliases: EV_SYN EV_KEY (405 code aliases) EV_REL (2 code aliases) EV_ABS (27 code aliases) EV_MSC EV_SW (4 code aliases) EV_LED EV_SND EV_REP EV_FF EV_PWR EV_FF_STATUS EV_MAX OKevent send types [types ...]: ส่งประเภทเหตุการณ์ปลอมอย่างน้อย 1 ประเภทevent codes type: แสดงรหัสเหตุการณ์สำหรับประเภทเหตุการณ์ปลอมที่ระบุevent send type[:code]:[value] [...]: ส่งเหตุการณ์ปลอมอย่างน้อย 1 รายการพร้อมรหัสและค่ารหัสที่ไม่บังคับ
EV_KEY — ข้อมูลอ้างอิงรหัสคีย์
ประเภทเหตุการณ์ EV_KEY ใช้เพื่อจำลองการกดและปล่อยปุ่ม ตารางต่อไปนี้จะแบ่งรายการรหัสคีย์ที่รองรับจำนวนมากออกเป็นหมวดหมู่ที่สมเหตุสมผล สำหรับรหัสคีย์แต่ละรายการ การส่งค่า 1 จะจำลองการกด ส่วนค่า 0 จะจำลองการปล่อย ค่า 2 หมายถึงการกดแป้นซ้ำ
ตารางย่อย ก: คีย์ระบบ Android
| รหัส | คำอธิบาย |
|---|---|
KEY_HOME |
ทริกเกอร์ปุ่มหน้าแรก |
KEY_BACK |
ทริกเกอร์ปุ่มย้อนกลับ |
KEY_MENU |
ปุ่มเมนู (รายการเพิ่มเติม) |
KEY_POWER |
ปุ่มเปิด/ปิด (กด/กดค้าง) |
KEY_VOLUMEUP |
ทริกเกอร์ปุ่มเพิ่มระดับเสียง |
KEY_VOLUMEDOWN |
ทริกเกอร์ปุ่มลดระดับเสียง |
KEY_CAMERA |
ปุ่มชัตเตอร์กล้องจริง |
KEY_FOCUS |
ชัตเตอร์โฟกัสอัตโนมัติของกล้อง |
KEY_SEARCH |
ทริกเกอร์ปุ่มค้นหา |
KEY_SLEEP |
ทริกเกอร์คำสั่งสลีป |
KEY_WAKEUP |
ทริกเกอร์คำสั่งปลุกระบบ |
KEY_NOTIFICATION |
เปิดลิ้นชักการแจ้งเตือน |
KEY_MUTE |
ปิดเสียงเอาต์พุตเสียงของระบบ |
KEY_MICMUTE |
ปิดเสียงอินพุตไมโครโฟน |
KEY_BRIGHTNESSDOWN |
ลดความสว่างของจอแสดงผล |
KEY_BRIGHTNESSUP |
เพิ่มความสว่างของจอแสดงผล |
KEY_PHONE |
เปิดแอปโทรศัพท์เริ่มต้น |
KEY_SEND |
ส่งหรือเริ่มโทรออก |
KEY_HEADSETHOOK |
Hook ชุดหูฟัง (รับสาย/วางสาย) |
KEY_SCREEN |
คำสั่งเปิดใช้งานภาพพักหน้าจอ |
KEY_CONFIG |
เมนูระบบการกำหนดค่า |
KEY_SWITCHVIDEOMODE |
เปลี่ยนโหมดวิดีโอของระบบ |
KEY_KBDILLUMTOGGLE |
เปิด/ปิดไฟแบ็กไลต์ของแป้นพิมพ์ |
ตารางย่อย ข: สื่อและตัวควบคุมการเล่น
| รหัส | คำอธิบาย |
|---|---|
KEY_PLAYPAUSE |
สลับสถานะเล่นและหยุดชั่วคราว |
KEY_PLAY |
เริ่มเล่นสื่อ |
KEY_PAUSECD |
หยุดเล่น CD ชั่วคราว |
KEY_STOPCD |
หยุดเล่น CD |
KEY_NEXTSONG |
ข้ามไปยังแทร็กถัดไป |
KEY_PREVIOUSSONG |
ข้ามไปยังแทร็กก่อนหน้า |
KEY_REWIND |
กรอกลับแทร็กที่ใช้งานอยู่ |
KEY_FASTFORWARD |
กรอแทร็กที่เล่นอยู่ไปข้างหน้า |
KEY_RECORD |
คำสั่งทริกเกอร์การบันทึก |
KEY_SHUFFLE |
เปิด/ปิดการเล่นแบบสุ่ม |
KEY_REPEAT |
สลับการเล่นซ้ำ |
KEY_MEDIA |
ทริกเกอร์คีย์สื่อ |
ตารางย่อย ค: แป้นพิมพ์สำหรับการนำทางและแป้นพิมพ์ทั่วไป
| รหัส | คำอธิบาย |
|---|---|
KEY_UP |
ทิศทางขึ้นของ D-pad |
KEY_DOWN |
ทิศทางลงของ D-pad |
KEY_LEFT |
ทิศทางซ้ายของ D-pad |
KEY_RIGHT |
ทิศทางขวาของ D-pad |
KEY_PAGEUP |
การนำทางเลื่อนหน้าขึ้น |
KEY_PAGEDOWN |
การนำทางเพื่อเลื่อนหน้าลง |
KEY_INSERT |
แทรกทริกเกอร์คีย์ |
KEY_DELETE |
ลบทริกเกอร์คีย์ |
KEY_ENTER |
ทริกเกอร์แป้น Enter |
KEY_ESC |
ทริกเกอร์ปุ่ม Escape |
KEY_TAB |
ทริกเกอร์ปุ่ม Tab |
KEY_SPACE |
ทริกเกอร์แป้น Spacebar |
KEY_BACKSPACE |
ทริกเกอร์แป้น Backspace |
KEY_CLEAR |
ล้างบัฟเฟอร์อินพุต |
KEY_CANCEL |
ยกเลิกการดำเนินการที่ทำงานอยู่ |
KEY_OK |
ยืนยัน/ตกลงการเลือก |
KEY_SELECT |
ทริกเกอร์การเลือกรายการ |
KEY_GOTO |
ไปยังสถานที่ที่กำหนด |
KEY_HELP |
เข้าถึงบริบทความช่วยเหลือ |
ตารางย่อย ง: ตัวอักษรและตัวเลขและสัญลักษณ์ปุ่มกด
- ตัวอักษรมาตรฐาน:
KEY_AถึงKEY_Z(26 รหัส) - แป้นพิมพ์ตัวเลข:
KEY_1ถึงKEY_0(10 รหัส)
| รหัส | สัญลักษณ์ตัวละคร |
|---|---|
KEY_COMMA |
, |
KEY_DOT |
. |
KEY_SLASH |
/ |
KEY_SEMICOLON |
; |
KEY_APOSTROPHE |
' |
KEY_GRAVE |
\` |
KEY_MINUS |
- |
KEY_EQUAL |
= |
KEY_LEFTBRACE |
[ |
KEY_RIGHTBRACE |
] |
KEY_BACKSLASH |
\ |
KEY_KPASTERISK |
* (ปุ่มกดตัวเลข) |
KEY_KPPLUS |
+ (ปุ่มกดตัวเลข) |
KEY_KPMINUS |
- (ปุ่มกดตัวเลข) |
KEY_KPDOT |
. (ปุ่มกดตัวเลข) |
KEY_KPSLASH |
/ (ปุ่มกดตัวเลข) |
KEY_KPENTER |
Enter (แป้นพิมพ์ตัวเลข) |
KEY_KPEQUAL |
= (ปุ่มกดตัวเลข) |
KEY_KPCOMMA |
, (ปุ่มกดตัวเลข) |
KEY_KPJPCOMMA |
, (เลย์เอาต์ภาษาญี่ปุ่น) |
KEY_KPLEFTPAREN |
( (ปุ่มกดตัวเลข) |
KEY_KPRIGHTPAREN |
) (ปุ่มกดตัวเลข) |
KEY_KPPLUSMINUS |
± (ปุ่มกดตัวเลข) |
ตารางย่อย E: แป้นกดร่วมและแป้นฟังก์ชัน
- แป้นฟังก์ชันมาตรฐาน:
KEY_F1ถึงKEY_F24(24 รหัส)
| รหัส | คำอธิบาย |
|---|---|
KEY_LEFTSHIFT |
แป้นกดร่วม Shift ซ้าย |
KEY_RIGHTSHIFT |
แป้นกดร่วม Shift ด้านขวา |
KEY_LEFTCTRL |
ตัวปรับแต่งแป้นพิมพ์ Control ด้านซ้าย |
KEY_RIGHTCTRL |
ตัวแก้ไขแป้นพิมพ์ Control ด้านขวา |
KEY_LEFTALT |
แป้นกดร่วม Alt ซ้าย |
KEY_RIGHTALT |
แป้นกดร่วม Alt ด้านขวา |
KEY_LEFTMETA |
แป้น Meta/Command ซ้าย |
KEY_RIGHTMETA |
แป้น Meta/Command ขวา |
KEY_CAPSLOCK |
เปิด/ปิดแป้นพิมพ์ Caps Lock |
KEY_NUMLOCK |
เปิด/ปิดแป้นพิมพ์ Num Lock |
KEY_SCROLLLOCK |
เปิด/ปิดแป้นพิมพ์ Scroll Lock |
KEY_COMPOSE |
ผู้ช่วยเขียนตัวอักษร |
KEY_FN |
แป้น FN ของแป้นพิมพ์จริง |
KEY_FN_ESC |
ชุดแป้นฟังก์ชัน |
KEY_FN_1 |
แป้นพิมพ์ลัดสำหรับฟังก์ชันพิเศษ 1 |
KEY_FN_2 |
แป้นพิมพ์ลัดฟังก์ชันพิเศษ 2 |
KEY_FN_D |
แป้นพิมพ์ลัดฟังก์ชันพิเศษ D |
KEY_FN_E |
แป้นพิมพ์ลัดฟังก์ชันพิเศษ E |
KEY_FN_F |
แป้นพิมพ์ลัดฟังก์ชันพิเศษ F |
KEY_FN_S |
แป้นพิมพ์ลัดฟังก์ชันพิเศษ S |
KEY_FN_B |
แป้นพิมพ์ลัดสำหรับฟังก์ชันพิเศษ B |
ตารางย่อย ฉ: เกมแพดและจอยสติ๊ก
| รหัส | คำอธิบาย |
|---|---|
BTN_A / BTN_B / BTN_C |
ปุ่มด้านหน้าของตัวควบคุม A/B/C |
BTN_X / BTN_Y / BTN_Z |
ปุ่มด้านหน้าของตัวควบคุม X/Y/Z |
BTN_START |
ปุ่มเมนู Start ของเกมแพด |
BTN_SELECT |
ปุ่มเลือกของเกมแพด |
BTN_MODE |
สวิตช์โหมดตัวควบคุม |
BTN_TL / BTN_TR |
ปุ่มบัมเปอร์ด้านซ้าย/ขวา |
BTN_TL2 / BTN_TR2 |
ทริกเกอร์แอนะล็อกซ้าย/ขวา |
BTN_THUMBL / BTN_THUMBR |
คลิกปุ่มแท่งซ้าย/ขวา |
BTN_DPAD_UP |
ทริกเกอร์ D-pad ขึ้นของเกมแพด |
BTN_DPAD_DOWN |
ทริกเกอร์ D-pad ลงของเกมแพด |
BTN_DPAD_LEFT |
ทริกเกอร์ซ้ายของ D-pad บนเกมแพด |
BTN_DPAD_RIGHT |
ทริกเกอร์ขวาของ D-pad บนเกมแพด |
BTN_THUMB |
ทริกเกอร์หลักที่นิ้วหัวแม่มือของจอยสติ๊ก |
BTN_TOP / BTN_TOP2 |
ปุ่มด้านบนของจอยสติ๊ก |
BTN_PINKIE |
ทริกเกอร์ปุ่มนิ้วก้อยของจอยสติ๊ก |
BTN_BASE ถึง _BASE6 |
ปุ่มฐานแพลตฟอร์มจอยสติ๊ก |
BTN_DEAD |
แฟล็ก Deadzone ของเกมแพดที่ไม่ได้ใช้งาน |
BTN_TRIGGER |
ทริกเกอร์มือจอยสติ๊กจริง |
BTN_JOYSTICK |
รหัสอินพุตจอยสติ๊กทั่วไป |
ตารางย่อย G: การป้อนข้อมูลด้วยเมาส์ การสัมผัส และสไตลัส
| รหัส | คำอธิบาย |
|---|---|
BTN_MOUSE |
เหตุการณ์เคอร์เซอร์เมาส์ทั่วไป |
BTN_LEFT |
คลิกปุ่มซ้ายของเมาส์ |
BTN_RIGHT |
คลิกปุ่มขวาของเมาส์ |
BTN_MIDDLE |
คลิกปุ่มลูกกลิ้งตรงกลาง |
BTN_SIDE |
ทริกเกอร์ปุ่มด้านข้างสำหรับการนำทาง |
BTN_EXTRA |
ทริกเกอร์ปุ่มเมาส์เพิ่มเติม |
BTN_FORWARD |
คลิกการนําทางไปข้างหน้าของเบราว์เซอร์ |
BTN_BACK |
คลิกการนําทางย้อนกลับของเบราว์เซอร์ |
BTN_TASK |
แป้นสลับงานของระบบ |
BTN_TOUCH |
ตรวจพบการสัมผัสหน้าจอโดยตรง |
BTN_STYLUS |
ระยะห่างของสไตลัสแบบแอ็กทีฟ |
BTN_STYLUS2 |
สวิตช์รองบนสไตลัส |
BTN_TOOL_PEN |
ตัวระบุเครื่องมือปากกาสไตลัส |
BTN_TOOL_RUBBER |
ตัวระบุเครื่องมือยางลบของสไตลัส |
BTN_TOOL_BRUSH |
ตัวระบุเครื่องมือแปรงของ Painter |
BTN_TOOL_PENCIL |
ตัวระบุเครื่องมือดินสอร่างแบบ |
BTN_TOOL_AIRBRUSH |
ตัวระบุเครื่องมือพ่นสีแอร์บรัช |
BTN_TOOL_FINGER |
การสัมผัสหน้าจอสัมผัสด้วยนิ้ว |
BTN_TOOL_MOUSE |
ตัวระบุเครื่องมือเมาส์ภายนอก |
BTN_TOOL_LENS |
เครื่องมือเลนส์แว่นขยายแบบออปติคัล |
BTN_TOOL_DOUBLETAP |
แฟล็กความเร็วในการแตะสองครั้งด้วยท่าทางสัมผัส |
BTN_TOOL_TRIPLETAP |
แฟล็กความเร็วในการแตะ 3 ครั้งด้วยท่าทางสัมผัส |
ตารางย่อย H: ทางลัดของแอปพลิเคชัน
| รหัส | การดำเนินการเป้าหมาย |
|---|---|
KEY_WWW |
เปิดเว็บเบราว์เซอร์เริ่มต้น |
KEY_MAIL |
เปิดโปรแกรมรับส่งอีเมลเริ่มต้น |
KEY_BOOKMARKS |
เปิดรายการบุ๊กมาร์กของเบราว์เซอร์ |
KEY_CALC |
เปิดยูทิลิตีเครื่องคิดเลข |
KEY_FILE |
เปิด File Explorer ในเครื่อง |
KEY_EDIT |
ทริกเกอร์การแก้ไขเอกสาร |
KEY_NEW |
เอกสารสร้างทริกเกอร์ใหม่ |
KEY_OPEN |
ทริกเกอร์การเปิดเอกสาร |
KEY_SAVE |
ทริกเกอร์งานบันทึกไฟล์ |
KEY_CLOSE |
ทริกเกอร์งานปิดไฟล์ |
KEY_PRINT |
ทริกเกอร์งานพิมพ์ไฟล์ |
KEY_COPY |
การดำเนินการคัดลอกบัฟเฟอร์คลิปบอร์ด |
KEY_PASTE |
การดำเนินการแทรกบัฟเฟอร์คลิปบอร์ด |
KEY_CUT |
การดำเนินการตัดบัฟเฟอร์คลิปบอร์ด |
KEY_UNDO |
การดำเนินการเลิกทำบัฟเฟอร์คลิปบอร์ด |
KEY_REDO |
การดำเนินการทำซ้ำบัฟเฟอร์คลิปบอร์ด |
KEY_CANCEL |
ทริกเกอร์กระบวนการยกเลิกบัฟเฟอร์ |
KEY_FIND |
ยูทิลิตีการค้นหาเอกสาร |
KEY_REFRESH |
ยูทิลิตีการรีเฟรชเอกสาร |
KEY_EXIT |
ยูทิลิตีการปิดเอกสาร |
KEY_DOCUMENTS |
เปิดพอร์ทัลเอกสารของระบบ |
KEY_HOMEPAGE |
เปิดเบราว์เซอร์หน้าแรก |
KEY_FAVORITES |
เปิดพอร์ทัลรายการโปรดของเบราว์เซอร์ |
KEY_CHAT |
เปิดโปรแกรมรับส่งข้อความด่วน |
KEY_EMAIL |
ทริกเกอร์การเปิดตัวอีเมลอื่น |
KEY_FINANCE |
เปิดยูทิลิตีหุ้น/การเงิน |
KEY_SPORT |
เปิดยูทิลิตีการติดตามกีฬา |
KEY_SHOP |
เปิดพอร์ทัลการช็อปปิ้งดิจิทัล |
KEY_PLAYER |
เปิดมีเดียเพลเยอร์หลัก |
KEY_MP3 |
เปิดเครื่องเล่น MP3 หลัก |
KEY_TEXT |
เปิดเครื่องมือแก้ไขข้อความเริ่มต้น |
KEY_LIST |
เปิดยูทิลิตีรายการตรวจสอบ |
KEY_MEMO |
เปิดแผ่นจดบันทึก / ยูทิลิตีบันทึกช่วยจำ |
KEY_CALENDAR |
เปิดพอร์ทัลปฏิทิน/กำหนดการ |
KEY_DIRECTORY |
เปิดไดเรกทอรีที่อยู่ของระบบ |
KEY_COMPUTER |
เปิดเครื่องมือสำรวจข้อกำหนด |
KEY_TV / KEY_TV2 |
เปิดพอร์ทัลทีวี |
KEY_RADIO |
เปิดยูทิลิตีวิทยุ |
KEY_CD / KEY_DVD |
เปิดใช้งานเครื่องอ่านออปติคัลไดรฟ์ |
KEY_AUDIO / KEY_VIDEO |
เข้าถึงข้อกำหนดของสื่อ |
KEY_TUNER |
กำหนดค่าเครื่องรับ/เครื่องปรับสัญญาณ |
KEY_SAT / KEY_SAT2 |
กำหนดค่าฟีดดาวเทียม |
KEY_TAPE |
เล่นเทปคาสเซ็ต |
KEY_VCR |
เล่นฟีดเครื่องเล่น VCR |
KEY_VCR2 |
เล่นฟีดเครื่องเล่น VCR 2 |
KEY_AUX |
อินพุตพอร์ตสื่อเสริม |
KEY_SETUP |
เมนูการกำหนดค่าการตั้งค่า |
KEY_PROG1 ถึง _PROG4 |
แป้นโปรแกรมที่ผู้ใช้กำหนด |
KEY_ZOOM |
สลับวิวพอร์ตการซูม |
KEY_MODE |
เลือกโหมดวิวพอร์ต |
KEY_KEYBOARD |
แสดง/ซ่อนแป้นพิมพ์เสมือน |
KEY_LANGUAGE |
เปลี่ยนภาษาของแทร็กเสียง |
KEY_TITLE |
เปิดตัวเลือกชื่อสื่อ |
KEY_SUBTITLE |
เปิด/ปิดอินเทอร์เฟซคำบรรยาย |
KEY_ANGLE |
เปลี่ยนมุมกล้องวิดีโอ |
KEY_EPG |
เปิดผังรายการอิเล็กทรอนิกส์ |
KEY_PVR |
เปิดเครื่องบันทึกวิดีโอส่วนตัว |
KEY_MHP |
แพลตฟอร์มมัลติมีเดียแบบเปิดสำหรับบ้าน |
KEY_CHANNEL |
เปิดช่องตัวรับสัญญาณทีวี |
KEY_CHANNELUP |
เปลี่ยนช่องทีวีขึ้น |
KEY_CHANNELDOWN |
เปลี่ยนช่องทีวีลง |
KEY_RED |
ปุ่มโต้ตอบสีแดง |
KEY_GREEN |
ปุ่มโต้ตอบสีเขียว |
KEY_YELLOW |
ปุ่มโต้ตอบสีเหลือง |
KEY_BLUE |
ปุ่มโต้ตอบสีน้ำเงิน |
KEY_FIRST |
เลือกตัวเลือกรายการแรก |
KEY_LAST |
เลือกตัวเลือกรายการสุดท้าย |
KEY_NEXT |
เลือกตัวเลือกแทร็กถัดไป |
KEY_PREVIOUS |
เลือกตัวเลือกแทร็กก่อนหน้า |
KEY_RESTART |
เริ่มการวนซ้ำแทร็กสื่อใหม่ |
KEY_SLOW |
ตัวเลือกการเล่นแบบสโลว์โมชัน |
KEY_AB |
วนซ้ำลำดับ A-B |
KEY_PLAYCD |
คำสั่งเล่นเครื่องเล่น CD |
KEY_PAUSECD |
คำสั่งหยุดชั่วคราวของเครื่องเล่นซีดี |
KEY_STOPCD |
คำสั่งหยุดเครื่องเล่น CD |
KEY_DIGITS |
คำสั่งป้อนข้อมูลด้วยปุ่มกดดิจิทัล |
KEY_TEEN |
ตัวเลือกค่าสำหรับวัยรุ่นบนปุ่มกด |
KEY_TWEN |
ตัวเลือกค่า twen ของปุ่มกด |
KEY_DEL_EOL |
ลบไปที่บัฟเฟอร์ท้ายบรรทัด |
KEY_DEL_EOS |
ลบจนถึงส่วนท้ายสุดของบัฟเฟอร์หน้าจอ |
KEY_INS_LINE |
แทรกบัฟเฟอร์บรรทัดใหม่ |
KEY_BRL_DOT1 ถึง _DOT8 |
อินพุตปุ่มจอแสดงผลอักษรเบรลล์ |
KEY_VOICECOMMAND |
เปิดแอปผู้ช่วยแบบเสียง |
KEY_SELECTIVE_SCREEN |
เรียกใช้การจับภาพหน้าจอบางส่วน |
KEY_BATTERY |
ค้นหาการแจ้งเตือนแบตเตอรี่ |
KEY_STAR / KEY_SHARP |
สัญลักษณ์ปุ่มกดโทรศัพท์ |
KEY_PLUS |
สัญลักษณ์บวกบนปุ่มกดโทรศัพท์ |
KEY_INFO |
แสดงการวางซ้อนแผงข้อมูล |
KEY_TIME |
แสดงเวลาปัจจุบันของนาฬิกา |
KEY_VENDOR |
ข้อกำหนดเฉพาะของผู้ให้บริการการค้นหา |
KEY_ARCHIVE |
เปิดยูทิลิตีที่เก็บถาวรในเครื่อง |
KEY_PROGRAM |
กำหนดค่าพารามิเตอร์ของโปรแกรม |
KEY_POWER2 |
ทริกเกอร์พลังงานสำรองทางเลือก |
EV_ABS — เหตุการณ์การเคลื่อนไหวแบบสัมบูรณ์
ประเภทเหตุการณ์ EV_ABS มีความสำคัญอย่างยิ่งต่อการจำลองการแตะที่แม่นยำ ท่าทางการลากและวาง การบีบนิ้วแบบมัลติทัช และการปรับจอยสติ๊ก พิกัดสัมบูรณ์ด้านล่างจะแมปกับความละเอียดของหน้าจอจริงที่สำคัญโดยตรง
| รหัส | ช่วงพิกัด | คำอธิบาย |
|---|---|---|
ABS_MT_TRACKING_ID |
-1 หรือ ≥0 |
รหัสติดตาม -1 สิ้นสุดการแตะ |
ABS_MT_POSITION_X |
0 ถึง 1767 |
พิกัด X (Pixel Fold) |
ABS_MT_POSITION_Y |
0 ถึง 2207 |
พิกัด Y (Pixel Fold) |
ABS_MT_TOUCH_MAJOR |
พิกเซล | ความกว้างของแกนหลักของพื้นที่การสัมผัส |
ABS_MT_TOUCH_MINOR |
พิกเซล | ความกว้างของแกนรองของพื้นที่การสัมผัส |
ABS_MT_WIDTH_MAJOR |
พิกเซล | ความกว้างของแกนหลักของเครื่องมือ |
ABS_MT_WIDTH_MINOR |
พิกเซล | ความกว้างของแกนรองของเครื่องมือ |
ABS_MT_ORIENTATION |
0 ถึง 255 |
มุมการวางแนวของรายชื่อติดต่อ |
ABS_MT_PRESSURE |
0 ถึง 255 |
ขนาดของแรงสัมผัส |
ABS_MT_DISTANCE |
มม. | ระยะห่างจากหน้าจอเมื่อวางเมาส์เหนือหน้าจอ |
ABS_MT_TOOL_TYPE |
0 ถึง 2 |
0=นิ้ว, 1=ปากกา, 2=ดินสอ |
ABS_MT_BLOB_ID |
จำนวนเต็ม | ตัวระบุ Blob ของรายชื่อติดต่อ |
ABS_MT_TOOL_X |
พิกเซล | พิกัดตำแหน่ง X ของเครื่องมือ |
ABS_MT_TOOL_Y |
พิกเซล | พิกัดตำแหน่ง Y ของเครื่องมือ |
ABS_MT_SLOT |
0 ถึง N |
ช่องที่ใช้งานอยู่ (โปรโตคอล B) |
ABS_X / _Y / _Z |
แอนะล็อก | แกนพิกัดของจอยสติ๊ก |
ABS_RX / _RY / _RZ |
แอนะล็อก | แกนหมุนของจอยสติ๊ก |
ABS_THROTTLE / _BRAKE |
แอนะล็อก | แป้นเหยียบและระบบควบคุมพวงมาลัย |
ABS_HAT0X / _HAT0Y |
-1 / 0 / 1 |
สวิตช์ D-pad hat และ POV |
ABS_PRESSURE |
0 ถึง 255 |
ระดับแรงกดของสไตลัส/ตัวชี้ |
ABS_DISTANCE |
มม. | ระยะการโฮเวอร์ (สไตลัส) |
ABS_TILT_X / _TILT_Y |
องศา | มุมเอียงของสไตลัส |
ABS_VOLUME |
แอนะล็อก | ระดับเสียงของตัวควบคุม |
การโต้ตอบด้วยการสัมผัสของ Android ขับเคลื่อนโดยโปรโตคอล Multi-touch (MT) โปรแกรมจำลองสมัยใหม่ใช้ทั้งโปรโตคอล A (แบบไม่เก็บสถานะ โดยส่งแพ็กเก็ตการสัมผัสที่แยกจากกันด้วยเครื่องหมายการซิงค์) และโปรโตคอล B (แบบเก็บสถานะ โดยกำหนดการสัมผัสให้กับช่องการติดตามเฉพาะ) โปรโตคอล B ช่วยให้ติดตามการสัมผัสหลายจุดพร้อมกันได้อย่างมีประสิทธิภาพสำหรับท่าทางสัมผัส เช่น การบีบเพื่อซูม
EV_REL และ EV_SW — สวิตช์การเคลื่อนไหวและฮาร์ดแวร์
หมวดหมู่เหตุการณ์ EV_REL จะจัดการการเปลี่ยนแปลงตัวชี้หรือพิกัดที่เกี่ยวข้อง ซึ่งใช้สำหรับการจำลองการเคลื่อนไหวของเมาส์ภายนอกหรือปุ่มลูกกลิ้งเป็นหลัก หมวดหมู่เหตุการณ์ EV_SW จะจัดการสวิตช์อุปกรณ์จริง เช่น โทรศัพท์จอพับหรือแท็บเล็ตพับอยู่หรือไม่ หรือมีการเสียบฮาร์ดแวร์เสียงภายนอกหรือไม่
| รหัส | ค่า | คำอธิบาย |
|---|---|---|
REL_X |
เดลต้า | การเคลื่อนที่ของเคอร์เซอร์ในแนวนอน |
REL_Y |
เดลต้า | การเคลื่อนที่ของเคอร์เซอร์ในแนวตั้ง |
SW_LID |
0/1 |
สถานะฝาแล็ปท็อป (0=เปิด, 1=ปิด) |
SW_TABLET_MODE |
0/1 |
สถานะโหมดแท็บเล็ต (0=ปิด, 1=เปิดอยู่) |
SW_HEADPHONE_INSERT |
0/1 |
สถานะช่องเสียบหูฟัง (0=ไม่ได้เสียบ, 1=เสียบอยู่) |
SW_MICROPHONE_INSERT |
0/1 |
สถานะแจ็กไมโครโฟน (0=ออก, 1=เข้า) |
ไวยากรณ์การส่งคำสั่ง
หากต้องการส่งรหัสเหล่านี้ ให้จัดรูปแบบคำสั่งคอนโซลด้วยประเภท รหัส และค่าที่คั่นด้วยโคลอน คุณสามารถจัดคิวการเปลี่ยนแปลงพิกัดหลายรายการในสตริงเดียวได้ สิ่งสำคัญคือเพิ่มเครื่องหมายการซิงค์สุดท้าย (EV_SYN:0:0) เสมอเพื่อระบุว่าเฟรมเวิร์กโปรแกรมจำลองควรรวมและประมวลผลอินพุตเหล่านี้เข้าด้วยกัน
ตัวอย่างการเขียนสคริปต์เหตุการณ์และท่าทางสัมผัส
เนื่องจาก Telnet อนุญาตให้ส่งพารามิเตอร์แบบหลายส่วน คุณจึงจำลองลำดับท่าทางสัมผัสทางกายภาพที่สมจริงได้ ด้านล่างนี้คือโครงสร้างสคริปต์เหตุการณ์ดิบสำหรับการทำให้ท่าทางสัมผัสจากคอนโซลโฮสต์เป็นแบบอัตโนมัติ
การจำลองการแตะหน้าจอ
หากต้องการแตะหน้าจอแบบไม่มีการรบกวนที่พิกัดเป้าหมาย ให้กำหนดรหัสติดตาม ระบุพิกัด X และ Y บนหน้าจอ จำลองการแตะ ซิงค์ข้อมูล แล้วปล่อย
# Press down at coordinate (400, 800) and sync
event send EV_ABS:ABS_MT_TRACKING_ID:1
OK
event send EV_ABS:ABS_MT_POSITION_X:400
OK
event send EV_ABS:ABS_MT_POSITION_Y:800
OK
event send EV_KEY:BTN_TOUCH:1
OK
event send EV_SYN:0:0
OK
# Lift finger up and sync
event send EV_ABS:ABS_MT_TRACKING_ID:-1
OK
event send EV_KEY:BTN_TOUCH:0
OK
event send EV_SYN:0:0
OK
การจำลองการเลื่อนแนวตั้ง (ปัด)
หากต้องการใช้ท่าทางสัมผัสแบบปัดเพื่อเลื่อน ให้แตะค้างไว้ที่พิกัดเริ่มต้น ส่งเฟรมพิกัดการเคลื่อนไหวระดับกลาง แล้วปล่อยที่จุดสิ้นสุด
# Finger touch down at start coordinate (500, 1600)
event send EV_ABS:ABS_MT_TRACKING_ID:2
OK
event send EV_ABS:ABS_MT_POSITION_X:500
OK
event send EV_ABS:ABS_MT_POSITION_Y:1600
OK
event send EV_KEY:BTN_TOUCH:1
OK
event send EV_SYN:0:0
OK
# Move coordinates upward dynamically
event send EV_ABS:ABS_MT_POSITION_Y:1200
OK
event send EV_SYN:0:0
OK
event send EV_ABS:ABS_MT_POSITION_Y:800
OK
event send EV_SYN:0:0
OK
event send EV_ABS:ABS_MT_POSITION_Y:400
OK
event send EV_SYN:0:0
OK
# Finger release at coordinate (500, 400)
event send EV_ABS:ABS_MT_TRACKING_ID:-1
OK
event send EV_KEY:BTN_TOUCH:0
OK
event send EV_SYN:0:0
OK
การจำลองท่าทางสัมผัสบีบเพื่อซูม
หากต้องการเรียกใช้การซูมด้วย 2 นิ้ว ให้ใช้ช่อง MT ที่ใช้งานอยู่ (0 และ 1) เพื่อติดตามและประสานงานพิกัดการสัมผัส 2 จุดที่เกิดขึ้นพร้อมกันซึ่งเคลื่อนออกจากกัน
# Finger 1 down at (500, 1000) using slot 0
event send EV_ABS:ABS_MT_SLOT:0
OK
event send EV_ABS:ABS_MT_TRACKING_ID:10
OK
event send EV_ABS:ABS_MT_POSITION_X:500
OK
event send EV_ABS:ABS_MT_POSITION_Y:1000
OK
event send EV_KEY:BTN_TOUCH:1
OK
event send EV_SYN:0:0
OK
# Finger 2 down at (600, 1000) using slot 1
event send EV_ABS:ABS_MT_SLOT:1
OK
event send EV_ABS:ABS_MT_TRACKING_ID:11
OK
event send EV_ABS:ABS_MT_POSITION_X:600
OK
event send EV_ABS:ABS_MT_POSITION_Y:1000
OK
event send EV_SYN:0:0
OK
# Fingers slide apart from each other
event send EV_ABS:ABS_MT_SLOT:0
OK
event send EV_ABS:ABS_MT_POSITION_X:300
OK
event send EV_SYN:0:0
OK
event send EV_ABS:ABS_MT_SLOT:1
OK
event send EV_ABS:ABS_MT_POSITION_X:800
OK
event send EV_SYN:0:0
OK
# Lift Finger 1 using slot 0
event send EV_ABS:ABS_MT_SLOT:0
OK
event send EV_ABS:ABS_MT_TRACKING_ID:-1
OK
event send EV_SYN:0:0
OK
# Lift Finger 2 using slot 1
event send EV_ABS:ABS_MT_SLOT:1
OK
event send EV_ABS:ABS_MT_TRACKING_ID:-1
OK
event send EV_KEY:BTN_TOUCH:0
OK
event send EV_SYN:0:0
OK
การจำลองการสลับการเชื่อมต่อหูฟัง
จำลองการเสียบหรือถอดช่องเสียบหูฟังเพื่อทดสอบสวิตช์การกำหนดเส้นทางเสียง ค่า 1 แสดงถึงการเสียบแจ็ก และ 0 คือการถอดหูฟัง
# Simulate headphones plugged in
event send EV_SW:SW_HEADPHONE_INSERT:1 EV_SYN:0:0
OK
# Simulate headphones unplugged
event send EV_SW:SW_HEADPHONE_INSERT:0 EV_SYN:0:0
OK
การค้นหารหัสเหตุการณ์ของคอนโซลจากอุปกรณ์จริง
หากต้องการค้นหาลำดับไวยากรณ์ของเหตุการณ์ที่แน่นอนสำหรับการกระทำที่กำหนดเองหรือท่าทางสัมผัสของปุ่ม ให้เชื่อมต่อโดยใช้ adb shell และเรียกใช้ยูทิลิตีการวินิจฉัย getevent
เมื่อคุณโต้ตอบกับ GUI ของโปรแกรมจำลอง คอนโซลจะพิมพ์รหัสเหตุการณ์ ประเภท และตำแหน่งที่แน่นอน
# Run getevent to monitor input events dynamically
adb shell getevent -lt
/dev/input/event12: EV_KEY KEY_POWER DOWN
/dev/input/event12: EV_SYN SYN_REPORT 00000000
/dev/input/event12: EV_KEY KEY_POWER UP
/dev/input/event12: EV_SYN SYN_REPORT 00000000
- event text message: ส่งสตริงอักขระที่จำลองการกดแป้น ข้อความต้องเป็นสตริง UTF-8 ระบบจะแมปโพสต์ Unicode แบบย้อนกลับตามแป้นพิมพ์ของอุปกรณ์ปัจจุบัน และทิ้งอักขระที่ไม่รองรับโดยไม่มีการแจ้งเตือน
การควบคุมสถานะพลังงาน
จอแสดงผลพลังงาน: แสดงสถานะแบตเตอรี่และที่ชาร์จ
power ac {on| off}: ตั้งค่าสถานะการชาร์จ AC เป็นเปิดหรือปิด
power status {unknown| charging| discharging| not-charging| full}: เปลี่ยนสถานะแบตเตอรี่ตามที่ระบุ
power present {true| false}: ตั้งค่าสถานะการมีแบตเตอรี่
power health {unknown| good| overheat| dead| overvoltage| failure}: ตั้งค่าสถานะประสิทธิภาพแบตเตอรี่
power capacity percent: ตั้งค่าสถานะความจุแบตเตอรี่ที่เหลือเป็นเปอร์เซ็นต์ตั้งแต่ 0 ถึง 100
สถานะการเชื่อมต่อเครือข่าย (อีเทอร์เน็ตและเครือข่ายมือถือเท่านั้น)
network status: ตรวจสอบสถานะเครือข่าย รวมถึงลักษณะความล่าช้าและความเร็วในปัจจุบัน
network delay latencyเปลี่ยนเวลาในการตอบสนองของเครือข่ายที่จำลองโปรแกรมจำลองช่วยให้คุณจำลองระดับเวลาในการตอบสนองของเครือข่ายต่างๆ เพื่อให้คุณทดสอบแอปในสภาพแวดล้อมที่ใกล้เคียงกับสภาวะการทำงานจริงได้มากขึ้น คุณสามารถตั้งค่าระดับหรือช่วงเวลาในการตอบสนองเมื่อเริ่มต้นโปรแกรมจำลอง หรือจะใช้คอนโซลเพื่อเปลี่ยนเวลาในการตอบสนองขณะที่แอปทำงานในโปรแกรมจำลองก็ได้
รูปแบบของเวลาในการตอบสนองของเครือข่ายเป็นรูปแบบใดรูปแบบหนึ่งต่อไปนี้ (ตัวเลขคือมิลลิวินาที)
รูปแบบเวลาในการตอบสนองของเครือข่าย:
gprs: GPRS ซึ่งใช้ช่วงเวลาในการตอบสนองขั้นต่ำ 150 และสูงสุด 550
edge: EDGE/EGPRS ซึ่งใช้ช่วงเวลาในการตอบสนองต่ำสุด 80 และสูงสุด 400
umts: UMTS/3G ซึ่งใช้ช่วงเวลาในการตอบสนองขั้นต่ำ 35 และสูงสุด 200
none: ไม่มีเวลาในการตอบสนอง
num: จำลองเวลาในการตอบสนองที่ระบุในหน่วยมิลลิวินาที
min:max: จำลองช่วงเวลาในการตอบสนองที่ระบุ
หากต้องการตั้งค่าเวลาในการตอบสนองเมื่อเริ่มต้นโปรแกรมจำลอง ให้ใช้ตัวเลือกโปรแกรมจำลอง
-netdelayกับค่าเวลาในการตอบสนองที่รองรับ ตัวอย่างemulator -netdelay gprs emulator -netdelay 40,100หากต้องการเปลี่ยนแปลงความล่าช้าของเครือข่ายขณะที่โปรแกรมจำลองทำงานอยู่ ให้เชื่อมต่อกับคอนโซลและใช้คำสั่ง
network delayดังนี้network delay gprs network delay 40 100network speed speedโปรแกรมจำลองช่วยให้คุณจำลองอัตราการโอนข้อมูลผ่านเครือข่ายต่างๆ ได้ คุณสามารถตั้งค่าอัตราหรือช่วงการโอนเมื่อเริ่มต้นโปรแกรมจำลอง หรือจะใช้คอนโซลเพื่อเปลี่ยนอัตราขณะที่แอปทำงานในโปรแกรมจำลองก็ได้รูปแบบของความเร็วเครือข่ายเป็นรูปแบบใดรูปแบบหนึ่งต่อไปนี้ (ตัวเลขคือหน่วยกิโลบิตต่อวินาที)
รูปแบบความเร็วเครือข่าย:
gsm: GSM/CSD ซึ่งใช้ความเร็วอัปโหลด 14.4 และดาวน์โหลด 14.4
hscsd: HSCSD ซึ่งใช้ความเร็วอัปโหลด 14.4 และดาวน์โหลด 43.2
gprs: GPRS ซึ่งใช้ความเร็วอัปโหลด 40.0 และดาวน์โหลด 80.0
edge: EDGE/EGPRS ซึ่งใช้ความเร็วอัปโหลด 118.4 และดาวน์โหลด 236.8
umts: UMTS/3G ซึ่งใช้ความเร็วอัปโหลด 128.0 และดาวน์โหลด 1920
hsdpa: HSDPA ซึ่งใช้ความเร็วอัปโหลด 348.0 และดาวน์โหลด 14,400.0
lte: LTE ซึ่งใช้ความเร็วอัปโหลด 58,000 และดาวน์โหลด 173,000
evdo: EVDO ซึ่งใช้ความเร็วอัปโหลด 75,000 และดาวน์โหลด 280,000
full: ความเร็วไม่จำกัด แต่ขึ้นอยู่กับความเร็วในการเชื่อมต่อของคอมพิวเตอร์
num: กำหนดอัตราที่แน่นอนเป็นกิโลบิตต่อวินาทีที่ใช้สำหรับการอัปโหลดและดาวน์โหลด
up:down: กำหนดอัตราที่แน่นอนเป็นกิโลบิตต่อวินาทีสำหรับการอัปโหลดและดาวน์โหลดแยกกัน
หากต้องการตั้งค่าความเร็วเครือข่ายเมื่อเริ่มต้นโปรแกรมจำลอง ให้ใช้ตัวเลือกโปรแกรมจำลอง
-netspeedตัวอย่างemulator -netspeed gsm @Pixel_API_26 emulator -netspeed 14.4,80 @Pixel_API_26หากต้องการเปลี่ยนแปลงความเร็วเครือข่ายขณะที่โปรแกรมจำลองทำงานอยู่ ให้เชื่อมต่อกับคอนโซลและใช้คำสั่ง
network speedดังนี้network speed 14.4 80network capture {start| stop} fileส่งแพ็กเก็ตไปยังไฟล์ รายการต่อไปนี้อธิบายพารามิเตอร์และค่าพารามิเตอร์หมายเหตุ: ตั้งแต่โปรแกรมจำลองของ Android เวอร์ชัน 36.5 เป็นต้นไป netsim จะจัดการการรับส่งข้อมูลการเชื่อมต่อ Wi-Fi โดยค่าเริ่มต้น คำสั่งคอนโซลการจับภาพเครือข่ายจะจับเฉพาะการรับส่งข้อมูลเครือข่ายมือถือ/WAN เดิมที่กำหนดเส้นทางผ่านสแต็ก QEMU slirp หากต้องการบันทึกแพ็กเก็ต Wi-Fi, บลูทูธ หรือเครือข่ายขั้นสูงในโปรแกรมจำลองเวอร์ชันใหม่ๆ โปรดดูหัวข้อบันทึกการจราจรของข้อมูลในเครือข่ายในคู่มือการสร้างเครือข่ายโปรแกรมจำลองขั้นสูง
start file: เริ่มบันทึกแพ็กเก็ตเครือข่าย เพื่อความปลอดภัย ไฟล์ต้องเป็นชื่อไฟล์เปล่า (ไม่มีตัวคั่นเส้นทาง เช่น
/และไม่มี..) ระบบจะบันทึกไฟล์การจับแพ็กเก็ตไว้ในไดเรกทอรีเนื้อหาของ AVD ในโฟลเดอร์console_out/(เช่น~/.android/avd/avd_name.avd/console_out/file)stop file: หยุดส่งแพ็กเก็ตไปยังไฟล์ที่ระบุ
การจำลองโทรศัพท์
โปรแกรมจำลองของ Android มีโมเด็มจำลอง GSM และ CDMA ของตัวเองที่ช่วยให้คุณจำลองฟังก์ชันโทรศัพท์ในโปรแกรมจำลองได้ เช่น GSM ช่วยให้คุณจำลองการโทรเข้า รวมถึงสร้างและสิ้นสุดการเชื่อมต่ออินเทอร์เน็ตได้ สำหรับ CDMA คุณต้องระบุแหล่งที่มาของการสมัครใช้บริการและรายการโรมมิ่งที่ต้องการ ระบบ Android จะจัดการการโทรจำลองในลักษณะเดียวกับการโทรจริงทุกประการ โปรแกรมจำลองไม่รองรับเสียงการโทร
gsm {call| accept| cancel| busy} phonenumberพารามิเตอร์ gsm มีดังนี้- call: จำลองการโทรเข้าจากหมายเลขโทรศัพท์
- accept: รับสายโทรเข้าจากหมายเลขโทรศัพท์และเปลี่ยนสถานะการโทรเป็นใช้งานอยู่ คุณจะเปลี่ยนสถานะการโทรเป็นใช้งานอยู่ได้ก็ต่อเมื่อสถานะปัจจุบันคือรอสายหรือพักสายเท่านั้น
- cancel: สิ้นสุดการโทรเข้าหรือโทรออกไปยังหมายเลขโทรศัพท์
- busy: ปิดสายโทรออกไปยังหมายเลขโทรศัพท์และเปลี่ยนสถานะการโทรเป็นไม่ว่าง คุณจะเปลี่ยนสถานะการโทรเป็นไม่ว่างได้ก็ต่อเมื่อสถานะปัจจุบันคือ "กำลังรอ" เท่านั้น
gsm {data| voice} stateคำสั่งสถานะข้อมูลจะเปลี่ยนสถานะของการเชื่อมต่อข้อมูล GPRS และคำสั่งสถานะเสียงจะเปลี่ยนสถานะของการเชื่อมต่อเสียง GPRS ดังนี้- unregistered: ไม่มีเครือข่ายที่ใช้งานได้
- home: อยู่ในเครือข่ายท้องถิ่น ไม่ใช่การโรมมิ่ง
- roaming: อยู่ในเครือข่ายโรมมิ่ง
- searching: กำลังค้นหาเครือข่าย
- ถูกปฏิเสธ: โทรฉุกเฉินเท่านั้น
- off: เหมือนกับ "unregistered"
- on: เหมือนกับหน้าแรก
gsm hold: เปลี่ยนสถานะการโทรเป็นพักสาย คุณจะเปลี่ยนสถานะการโทรเป็นพักสายได้ก็ต่อเมื่อสถานะปัจจุบันคือใช้งานอยู่หรือรอสายเท่านั้น
gsm list: แสดงรายการสายโทรเข้าและสายโทรออกทั้งหมด รวมถึงสถานะของสายเหล่านั้น
gsm status: รายงานสถานะเสียงและข้อมูล GSM ปัจจุบัน ค่าต่างๆ จะเป็นค่าที่อธิบายไว้สำหรับคำสั่งเสียงและข้อมูล
gsm signal {rssi| ber}เปลี่ยนความแรงของสัญญาณ (rssi) และอัตราข้อผิดพลาดของบิต (ber) ที่รายงานในการอัปเดต 15 วินาทีถัดไป รายการต่อไปนี้อธิบายพารามิเตอร์และค่าของพารามิเตอร์- rssi: ช่วงคือ 0 ถึง 31 และ 99 สำหรับค่าที่ไม่รู้จัก
- ber: ช่วงคือ 0 ถึง 7 และ 99 สำหรับค่าที่ไม่รู้จัก
gsm signal-profile num: ตั้งค่าโปรไฟล์ความแรงของสัญญาณ โดย num คือตัวเลขตั้งแต่ 0 ถึง 4
cdma ssource sourceตั้งค่าแหล่งที่มาของการสมัครใช้บริการ CDMA ปัจจุบัน โดยแหล่งที่มาคือรายการที่อนุญาตตามเครือข่ายซึ่งมีผู้สมัครใช้บริการของผู้ให้บริการ CDMA และค่าต่างๆ ดังนี้- nv: อ่านการสมัครใช้บริการจาก RAM แบบไม่ลบเลือน
- ruim: อ่านการสมัครใช้บริการจาก Removable User Identity Module (RUIM)
cdma prl_version version: ดัมป์เวอร์ชันรายการโรมมิ่งที่ต้องการ (PRL) ปัจจุบัน หมายเลขเวอร์ชันนี้มีไว้สำหรับฐานข้อมูล PRL ที่มีข้อมูลที่ใช้ในระหว่างกระบวนการเลือกและรับระบบ
จัดการเซ็นเซอร์ในโปรแกรมจำลอง
คำสั่งเหล่านี้เกี่ยวข้องกับเซ็นเซอร์ที่พร้อมใช้งานใน AVD นอกจากการใช้คำสั่งเซ็นเซอร์แล้ว คุณยังดูและปรับการตั้งค่าในโปรแกรมจำลองได้ในหน้าจอเซ็นเซอร์เสมือนในแท็บตัวตรวจวัดความเร่งและเซ็นเซอร์เพิ่มเติม
sensor status: แสดงรายการเซ็นเซอร์ทั้งหมดและสถานะของเซ็นเซอร์
sensor get sensor-name: รับการตั้งค่าสำหรับ sensor-name ตัวอย่างต่อไปนี้จะรับค่าสำหรับเซ็นเซอร์การเร่งความเร็ว
sensor get acceleration acceleration = 2.23517e-07:9.77631:0.812348ค่าความเร่งที่คั่นด้วยโคลอน (
:) หมายถึงพิกัด x, y และ z สำหรับเซ็นเซอร์เสมือนsensor set sensor-name value-x:value-y:value-z: ตั้งค่าสำหรับ sensor-name ตัวอย่างต่อไปนี้ตั้งค่าเซ็นเซอร์การเร่งความเร็วเป็นค่า x, y และ z โดยคั่นด้วยโคลอน
sensor set acceleration 2.23517e-07:9.77631:0.812348
การจำลอง SMS
sms send sender-phone-number textmessageสร้าง SMS ขาเข้าที่จำลองขึ้น รายการต่อไปนี้อธิบายพารามิเตอร์และค่าของพารามิเตอร์- sender-phone-number: มีสตริงตัวเลขที่กำหนดเอง
- textmessage: ข้อความ SMS
ตัวอย่างต่อไปนี้จะส่งข้อความ "สวัสดี" ไปยังหมายเลขโทรศัพท์ 4085555555
sms send 4085555555 hi there
คอนโซลจะส่งต่อข้อความ SMS ไปยังเฟรมเวิร์ก Android ซึ่งจะส่งต่อข้อความไปยังแอปในโปรแกรมจำลองที่จัดการ SMS เช่น แอป Messages หากคุณส่งตัวเลข 10 ตัว แอปจะจัดรูปแบบเป็นหมายเลขโทรศัพท์ สตริงตัวเลขที่ยาวหรือสั้นกว่านี้จะแสดงตามที่คุณส่ง
การจำลองลายนิ้วมือ
finger touch fingerprint-id: จำลองการใช้นิ้วแตะเซ็นเซอร์
finger remove: จำลองการนำนิ้วออก
ดูวิธีการใช้คำสั่งเหล่านี้ได้ที่ส่วนต่อไปนี้เกี่ยวกับการจำลองและการตรวจสอบลายนิ้วมือ
บันทึกหน้าจอ
คำสั่งบันทึกหน้าจอช่วยให้สามารถบันทึกไฟล์วิดีโอคุณภาพสูงของจอแสดงผลจริงของโปรแกรมจำลองได้โดยตรงจากระบบโฮสต์ ซึ่งมีประโยชน์อย่างมากสำหรับไปป์ไลน์การรวมอย่างต่อเนื่องและการรายงานข้อบกพร่องอัตโนมัติ
screenrecord {start| stop} fileเริ่มหรือหยุดกระบวนการบันทึกหน้าจอ- start file: เริ่มบันทึกวิดีโอ ไฟล์เอาต์พุตต้องลงท้ายด้วยนามสกุล
.webmที่จำเป็น ระบบจะบันทึกวิดีโอที่บันทึกไว้โดยตรงในไดเรกทอรีเอาต์พุตคอนโซลของ AVD:~/.android/avd/avd_name.avd/console_out/file - stop file: หยุดกระบวนการบันทึกการแสดงผลที่ทำงานอยู่
- start file: เริ่มบันทึกวิดีโอ ไฟล์เอาต์พุตต้องลงท้ายด้วยนามสกุล
การทำงานอัตโนมัติและมาโคร
ระบบย่อยของระบบอัตโนมัติช่วยให้นักพัฒนาซอฟต์แวร์บันทึกการเปลี่ยนสถานะมาโครในอุปกรณ์เสมือนจริงที่ทำงานอยู่ และเล่นซ้ำเพื่อเรียกใช้ขั้นตอนการทดสอบอัตโนมัติได้
automation {record| stop-record| play| stop-play}จัดการการบันทึกมาโครอัตโนมัติ- record: เริ่มบันทึกการเปลี่ยนแปลงสถานะของอุปกรณ์และอินพุต
- stop-record: หยุดเซสชันการบันทึกมาโครปัจจุบัน
- play: เริ่มเล่นลำดับมาโครที่บันทึกไว้
- stop-play: หยุดลำดับการเล่นมาโครที่ทำงานอยู่
ฟิสิกส์ (6DoF)
คำสั่งฟิสิกส์จะจัดการการบันทึกข้อมูลที่เป็นความจริงของท่าทางเชิงพื้นที่สำหรับโมเดลการเคลื่อนไหวทางกายภาพแบบ 6 องศาอิสระ (6DoF) ซึ่งใช้เพื่อจำลองการติดตามการเคลื่อนไหวขั้นสูง
physics {record-gt| stop}จัดการไฟล์บันทึกของโมเดลท่าทางทางกายภาพ- record-gt: เริ่มบันทึกข้อมูลการเคลื่อนไหว 6DoF ที่เป็นความจริง
- stop: หยุดกระบวนการบันทึกข้อมูลที่เป็นความจริงในปัจจุบัน
การควบคุมอุปกรณ์ขั้นสูง
ส่วนนี้จะรวบรวมปลายทางคำสั่งคอนโซลที่มีความเฉพาะทางสูงสำหรับการกำหนดค่าการจำลองขั้นสูง ซึ่งรวมถึงพร็อกซีเครือข่าย การกำหนดค่าการแสดงผลหลายจอ การลบล้างการแสดงผล และการแก้ไขข้อบกพร่องโดยตรงของไฮเปอร์ไวเซอร์
multidisplay {add| del}เพิ่มหรือลบหน้าจอเสมือนรองเพื่อทดสอบการกำหนดค่าหลายหน้าจอ หมายเหตุ: ระบบไม่รองรับจอภาพรองในโปรไฟล์แบบพับได้ เช่น Pixel Fold หรือโปรแกรมจำลองที่ปรับขนาดได้proxy {set| clear}กำหนดค่าการส่งต่อพร็อกซีเครือข่ายแบบเป็นโปรแกรมจากคอนโซล- set host port: กำหนดการตั้งค่าพร็อกซีเป้าหมาย
- clear: รีเซ็ตการกำหนดค่าพร็อกซีกลับเป็นค่าเริ่มต้น หมายเหตุ: การดำเนินการชุดพร็อกซีจะดำเนินการไม่สำเร็จในสภาพแวดล้อมการดำเนินการแบบ Headless
virtualscene-image {wall| table} image_pathปรับแต่งผนังพื้นหลังหรือโต๊ะแนวนอนที่แสดงในฟีดกล้องฉากเสมือนจริงด้วยไฟล์ภาพที่ผู้ใช้กำหนดเองresize-display scaleปรับความละเอียดของหน้าจอแบบไดนามิกระหว่างสเกลที่กำหนดล่วงหน้า หมายเหตุ: การกำหนดค่าแบบ Headless ไม่รองรับการปรับความละเอียดnodraw {on| off}ปิดใช้การแสดงผล GUI จริงบนหน้าจอโฮสต์เพื่อลดหน่วยความจำของระบบและภาระงานของ GPU ในระหว่างการเรียกใช้การทำงานอัตโนมัติแบบ Headless ในเบื้องหลังจำนวนมากgrpc portกำหนดค่าการควบคุมอุปกรณ์แบบเป็นโปรแกรมขั้นสูงผ่านปลายทางพอร์ต gRPC ที่กำหนดเองqemu monitorให้สิทธิ์เข้าถึงเทอร์มินัลแบบโต้ตอบโดยตรงไปยังคอนโซลของไฮเปอร์ไวเซอร์ที่เกี่ยวข้อง คำสั่งนี้ป้อนได้ผ่านเซสชันคอนโซล Telnet ที่ใช้งานอยู่เท่านั้นicebox track pidเปิดใช้สแนปชอตระบบอัตโนมัติเมื่อกระบวนการของแอปที่ระบุพบข้อยกเว้นที่ไม่มีการจัดการหรือข้อขัดข้องphonenumber numberตั้งค่าหมายเลขโทรศัพท์ท้องถิ่นเสมือนของอุปกรณ์เป้าหมาย
อินเทอร์เฟซแบบเป็นโปรแกรม gRPC
เวอร์ชันโปรแกรมจำลองที่ทันสมัยรองรับอินเทอร์เฟซแบบเป็นโปรแกรม gRPC ที่มีประสิทธิภาพควบคู่ไปกับคอนโซล Telnet เดิม แม้ว่าคอนโซล Telnet จะเหมาะสำหรับเซสชันแบบอินเทอร์แอกทีฟที่รวดเร็วหรือการเขียนสคริปต์พื้นฐาน แต่อินเทอร์เฟซ gRPC ได้รับการออกแบบมาเพื่อการควบคุมอัตโนมัติที่มีประสิทธิภาพสูง ปลอดภัย และมีประสิทธิภาพในการรวมอย่างต่อเนื่อง (CI) และสภาพแวดล้อมแบบ Headless gRPC ช่วยให้ไม่จำเป็นต้องแยกวิเคราะห์สตรีมข้อความ จัดการแฮนด์เชคเซสชันเทอร์มินัล หรือเปิดพอร์ต localhost ที่ไม่ได้เข้ารหัส โดยการเสนอปลายทางบริการโดยตรง
หากต้องการเลือกใช้ระหว่างคอนโซล Telnet เดิมกับอินเทอร์เฟซแบบเป็นโปรแกรม gRPC สมัยใหม่ โปรดดูการเปรียบเทียบประสิทธิภาพ ความปลอดภัย และความสามารถของฟีเจอร์ต่อไปนี้
| ฟีเจอร์ | คอนโซล Telnet | อินเทอร์เฟซ gRPC |
|---|---|---|
| เหมาะสำหรับ | การแก้ไขข้อบกพร่องด้วยตนเอง เซสชันแบบอินเทอร์แอกทีฟ | CI/CD แบบ Headless, อุปกรณ์ทดสอบอัตโนมัติที่ทำงานหนัก |
| ความเร็ว | ช้ากว่า มีค่าใช้จ่ายเพิ่มเติมสำหรับข้อความ เวลาในการตอบสนองของการเชื่อมต่อ | เพิ่มประสิทธิภาพแล้ว, HTTP/2 แบบมัลติเพล็กซ์, โปรโตคอลที่รวดเร็ว |
| ความปลอดภัย | ไม่เข้ารหัส พอร์ตภายใน (5554-5585) | สามารถรักษาความปลอดภัยด้วย TLS และทำงานผ่านเครือข่ายได้ |
| สตรีม | ไม่รองรับ ใช้ได้เฉพาะคำขอ-การตอบกลับเท่านั้น | สตรีมสำหรับ Logcat, การบันทึกเสียงของผู้มาเยือน |
| สื่อ | เขียนไฟล์เอาต์พุตไปยังดิสก์ของโฮสต์/ผู้เข้าร่วม | บัฟเฟอร์ไบนารีแบบ Over-the-wire โดยตรง |
| ระบบปฏิบัติการของเกสต์ | จำกัดเฉพาะคำสั่งโปรแกรมจำลองที่กำหนดไว้ | เรียกใช้คำสั่ง Bash Shell ของผู้มาเยือนในเครื่อง |
การเปิดใช้งานและการเรียกใช้ gRPC
หากต้องการใช้ปลายทาง gRPC ให้เปิดโปรแกรมจำลองของ Android จากบรรทัดคำสั่งและใส่ Flag -grpc โดยระบุพอร์ต Loopback เป้าหมาย
# Start the emulator with the gRPC service enabled on port 8556
emulator -grpc localhost:8556 @Pixel_Fold
เมื่อโปรแกรมจำลองทำงานโดยเปิดใช้บริการ gRPC แล้ว คุณจะทำการเรียก RPC แบบเป็นโปรแกรมได้ สำหรับการทดสอบบรรทัดคำสั่ง ให้ใช้ยูทิลิตี grpcurl เพื่อสื่อสารกับบริการของโปรแกรมจำลอง คำขอทั้งหมดจะอยู่ในรูปแบบ JSON และส่งผ่านข้อความธรรมดา
# Query the status of the virtual device using grpcurl
grpcurl -plaintext -d '{}' localhost:8556 \
android.emulation.control.EmulatorController/getStatus
# Simulate an incoming phone call
grpcurl -plaintext -d '{"operation": "InitCall", "number": "1234567890"}' localhost:8556 \
android.emulation.control.EmulatorController/sendPhone
# Simulate typing text into the guest OS
grpcurl -plaintext -d '{"text": "Hello"}' localhost:8556 \
android.emulation.control.EmulatorController/sendKey
การแมปคอนโซล Telnet กับบริการ gRPC
ตารางอ้างอิงต่อไปนี้จะแมปคำสั่งคอนโซล Telnet เดิมกับบริการและเมธอด gRPC ที่เกี่ยวข้อง ซึ่งจะระบุวิธีทำให้การโต้ตอบกับอุปกรณ์เสมือนจริงทั่วไปเป็นแบบอัตโนมัติโดยใช้โปรแกรม
| หมวดหมู่ | คำสั่ง Telnet เดิม | บริการ/เมธอด gRPC |
|---|---|---|
| สถานะ | ping |
EmulatorController/getStatus |
| สถานะ | avd name |
incubating.AvdService/getAvdInfo |
| สถานะ | kill |
EmulatorController/setVmState |
| สถานะ | restart |
EmulatorController/setVmState |
| กำลังไฟ | power display |
EmulatorController/getBattery |
| กำลังไฟ | power capacity |
EmulatorController/setBattery |
| Geo Loc | geo fix |
EmulatorController/setGps |
| เซ็นเซอร์ | sensor set |
incubating.SensorService/setSensor |
| ข้อมูลไบโอเมตริก | finger touch |
EmulatorController/sendFingerprint |
| ท่าทาง | posture |
EmulatorController/setPosture |
| ท่าทาง | physics / fold |
EmulatorController/setPhysicalModel |
| SMS | sms send |
EmulatorController/sendSms |
| การโทรผ่าน GSM | gsm call |
EmulatorController/sendPhone |
| การโทรผ่าน GSM | phonenumber |
EmulatorController/setPhoneNumber |
| เปลี่ยนเส้นทาง | redir add |
Waterfall/ForwardPort |
| อินพุต | event send EV_KEY |
EmulatorController/sendKey |
| อินพุต | event send EV_ABS |
EmulatorController/sendTouch |
| สื่อ | screenrecord |
incubating.ScreenRecording |
| การแสดงผล | nodraw |
EmulatorController/setDisplayMode |
| ภาพรวม | avd snapshot list |
SnapshotService/ListSnapshots |
| ภาพรวม | avd snapshot load/save |
SnapshotService/LoadSnapshot |
คำสั่งแบบเป็นโปรแกรมเฉพาะสำหรับ gRPC
อินเทอร์เฟซ gRPC มีความสามารถล้ำสมัยหลายอย่างที่ในทางกายภาพแล้วไม่สามารถดำเนินการผ่านการเชื่อมต่อคอนโซล Telnet แบบเดิมได้ ซึ่งรวมถึงการสตรีม Logcat โดยตรง การบันทึกหรือการแทรกเสียงแบบ 2 ทิศทาง การแก้ไข GUI ของโฮสต์ และการเข้าถึง Shell โดยตรง
| บริการ/เมธอด gRPC | พารามิเตอร์ | ความสามารถ |
|---|---|---|
streamLogcat |
{"maxLines": 100} |
สตรีมเอาต์พุต Logcat ของระบบผู้มาเยือน |
streamAudio |
{} |
สตรีมเสียงจากลำโพงผ่านสาย |
injectAudio |
{"audio": "..."} |
แทรกสตรีมเสียงจากไมโครโฟน |
UiController |
{"theme": "DARK"} |
แก้ไขธีมหน้าต่างของหน้าต่างโฮสต์ |
Waterfall/Exec |
{"cmd": "ls"} |
เรียกใช้คำสั่ง Shell ของระบบปฏิบัติการของแขกแบบเนทีฟ |
การจำลองและการตรวจสอบลายนิ้วมือ
ใช้คำสั่ง finger เพื่อจำลองและตรวจสอบการตรวจสอบสิทธิ์ด้วยลายนิ้วมือสำหรับแอป คุณต้องใช้ SDK Tools 24.3 ขึ้นไปและ Android 6.0 (ระดับ API 23) ขึ้นไป
หากต้องการจำลองและตรวจสอบสิทธิ์ด้วยลายนิ้วมือ ให้ทำตามขั้นตอนต่อไปนี้
หากยังไม่มีรหัสลายนิ้วมือ ให้ลงทะเบียนลายนิ้วมือใหม่ในโปรแกรมจำลองโดยเลือกการตั้งค่า > ความปลอดภัย > ลายนิ้วมือ แล้วทำตามวิธีการลงทะเบียน
ตั้งค่าแอปให้ยอมรับการตรวจสอบสิทธิ์ด้วยลายนิ้วมือ หลังจากตั้งค่านี้แล้ว อุปกรณ์จะแสดงหน้าจอการตรวจสอบสิทธิ์ด้วยลายนิ้วมือ
ขณะที่แอปแสดงหน้าจอการตรวจสอบสิทธิ์ด้วยลายนิ้วมือ ให้ไปที่คอนโซลแล้วป้อนคำสั่ง
finger touchและรหัสลายนิ้วมือที่คุณสร้างขึ้น ซึ่งจะจำลองการแตะด้วยนิ้วจากนั้นป้อนคำสั่ง
finger removeเพื่อจำลองการนำนิ้วออก แอปควรตอบสนองราวกับว่าผู้ใช้แตะแล้วนำนิ้วออกจากเซ็นเซอร์ลายนิ้วมือ