שליחת פקודות במסוף האמולטור

כל מכשיר וירטואלי שפועל מספק קונסולה שמאפשרת לשלוח שאילתות ולשלוט בסביבת המכשיר המדומה. לדוגמה, אפשר להשתמש במסוף כדי לנהל את הפניית היציאות, את מאפייני הרשת ואת אירועי הטלפוניה בזמן שהאפליקציה פועלת באמולטור.

כדי להשתמש בפקודות הבאות, צריך להריץ אמולטור. מידע נוסף על הפעלת אמולטור זמין במאמרים הרצת אפליקציות באמולטור Android והפעלת האמולטור משורת הפקודה.

איך מתחילים ומפסיקים סשן במסוף

כדי לגשת למסוף ולהזין פקודות מחלון טרמינל, צריך להשתמש ב-Telnet כדי להתחבר ליציאת המסוף ולספק את אסימון האימות. בכל פעם שמוצג OK במסוף, הוא מוכן לקבל פקודות. אין הנחיה טיפוסית.

כדי להתחבר למסוף של מכשיר וירטואלי פועל:

  1. פותחים חלון טרמינל ומזינים את הפקודה הבאה:

    telnet localhost console-port
    

    אם האמולטור פועל בחלון נפרד, מספר יציאת המסוף מופיע בכותרת החלון, אבל אם הוא פועל בחלון של הכלי, המספר לא מופיע. לדוגמה, כותרת החלון של אמולטור שמשתמש ביציאת מסוף 5554 יכולה להיות Pixel8_API_34:5554. בנוסף, הפקודה adb devices מדפיסה רשימה של מכשירים וירטואליים פעילים ומספרי יציאות המסוף שלהם. מידע נוסף מופיע במאמר בנושא שאילתות לגבי מכשירים.

    הערה: האמולטור מאזין לחיבורים ביציאות 5554 עד 5585 ומקבל חיבורים רק מ-localhost.

  2. אחרי שההודעה OK מוצגת במסוף, מזינים את הפקודה auth auth_token.

    כדי להזין פקודות במסוף, צריך לבצע אימות במסוף של האמולטור. התוכן של auth_token חייב להיות זהה לתוכן של הקובץ .emulator_console_auth_token בספריית הבית.

    אם הקובץ לא קיים, הפקודה telnet localhost console-port יוצרת את הקובץ, שמכיל אסימון אימות שנוצר באופן אקראי. כדי להשבית את האימות, מוחקים את האסימון מהקובץ .emulator_console_auth_token או יוצרים קובץ ריק אם הוא לא קיים.

  3. אחרי שמתחברים למסוף, מזינים פקודות מסוף.

    מזינים help, ‏help command או help-verbose כדי לראות רשימה של פקודות במסוף ולקבל מידע על פקודות ספציפיות.

  4. כדי לצאת מהסשן במסוף, מזינים 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.

פקודות מסוג 'ירי ושכחה'

אם לא צריך שהסשן יהיה פתוח, אפשר להשתמש בקיצור הדרך adb emu, שמבצע את הפקודה ומחזיר מיד את השליטה למעטפת שקראה לפקודה:

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: מציג רשימה של כל קובצי ה-snapshot השמורים.
    • save name: שומר את התמונה בשם name.
    • load name: טעינת תמונת המצב שצוין השם שלה.
    • delete name: מחיקת קובץ ה-snapshot עם השם.

    בדוגמה הבאה נשמרת תמונת מצב בשם firstactivitysnapshot:

    avd snapshot save firstactivitysnapshot
    
  • fold: קיפול המכשיר כדי להציג את הגדרת תצורה של מסך הקטן יותר, אם המכשיר מתקפל וכרגע הוא פתוח.

  • unfold: פותח את המכשיר כדי להציג את הגדרת תצורה של מסך הגדול יותר, אם המכשיר מתקפל ובמצב מקופל.

  • kill: סוגר את המכשיר הווירטואלי.

  • ping: בדיקה אם המכשיר הווירטואלי פועל.

  • rotate: מסובב את ה-AVD נגד כיוון השעון במרווחים של 45 מעלות.

קריסת האמולטור

  • קריסה: קריסת האמולטור במהלך הפעלת האפליקציה.

  • crash-on-exit: גורם לקריסת האמולטור כשהאפליקציה יוצאת.

ניפוי באגים בתגים

  • debug tags ...: מפעיל או משבית הודעות ניפוי באגים מחלקים ספציפיים של האמולטור. הפרמטר 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 לאמולטור.

אפשר להשתמש באחת מהפקודות הגיאוגרפיות הבאות ברגע שמכשיר וירטואלי פועל. האמולטור מגדיר את המיקום שהזנתם על ידי יצירת ספק מיקום מדומה. הספק הזה מגיב למאזיני מיקום שהוגדרו על ידי אפליקציות ומספק את המיקום ל-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 (נתוני תיקון של מערכת מיקום גלובלית) שמקבל את השעה, המיקום ונתוני התיקון של מקלט GPS:

    geo 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 <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
    OK
    
  • event send types [types ...]: שליחה של סוג אירוע מזויף אחד או יותר.

  • סוג קודי האירועים: רשימה של קודי האירועים עבור סוג האירוע המזויף שצוין.

  • event send type[:code]:[value] [...]: שולח אירוע מזויף אחד או יותר עם קודים וערכי קודים אופציונליים.

‫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 הוק לאוזניות (מענה לשיחה או ניתוק)
KEY_SCREEN פקודה להפעלת שומר המסך
KEY_CONFIG תפריט ההגדרות
KEY_SWITCHVIDEOMODE החלפת מצב הווידאו של המערכת
KEY_KBDILLUMTOGGLE הפעלה או כיבוי של התאורה האחורית במקלדת
טבלת משנה ב': מדיה ורכיבי UI להפעלה
קוד תיאור
KEY_PLAYPAUSE הפעלה או השהיה
KEY_PLAY התחלת הפעלה של מדיה
KEY_PAUSECD השהיית ההפעלה של תקליטור
KEY_STOPCD הפסקת ההפעלה של תקליטור
KEY_NEXTSONG דילוג לטראק הבא
KEY_PREVIOUSSONG דילוג לטראק הקודם
KEY_REWIND הרצה אחורה של הטראק הפעיל
KEY_FASTFORWARD הרצה מהירה קדימה של טראק פעיל
KEY_RECORD פקודת טריגר להקלטה
KEY_SHUFFLE הפעלה או השהיה של ההפעלה האקראית
KEY_REPEAT הפעלה או השהיה של מצב חזרה
KEY_MEDIA טריגר של מקש מדיה
טבלת משנה C: ניווט ומקלדות כלליות
קוד תיאור
KEY_UP כפתורי החיצים (D-pad) למעלה
KEY_DOWN כיוון למטה של כפתורי החיצים (D-pad)
KEY_LEFT כפתורי החיצים (D-pad) שמאלה
KEY_RIGHT כפתורי החיצים (D-pad) ימינה
KEY_PAGEUP ניווט באמצעות Page up
KEY_PAGEDOWN ניווט בדפדוף למטה
KEY_INSERT הוספת טריגר של מקש
KEY_DELETE מחיקת טריגר של מקש
KEY_ENTER הזנת טריגר של מקש
KEY_ESC הפעלה באמצעות מקש Escape
KEY_TAB טריגר של מקש Tab
KEY_SPACE טריגר של מקש הרווח
KEY_BACKSPACE הפעלת המקש Backspace
KEY_CLEAR ניקוי מאגר הקלט
KEY_CANCEL ביטול פעולה פעילה
KEY_OK אישור הבחירה
KEY_SELECT בחירת טריגר של פריט
KEY_GOTO מעבר למקום שנקבע
KEY_HELP גישה להקשר של העזרה
טבלת משנה D: אלפאנומריים וסמלים במקלדת הנומרית
  • אותיות אלפבית רגילות: 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 ± (מקלדת נומרית)
טבלת משנה ה'מקשי צירוף ומקשי פונקציה':
  • מקשי פונקציות רגילים: KEY_F1 עד KEY_F24 (24 קודים).
קוד תיאור
KEY_LEFTSHIFT מקש Shift שמאלי לשינוי המקלדת
KEY_RIGHTSHIFT מקש ה-Shift הימני לשינוי המקלדת
KEY_LEFTCTRL מקש הצירוף Left Control
KEY_RIGHTCTRL מקש הצירוף Control בצד ימין של המקלדת
KEY_LEFTALT מקש הצירוף Alt שמאלי
KEY_RIGHTALT מקש הצירוף Alt בצד ימין של המקלדת
KEY_LEFTMETA מקש Meta/Command שמאלי
KEY_RIGHTMETA מקש מטא/פקודה ימני
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
טבלת משנה F: שלטי משחק וג'ויסטיקים
קוד תיאור
BTN_A / BTN_B / BTN_C הלחצנים העיקריים A/B/C בשלט
BTN_X / BTN_Y / BTN_Z הלחצנים העיקריים X/Y/Z בשלט
BTN_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 סימון לא פעיל של אזור מת בגיימפאד
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 מזהה כלי מברשת הצייר
BTN_TOOL_PENCIL מזהה כלי העיפרון לטיוטה
BTN_TOOL_AIRBRUSH מזהה כלי צבע איירבראש
BTN_TOOL_FINGER מגע האצבע במסך המגע
BTN_TOOL_MOUSE מזהה כלי עכבר חיצוני
BTN_TOOL_LENS כלי עדשת ההגדלה האופטית
BTN_TOOL_DOUBLETAP דגל מהירות ללחיצה כפולה בתנועה
BTN_TOOL_TRIPLETAP דגל מהירות של לחיצה משולשת בתנועה
טבלת משנה ח': קיצורי דרך לאפליקציות
קוד פעולת היעד
KEY_WWW הפעלת דפדפן האינטרנט שמוגדר כברירת מחדל
KEY_MAIL פתיחה של תוכנת האימייל שמוגדרת כברירת מחדל
KEY_BOOKMARKS פתיחת רשימת הסימניות בדפדפן
KEY_CALC פתיחה של כלי המחשבון
KEY_FILE פתיחת סייר הקבצים המקומיים
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 הפעלת פיד של נגן וידאו
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 repeat sequence loop
KEY_PLAYCD פקודת הפעלה של נגן תקליטורים
KEY_PAUSECD פקודת השהיה של נגן תקליטורים
KEY_STOPCD פקודת עצירה של נגן תקליטורים
KEY_DIGITS פקודה להזנת קוד במקלדת דיגיטלית
KEY_TEEN אפשרות לערכי מקלדת לבני נוער
KEY_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 משבצת פעילה (פרוטוקול ב')
ABS_X / _Y / _Z אנלוגי צירי קואורדינטות של ג'ויסטיק
ABS_RX / _RY / _RZ אנלוגי צירים סיבוביים של ג'ויסטיק
ABS_THROTTLE / _BRAKE אנלוגי דוושות ופקדי היגוי
ABS_HAT0X / _HAT0Y -1 / 0 / 1 כובע D-pad ומתגי POV
ABS_PRESSURE 0 עד 255 רמת הלחץ של הסטיילוס או המצביע
ABS_DISTANCE מ"מ מרחק ריחוף (עט סטיילוס)
ABS_TILT_X / _TILT_Y מעלות זוויות ההטיה של הסטיילוס
ABS_VOLUME אנלוגי רמות עוצמת הקול של השלט

האינטראקציה עם מסך המגע ב-Android מבוססת על פרוטוקולים של מולטי-טאץ' (MT). אמולטורים מודרניים מיישמים גם את פרוטוקול א' (בלי שמירת מצב, שליחת מנות של אנשי קשר מופרדות על ידי סימני סנכרון) וגם את פרוטוקול ב' (עם שמירת מצב, הקצאת אנשי קשר למשבצות מעקב ייעודיות). פרוטוקול 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
הדמיה של תנועת פתיחה או סגירה של אצבעות לשינוי מרחק התצוגה

כדי להפעיל זום בשתי אצבעות, משתמשים במשבצות MT פעילות (0 ו-1) כדי לעקוב אחרי שתי קואורדינטות מקבילות של מגע שמתרחקות זו מזו ולתאם ביניהן.

# 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. במהלך האינטראקציה עם ממשק המשתמש הגרפי של האמולטור, במסוף מודפסים קודי האירועים, הסוגים והמיקומים המדויקים.

# 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
  • הודעת טקסט של אירוע: שליחת מחרוזת של תווים שמדמה הקשות על מקשים. ההודעה חייבת להיות מחרוזת 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}: הגדרת מצב תקינות הסוללה.

  • אחוז קיבולת הסוללה: הגדרת מצב קיבולת הסוללה שנותרה באחוזים, מ-0 עד 100.

סטטוס החיבור לרשת (רק אתרנט ורשת סלולרית)

  • סטטוס הרשת: בדיקה של סטטוס הרשת, העיכוב הנוכחי ומאפייני המהירות.

  • 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 100
    
  • network 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 להורדה.

  • מלאה: מהירות ללא הגבלה, אבל תלויה במהירות החיבור של המחשב.

  • num: הגדרה של קצב מדויק ביחידות של קילוביט לשנייה (Kbps) שמשמש להעלאה ולהורדה.

  • up:down: הגדרת קצב מדויק ביחידות של קילוביט לשנייה להעלאה ולהורדה בנפרד.

    כדי להגדיר את מהירות הרשת בהפעלת האמולטור, משתמשים באפשרות -netspeed emulator. דוגמאות:

    emulator -netspeed gsm @Pixel_API_26
    emulator -netspeed 14.4,80 @Pixel_API_26
    

    כדי לשנות את מהירות הרשת בזמן שהאמולטור פועל, מתחברים למסוף ומשתמשים בפקודה network speed:

    network speed 14.4 80
    
  • network capture {start| stop} file שולח מנות לקובץ. הרשימה הבאה מתארת את הפרמטרים ואת ערכי הפרמטרים:

    הערה: החל מגרסה 36.5 של אמולטור Android ואילך, תנועת נתונים של חיבור Wi-Fi מטופלת על ידי netsim כברירת מחדל. פקודת המסוף network capture מתעדת רק תנועה ברשת סלולרית או ברשת WAN מדור קודם, שמנותבת דרך מחסנית QEMU slirp. כדי ללכוד מנות Wi-Fi,‏ Bluetooth או מנות רשת מתקדמות בגרסאות מודרניות של אמולטורים, אפשר לעיין במאמר לכידת תנועת רשת במדריך בנושא רשתות מתקדמות של אמולטורים.

  • 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: סיום שיחת טלפון נכנסת מ-phonenumber או שיחת טלפון יוצאת אל phonenumber.
    • busy: סוגר שיחה יוצאת למספר טלפון ומשנה את מצב השיחה ל-busy. אפשר לשנות את סטטוס השיחה ל'תפוס' רק אם הסטטוס הנוכחי שלה הוא 'ממתינה'.
  • gsm {data| voice} state הפקודה data state משנה את המצב של חיבור הנתונים ב-GPRS, והפקודה voice state משנה את המצב של חיבור הקול ב-GPRS, באופן הבא:

    • לא רשום: אין רשת זמינה.
    • ביתית: ברשת מקומית, לא בנדידה.
    • נדידה: ברשת נדידה.
    • חיפוש: חיפוש רשתות.
    • נדחתה: שיחות חירום בלבד.
    • off: Same as 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. בנוסף לשימוש בפקודת החיישן, אפשר לראות ולשנות את ההגדרות באמולטור במסך Virtual sensors (חיישנים וירטואליים) בכרטיסיות Accelerometer (מד תאוצה) ו-Additional sensors (חיישנים נוספים).

  • סטטוס החיישן: רשימה של כל החיישנים והסטטוס שלהם.

  • 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.

    בדוגמה הבאה נשלחת ההודעה "hi there" למספר הטלפון 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: מפסיק את תהליך ההקלטה הפעיל של המסך.

אוטומציה ומאקרו

מערכת המשנה לאוטומציה מאפשרת למפתחים להקליט מעברים של מצבי מאקרו במכשיר הווירטואלי הפועל ולהפעיל אותם מחדש כדי לבצע תהליכי בדיקה אוטומטיים.

  • automation {record| stop-record| play| stop-play} ניהול הקלטות מאקרו אוטומטיות.
    • record: מתחיל להקליט שינויים במצב המכשיר וקלט.
    • stop-record: מפסיק את הסשן הנוכחי של הקלטת מאקרו.
    • play: מתחיל להפעיל רצף מאקרו מוקלט.
    • stop-play: מפסיק את רצף ההפעלה של המאקרו הפעיל.

פיזיקה (6DoF)

הפקודות של הפיזיקה מנהלות רישום של תנוחות מרחביות של תנועה פיזית עם שש דרגות חופש (6DoF), שמשמשות להדמיה של מעקב תנועה מתקדם.

  • physics {record-gt| stop} ניהול הקלטות של מודל תנוחות פיזיות.
    • record-gt: מתחיל להקליט נתוני תנועה של 6DoF (שש דרגות חופש) של האמת הבסיסית.
    • stop: מפסיק את תהליך ההקלטה הנוכחי של נתוני האמת.

ממשק השליטה במכשירים מתקדם

בקטע הזה מרוכזות נקודות קצה של פקודות קונסולה מאוד ספציפיות להגדרות מתקדמות של אמולציה, כולל שרתי proxy ברשת, הגדרות של כמה מסכים, ביטולים של עיבוד נתונים וניפוי באגים ישיר של היפר-ויזורים.

  • multidisplay {add| del} מוסיף או מוחק מסכים וירטואליים משניים כדי לבדוק הגדרות של ריבוי מסכים. הערה: אין תמיכה במסכים משניים בפרופילים של מכשירים מתקפלים כמו Pixel Fold או האמולטור שניתן לשינוי גודל.

  • proxy {set| clear} הגדרת העברה של שרת proxy ברשת באופן פרוגרמטי מהמסוף.

    • set host port: הגדרת הגדרות לשרת proxy ליעד.
    • clear: איפוס הגדרות ה-proxy לברירת המחדל. הערה: פעולות להגדרת שרת proxy נכשלות בסביבות הפעלה ללא GUI.
  • virtualscene-image {wall| table} image_path התאמה אישית של קבצים של תמונות משתמשים כדי להציג אותם כרקע של קירות או שולחנות אופקיים בפיד המצלמה של הסצנה הווירטואלית.

  • resize-display scale התאמה דינמית של רזולוציית המסך בין קנה מידה מוגדר מראש. הערה: התאמות של רזולוציה לא נתמכות בהגדרות ללא ראש.

  • nodraw {on| off} משבית את העיבוד של ממשק משתמש פיזי במסך המארח כדי לצמצם את זיכרון המערכת ואת העומס על ה-GPU במהלך הפעלות אוטומטיות של headless ברקע בהיקף גדול.

  • grpc port הגדרה של שליטה מתקדמת במכשירים באמצעות תוכנה דרך נקודות קצה של יציאות gRPC בהתאמה אישית.

  • qemu monitor מאפשרת גישה ישירה ואינטראקטיבית למסוף של ההיפר-ויז'ר הבסיסי. אפשר להזין את הפקודה הזו רק במהלך הפעלת מסוף Telnet פעיל.

  • icebox track pid מפעיל צילומי מצב אוטומטיים של המערכת כשתהליך האפליקציה שצוין חווה חריגה או קריסה שלא טופלו.

  • phonenumber number מגדיר את מספר הטלפון המקומי הווירטואלי של מכשיר היעד.

ממשק פרוגרמטי של gRPC

גרסאות מודרניות של אמולטורים תומכות בממשק תוכנותי gRPC עוצמתי, לצד מסוף Telnet מדור קודם. קונסולת Telnet מצוינת לסשנים אינטראקטיביים מהירים או לסקריפטים פשוטים, אבל ממשק gRPC מיועד לשליטה אוטומטית מאובטחת, חזקה ובעלת ביצועים גבוהים בשילוב רציף (CI) ובסביבות ללא ממשק משתמש. באמצעות נקודות קצה של שירות ישיר, gRPC מבטל את הצורך בניתוח של זרמי טקסט, בניהול של לחיצות ידיים של הפעלת מסוף או בחשיפה של יציאות localhost לא מוצפנות.

כדי לעזור לכם לבחור בין מסוף Telnet מדור קודם לבין ממשק gRPC מודרני לתכנות, ריכזנו כאן השוואה בין הביצועים, האבטחה והיכולות של התכונות:

תכונה מסוף Telnet ממשק gRPC
מתאים במיוחד עבור ניפוי באגים ידני, סשנים אינטראקטיביים. ‫CI/CD ללא ממשק משתמש, מערכות בדיקה אוטומטיות מורכבות.
מהירות איטי יותר; תקורה של טקסט, זמן אחזור של החיבור. אופטימלי; HTTP/2 מרובה, פרוטוקול מהיר.
אבטחה לא מוצפן; יציאות מקומיות (5554 עד 5585). יכול להיות מאובטח באמצעות TLS, פועל ברשתות.
Streams לא נתמך; רק בקשות ותשובות. שידורים ל-logcat, ללכידת אודיו של אורח.
מדיה כתיבת קובצי פלט לדיסק של המארח או האורח. מאגרי נתונים בינאריים ישירים דרך חוט.
מערכת הפעלה אורחת מוגבל לפקודות קבועות של אמולטורים. מריצה פקודות נייטיב של מעטפת Bash של אורח.

הפעלת gRPC וביצוע שיחות

כדי להשתמש בנקודות הקצה של gRPC, מפעילים את אמולטור Android משורת הפקודה וכוללים את הדגל -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 power display EmulatorController/getBattery
Power power capacity EmulatorController/setBattery
מיקום גיאוגרפי 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
Rendering nodraw EmulatorController/setDisplayMode
תמונות מצב avd snapshot list SnapshotService/ListSnapshots
תמונות מצב avd snapshot load/save SnapshotService/LoadSnapshot

פקודות פרוגרמטיות שייחודיות ל-gRPC

ממשק gRPC מספק כמה יכולות מתקדמות שאי אפשר לבצע באמצעות חיבורים למסוף Telnet מדור קודם. הן כוללות הזרמת logcat ישירה, לכידה או הזרקה של אודיו דו-כיווני, שינויים בממשק המשתמש הגרפי של המארח וגישה ישירה למעטפת.

שירות / שיטה של gRPC פרמטר פונקציה
streamLogcat {"maxLines": 100} הזרמת פלט של יומן המערכת (logcat) של האורח
streamAudio {} הזרמת האודיו של הרמקול דרך החוט
injectAudio {"audio": "..."} הזרקת שידורי אודיו מהמיקרופון
UiController {"theme": "DARK"} שינוי העיצובים של חלונות המארח
Waterfall/Exec {"cmd": "ls"} מריץ פקודות Shell של מערכת הפעלה אורחת

סימולציה ואימות של טביעת אצבע

איור 1. מסך אימות באמצעות טביעת אצבע.

אפשר להשתמש בפקודה finger כדי לדמות ולאמת אימות באמצעות טביעת אצבע באפליקציה. נדרשים SDK Tools מגרסה 24.3 ואילך ו-Android מגרסה 6.0 (רמת API‏ 23) ואילך.

כדי לדמות ולאמת אימות באמצעות טביעת אצבע, פועלים לפי השלבים הבאים:

  1. אם עדיין אין לכם מזהה טביעת אצבע, צריך לרשום טביעת אצבע חדשה באמולטור. לשם כך, בוחרים באפשרות הגדרות > אבטחה > טביעת אצבע ופועלים לפי הוראות הרישום.

  2. מגדירים את האפליקציה כך שתקבל אימות בטביעת אצבע. אחרי שמבצעים את ההגדרה הזו, מוצג במכשיר מסך אימות טביעת האצבע.

  3. בזמן שמסך אימות טביעת האצבע מוצג באפליקציה, עוברים למסוף ומזינים את הפקודה finger touch ואת מזהה טביעת האצבע שיצרתם. הפעולה הזו מדמה מגע של אצבע.

  4. לאחר מכן, מזינים את הפקודה finger remove כדי לדמות הסרה של האצבע. האפליקציה צריכה להגיב כאילו משתמש נגע בחיישן טביעת האצבע ואז הזיז את האצבע ממנו.