دستورات کنسول شبیه ساز را ارسال کنید

هر دستگاه مجازی در حال اجرا، کنسولی را ارائه می‌دهد که به شما امکان می‌دهد محیط دستگاه شبیه‌سازی شده را جستجو و کنترل کنید. به عنوان مثال، می‌توانید از کنسول برای مدیریت تغییر مسیر پورت، ویژگی‌های شبکه و رویدادهای تلفنی در حالی که برنامه شما روی شبیه‌ساز اجرا می‌شود، استفاده کنید.

دستورات زیر مستلزم آن است که شما از قبل یک شبیه‌ساز را اجرا کرده باشید. برای اطلاعات بیشتر در مورد اجرای یک شبیه‌ساز، به «اجرای برنامه‌ها در شبیه‌ساز اندروید» و «شروع شبیه‌ساز از خط فرمان» مراجعه کنید.

شروع و توقف یک جلسه کنسول

برای دسترسی به کنسول و وارد کردن دستورات از طریق پنجره ترمینال، از telnet برای اتصال به پورت کنسول و ارائه توکن احراز هویت خود استفاده کنید. هر بار که کنسول عبارت OK را نمایش می‌دهد، آماده پذیرش دستورات است. هیچ اعلان معمولی وجود ندارد.

برای اتصال به کنسول یک دستگاه مجازی در حال اجرا:

  1. یک پنجره ترمینال باز کنید و دستور زیر را وارد کنید:

    telnet localhost console-port
    

    عنوان پنجره شبیه‌ساز، شماره پورت کنسول را هنگام اجرا در یک پنجره جداگانه فهرست می‌کند، اما نه هنگام اجرا در یک پنجره ابزار. برای مثال، عنوان پنجره برای یک شبیه‌ساز که از پورت کنسول ۵۵۵۴ استفاده می‌کند، می‌تواند Pixel8_API_34:5554 باشد. همچنین، دستور adb devices فهرستی از دستگاه‌های مجازی در حال اجرا و شماره پورت کنسول آنها را چاپ می‌کند. برای اطلاعات بیشتر، به Query for devices مراجعه کنید.

    نکته: شبیه‌ساز به اتصالات روی پورت‌های ۵۵۵۴ تا ۵۵۸۵ گوش می‌دهد و فقط اتصالات از 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} وضعیت دستگاه را در snapshotها به صورت زیر ذخیره و بازیابی می‌کند:

    • لیست : تمام اسنپ‌شات‌های ذخیره‌شده را فهرست می‌کند.
    • ذخیره نام : عکس فوری را با نام دلخواه ذخیره می‌کند.
    • load name : اسنپ‌شات نامگذاری‌شده را بارگذاری می‌کند.
    • حذف نام : اسنپ‌شات نامگذاری‌شده را حذف می‌کند.

    مثال زیر یک snapshot با نام firstactivitysnapshot ذخیره می‌کند:

    avd snapshot save firstactivitysnapshot
    
  • تا کردن : اگر دستگاه تاشو باشد و در حال حاضر باز باشد، دستگاه را تا می‌کند تا پیکربندی صفحه نمایش کوچکتر آن نمایش داده شود.

  • باز شدن : اگر دستگاه تاشو باشد و در حال حاضر تا شده باشد، دستگاه را باز می‌کند تا پیکربندی صفحه نمایش بزرگتر آن نمایش داده شود.

  • kill : دستگاه مجازی را خاتمه می‌دهد.

  • پینگ : بررسی می‌کند که آیا دستگاه مجازی در حال اجرا است یا خیر.

  • چرخش : AVD را در جهت خلاف عقربه‌های ساعت و با گام‌های ۴۵ درجه می‌چرخاند.

خراب شدن شبیه‌ساز

  • crash : باعث از کار افتادن شبیه‌ساز در حین اجرای برنامه می‌شود.

  • crash-on-exit : هنگام خروج از برنامه، شبیه‌ساز را از کار می‌اندازد.

برچسب‌های اشکال‌زدایی

  • debug tags ... : پیام‌های اشکال‌زدایی را از بخش‌های خاصی از شبیه‌ساز فعال یا غیرفعال می‌کند. پارامتر tags باید مقداری از لیست برچسب‌های اشکال‌زدایی باشد که هنگام اجرای emulator -help-debug-tags ظاهر می‌شود. برای اطلاعات بیشتر در مورد گزینه -help-debug-tags ، به جدول گزینه‌های متداول مراجعه کنید. مثال زیر برچسب radio را فعال می‌کند:

    debug radio
    

تغییر مسیر پورت

  • redir list : تغییر مسیر پورت فعلی را فهرست می‌کند.

  • redir add protocol:host-port:guest-port یک تغییر مسیر پورت جدید به شرح زیر اضافه می‌کند:

    • پروتکل : باید یا tcp باشد یا udp.
    • host-port : شماره پورتی که باید روی میزبان باز شود.
    • guest-port : شماره پورتی که قرار است داده‌ها در شبیه‌ساز به آن هدایت شوند.
  • redir del protocol:host-port ‎ تغییر مسیر پورت را حذف می‌کند.

    • پروتکل : باید یا tcp باشد یا udp.
    • host-port : شماره پورتی که باید روی میزبان باز شود.

موقعیت جغرافیایی

با ارسال یک اصلاحیه GPS به شبیه‌ساز، موقعیت جغرافیایی گزارش‌شده به برنامه‌های در حال اجرا در داخل شبیه‌ساز را تنظیم می‌کند.

شما می‌توانید به محض اجرای یک دستگاه مجازی، یکی از دستورات جغرافیایی زیر را صادر کنید. شبیه‌ساز با ایجاد یک ارائه‌دهنده موقعیت مکانی ساختگی، مکانی را که وارد می‌کنید، تنظیم می‌کند. این ارائه‌دهنده به شنونده‌های موقعیت مکانی تنظیم‌شده توسط برنامه‌ها پاسخ می‌دهد و موقعیت مکانی را در اختیار LocationManager قرار می‌دهد. هر برنامه‌ای می‌تواند با فراخوانی LocationManager.getLastKnownLocation("gps") از مدیر موقعیت مکانی درخواست کند تا موقعیت فعلی GPS دستگاه شبیه‌سازی‌شده را دریافت کند.

  • geo fix longitude latitude [altitude] [satellites] [velocity] : یک تنظیم ساده GPS را به شبیه‌ساز ارسال می‌کند. طول و عرض جغرافیایی را بر حسب درجه اعشاری مشخص کنید. از اعداد ۱ تا ۱۲ برای تعیین تعداد ماهواره‌های مورد استفاده برای تعیین موقعیت استفاده کنید و ارتفاع را بر حسب متر و سرعت را بر حسب گره تعیین کنید.

  • جمله geo nmea : یک جمله 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
    
  • انواع ارسال رویداد [انواع ...] : یک یا چند نوع رویداد جعلی ارسال می‌کند.

  • نوع کدهای رویداد : کدهای رویداد را برای نوع رویداد جعلی مشخص شده لیست می‌کند.

  • ارسال رویداد type[:code]:[value] [...] : یک یا چند رویداد جعلی را با کدهای اختیاری و مقادیر کد ارسال می‌کند.

EV_KEY — ارجاعات کد کلید

نوع رویداد EV_KEY برای شبیه‌سازی فشردن و رها کردن دکمه استفاده می‌شود. جداول زیر لیست گسترده کدهای کلید پشتیبانی شده را به دسته‌های منطقی تقسیم می‌کنند. برای هر کد کلید، ارسال مقدار 1 ، فشردن را شبیه‌سازی می‌کند، در حالی که مقدار 0 رها کردن را شبیه‌سازی می‌کند. مقدار 2 نشان دهنده تکرار کلید است.

زیرگروه A: کلیدهای سیستم اندروید
کد توضیحات
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 تغییر نور پس زمینه کیبورد
زیرگروه ب: کنترل‌های رسانه و پخش
کد توضیحات
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 پیمایش صفحه به بالا
KEY_PAGEDOWN پیمایش صفحه به پایین
KEY_INSERT کلید ماشه را وارد کنید
KEY_DELETE حذف ماشه کلید
KEY_ENTER کلید ماشه را وارد کنید
KEY_ESC فعال کننده کلید فرار
KEY_TAB کلید Tab ماشه
KEY_SPACE کلید فاصله (Spacebar) ماشه را فعال می‌کند
KEY_BACKSPACE کلید فعال کننده‌ی Backspace
KEY_CLEAR پاک کردن بافر ورودی
KEY_CANCEL لغو اقدام فعال
KEY_OK انتخاب را تأیید/تایید کنید
KEY_SELECT تریگر مورد را انتخاب کنید
KEY_GOTO به محل تعیین شده بروید
KEY_HELP دسترسی به متن راهنما
جدول فرعی D: نمادهای الفبایی-عددی و صفحه کلید
  • حروف الفبای استاندارد: KEY_A تا KEY_Z (۲۶ کد).
  • کلیدهای صفحه کلید عددی: KEY_1 تا KEY_0 (۱۰ کد).
کد نماد شخصیت
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 وارد کردن (صفحه کلید عددی)
KEY_KPEQUAL = (صفحه کلید عددی)
KEY_KPCOMMA , (صفحه کلید عددی)
KEY_KPJPCOMMA , (طرح ژاپنی)
KEY_KPLEFTPAREN ( (صفحه کلید عددی))
KEY_KPRIGHTPAREN ) (صفحه کلید عددی)
KEY_KPPLUSMINUS ± (صفحه کلید عددی)
زیرجدول E: کلیدهای اصلاح‌کننده و تابعی
  • کلیدهای تابع استاندارد: KEY_F1 تا KEY_F24 (۲۴ کد).
کد توضیحات
KEY_LEFTSHIFT اصلاح‌کننده‌ی صفحه‌کلید شیفت چپ
KEY_RIGHTSHIFT اصلاح‌کننده‌ی صفحه‌کلید Shift به راست
KEY_LEFTCTRL اصلاح‌کننده‌ی صفحه‌کلید با کنترل چپ
KEY_RIGHTCTRL اصلاح‌کننده‌ی صفحه‌کلید کنترل راست
KEY_LEFTALT اصلاح‌کننده‌ی کلید Alt چپ
KEY_RIGHTALT اصلاح‌کننده‌ی کلید Alt سمت راست
KEY_LEFTMETA کلید متا/فرمان چپ
KEY_RIGHTMETA کلید متا/فرمان راست
KEY_CAPSLOCK ضامن صفحه کلید Caps Lock
KEY_NUMLOCK تغییر وضعیت صفحه کلید Num Lock
KEY_SCROLLLOCK ضامن قفل پیمایش صفحه کلید
KEY_COMPOSE کمک‌رسان نوشتن کاراکتر
KEY_FN کلید FN کیبورد فیزیکی
KEY_FN_ESC ترکیبات کلیدهای تابع
KEY_FN_1 میانبر عملکرد ویژه ۱
KEY_FN_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 پرچم سرعت با سه بار لمس ژست حرکتی
جدول فرعی H: میانبرهای برنامه
کد اقدام هدفمند
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 پخش فید پخش کننده VCR
KEY_VCR2 پخش فید پخش کننده VCR 2
KEY_AUX ورودی‌های پورت رسانه کمکی
KEY_SETUP منوی تنظیمات
KEY_PROG1 به _PROG4 کلیدهای برنامه تعریف شده توسط کاربر
KEY_ZOOM ضامن نمای بزرگنمایی
KEY_MODE انتخاب حالت Viewport
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 حلقه تکرار توالی AB
KEY_PLAYCD فرمان پخش دسته سی‌دی
KEY_PAUSECD دستور مکث در عرشه سی دی
KEY_STOPCD فرمان توقف پخش سی‌دی
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 (تاخوردگی پیکسل)
ABS_MT_POSITION_Y 0 تا 2207 مختصات Y (تاخوردگی پیکسل)
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 عدد صحیح شناسه لکه تماس
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 و سوئیچ‌های POV
ABS_PRESSURE 0 تا 255 سطح نیروی قلم/اشاره‌گر
ABS_DISTANCE میلی‌متر فاصله شناور (قلم استایلوس)
ABS_TILT_X / _TILT_Y درجه زاویه شیب قلم
ABS_VOLUME آنالوگ سطوح صدای کنترلر

تعامل لمسی اندروید توسط پروتکل‌های چند لمسی (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
شبیه‌سازی حرکت زوم با دو انگشت

برای فعال کردن زوم دو انگشتی، از اسلات‌های فعال 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 باشد. پست‌های یونیکد مطابق با صفحه کلید فعلی دستگاه، نگاشت معکوس می‌شوند و کاراکترهای پشتیبانی نشده بی‌صدا حذف می‌شوند.

کنترل‌های وضعیت توان

  • نمایشگر توان : وضعیت باتری و شارژر را نمایش می‌دهد.

  • برق AC {روشن| خاموش} : وضعیت شارژ AC را روی روشن یا خاموش تنظیم می‌کند.

  • وضعیت توان {نامشخص| در حال شارژ| در حال دشارژ| در حال شارژ نبودن| پر بودن} : وضعیت باتری را مطابق با مقدار مشخص شده تغییر می‌دهد.

  • وضعیت باتری را تنظیم می‌کند. (حالت وجود باتری را تنظیم می‌کند.)

  • سلامت پاور {ناشناخته| خوب| داغ شدن بیش از حد| قطع شدن| ولتاژ بیش از حد| خرابی} : وضعیت سلامت باتری را تنظیم می‌کند.

  • درصد ظرفیت باتری : وضعیت ظرفیت باتری باقیمانده را به صورت درصد از ۰ تا ۱۰۰ تنظیم می‌کند.

وضعیت اتصال شبکه (فقط اترنت و تلفن همراه)

  • وضعیت شبکه : وضعیت شبکه و ویژگی‌های تأخیر و سرعت فعلی را بررسی می‌کند.

  • network delay latency شبکه شبیه‌سازی شده را تغییر می‌دهد.

    این شبیه‌ساز به شما امکان می‌دهد سطوح مختلف تأخیر شبکه را شبیه‌سازی کنید تا بتوانید برنامه خود را در محیطی که بیشتر شبیه شرایط اجرای واقعی است، آزمایش کنید. می‌توانید در هنگام راه‌اندازی شبیه‌ساز، سطح یا محدوده تأخیر را تنظیم کنید، یا می‌توانید از کنسول برای تغییر تأخیر در حین اجرای برنامه در شبیه‌ساز استفاده کنید.

    قالب تأخیر شبکه یکی از موارد زیر است (اعداد به میلی ثانیه هستند):

    قالب تأخیر شبکه:

  • gprs : GPRS که از محدوده تأخیر حداقل ۱۵۰ و حداکثر ۵۵۰ استفاده می‌کند.

  • لبه : EDGE/EGPRS، که از محدوده تأخیر حداقل ۸۰ و حداکثر ۴۰۰ استفاده می‌کند.

  • umts : UMTS/3G که از محدوده تأخیر حداقل ۳۵ و حداکثر ۲۰۰ استفاده می‌کند.

  • هیچ : بدون تأخیر.

  • 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 که از سرعت ۱۴.۴ برای ارسال و دریافت استفاده می‌کند.

  • hscsd : HSCSD که از سرعت ۱۴.۴ در بالا و ۴۳.۲ در پایین استفاده می‌کند.

  • gprs : GPRS که از سرعت ۴۰.۰ برای ارسال و ۸۰.۰ برای ارسال استفاده می‌کند.

  • لبه : EDGE/EGPRS که از سرعت ۱۱۸.۴ به بالا و ۲۳۶.۸ به پایین استفاده می‌کند.

  • umts : UMTS/3G که از سرعت ۱۲۸.۰ در سرعت بالا و ۱۹۲۰ در سرعت پایین استفاده می‌کند.

  • hsdpa : HSDPA که از سرعت ۳۴۸.۰ برای دانلود و ۱۴۴۰۰.۰ برای دانلود استفاده می‌کند.

  • lte : LTE که از سرعت ۵۸۰۰۰ در ارسال و ۱۷۳۰۰۰ در ارسال استفاده می‌کند.

  • evdo : EVDO که از سرعت ۷۵۰۰۰ در جهت بالا و ۲۸۰۰۰۰ در جهت پایین استفاده می‌کند.

  • کامل : سرعت نامحدود، اما به سرعت اتصال رایانه شما بستگی دارد.

  • num : نرخ دقیق را بر حسب کیلوبیت بر ثانیه برای آپلود و دانلود تنظیم می‌کند.

  • 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 بسته‌ها را به یک فایل ارسال می‌کند. لیست زیر پارامترها و مقادیر پارامترها را شرح می‌دهد:

    توجه: از نسخه ۳۶.۵ به بعد شبیه‌ساز اندروید، ترافیک اتصال وای‌فای به طور پیش‌فرض توسط netsim مدیریت می‌شود. دستور network capture console فقط ترافیک قدیمی تلفن همراه/WAN را که از طریق پشته QEMU slirp مسیریابی می‌شوند، ضبط می‌کند. برای ضبط بسته‌های وای‌فای، بلوتوث یا شبکه پیشرفته در نسخه‌های مدرن شبیه‌ساز، به بخش Capture network traffic در راهنمای Advanced Emulator Networking مراجعه کنید.

  • start file : شروع به ضبط بسته‌های شبکه می‌کند. برای امنیت، نام فایل باید یک نام ساده باشد (بدون جداکننده مسیر مانند / و بدون .. ). فایل ضبط بسته در پوشه console_out/ در پوشه محتوای AVD شما ذخیره می‌شود (برای مثال، ~/.android/avd/avd_name.avd/console_out/file ).

  • توقف فایل : ارسال بسته‌ها به فایل مشخص شده را متوقف می‌کند.

شبیه‌سازی تلفن

شبیه‌ساز اندروید شامل مودم‌های شبیه‌سازی‌شده‌ی GSM و CDMA مخصوص به خود است که به شما امکان می‌دهد عملکردهای تلفنی را در شبیه‌ساز شبیه‌سازی کنید. برای مثال، با GSM می‌توانید تماس‌های تلفنی ورودی را شبیه‌سازی کرده و اتصالات داده را برقرار و خاتمه دهید. با CDMA، شما یک منبع اشتراک و لیست رومینگ ترجیحی ارائه می‌دهید. سیستم اندروید تماس‌های شبیه‌سازی‌شده را دقیقاً مانند تماس‌های واقعی مدیریت می‌کند. شبیه‌ساز از صدای تماس پشتیبانی نمی‌کند.

  • gsm {call| accept| cancel| busy} phonenumber پارامترهای gsm به شرح زیر است:

    • call : یک تماس تلفنی ورودی از phonenumber را شبیه‌سازی می‌کند.
    • accept : یک تماس ورودی از phonenumber را می‌پذیرد و وضعیت تماس را به فعال تغییر می‌دهد. شما می‌توانید وضعیت یک تماس را فقط زمانی به فعال تغییر دهید که وضعیت فعلی آن در حالت انتظار یا انتظار (holded) باشد.
    • لغو : یک تماس تلفنی ورودی از یا تماس تلفنی خروجی به شماره تلفن را خاتمه می‌دهد.
    • مشغول : یک تماس خروجی به phonenumber را می‌بندد و وضعیت تماس را به مشغول تغییر می‌دهد. شما می‌توانید وضعیت یک تماس را فقط زمانی به مشغول تغییر دهید که وضعیت فعلی آن در حالت انتظار باشد.
  • gsm {data| voice} state دستور data state وضعیت اتصال داده GPRS و دستور voice state وضعیت اتصال صوتی GPRS را به شرح زیر تغییر می‌دهد:

    • ثبت نشده : شبکه‌ای در دسترس نیست.
    • خانه : در شبکه محلی، بدون رومینگ.
    • رومینگ : در شبکه رومینگ.
    • جستجو : جستجوی شبکه‌ها.
    • رد شد : فقط تماس‌های اضطراری.
    • خاموش : همانند ثبت نشده است.
    • روشن : همانند خانه.
  • gsm hold : وضعیت یک تماس را به حالت انتظار تغییر می‌دهد. شما می‌توانید وضعیت یک تماس را فقط زمانی به حالت انتظار تغییر دهید که وضعیت فعلی آن فعال یا در حال انتظار باشد.

  • لیست gsm : تمام تماس‌های ورودی و خروجی و وضعیت آنها را فهرست می‌کند.

  • وضعیت gsm : وضعیت فعلی صدا/داده GSM را گزارش می‌دهد. مقادیر، مقادیری هستند که برای دستورات صوتی و داده شرح داده شده‌اند.

  • gsm signal {rssi| ber} قدرت سیگنال گزارش شده (rssi) و میزان خطای بیت (ber) را در ۱۵ ثانیه بعدی به‌روزرسانی تغییر می‌دهد. لیست زیر پارامترها و مقادیر آنها را شرح می‌دهد:

    • rssi : محدوده ۰ تا ۳۱ و ۹۹ برای ناشناخته است.
    • ber : محدوده بین ۰ تا ۷ و ۹۹ برای نامشخص است.
  • gsm signal-profile num : مشخصات قدرت سیگنال را تنظیم می‌کند. num عددی از ۰ تا ۴ است.

  • cdma ssource source منبع اشتراک CDMA فعلی را تنظیم می‌کند، که در آن منبع یک لیست مجاز مبتنی بر شبکه است که شامل مشترکین اپراتور CDMA و مقادیر آنها به شرح زیر است:

    • nv : اشتراک را از RAM غیرفرار می‌خواند.
    • ruim : اشتراک را از ماژول هویت کاربر قابل حذف (RUIM) می‌خواند.
  • cdma prl_version version : نسخه فعلی لیست رومینگ ترجیحی (PRL) را ذخیره می‌کند. شماره نسخه مربوط به پایگاه داده PRL است که شامل اطلاعاتی است که در طول فرآیند انتخاب و اکتساب سیستم استفاده می‌شود.

مدیریت حسگرها در شبیه‌ساز

این دستورات مربوط به سنسورهای موجود در AVD هستند. علاوه بر استفاده از دستور sensor، می‌توانید تنظیمات را در شبیه‌ساز در صفحه 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 send sender-phone-number textmessage یک پیامک ورودی شبیه‌سازی شده تولید می‌کند. لیست زیر پارامترها و مقادیر آنها را شرح می‌دهد:

    • sender-phone-number : شامل یک رشته عددی دلخواه است.
    • پیامک : پیام کوتاه (sms).

    مثال زیر پیام "hi there" را به شماره تلفن ۴۰۸۵۵۵۵۵۵۵ ارسال می‌کند:

    sms send 4085555555 hi there
    

کنسول، پیام SMS را به فریم‌ورک اندروید ارسال می‌کند که آن را به برنامه‌ای روی شبیه‌ساز که SMS را مدیریت می‌کند، مانند برنامه Messages، ارسال می‌کند. اگر 10 عدد وارد کنید، برنامه آن را به صورت شماره تلفن قالب‌بندی می‌کند. رشته‌های عددی طولانی‌تر یا کوتاه‌تر، نحوه ارسال آنها را نشان می‌دهند.

شبیه‌سازی اثر انگشت

  • شناسه اثر انگشت لمسی : لمس حسگر توسط انگشت را شبیه‌سازی می‌کند.

  • برداشتن انگشت : برداشتن انگشت را شبیه‌سازی می‌کند.

برای دستورالعمل‌های مربوط به نحوه استفاده از این دستورات، به بخش زیر در مورد شبیه‌سازی و اعتبارسنجی اثر انگشت مراجعه کنید.

ضبط صفحه

دستور ضبط صفحه نمایش، امکان ضبط فایل‌های ویدیویی با کیفیت بالا از صفحه نمایش فیزیکی شبیه‌ساز را مستقیماً از سیستم میزبان فراهم می‌کند. این قابلیت برای یکپارچه‌سازی مداوم خطوط لوله و گزارش خودکار اشکالات بسیار مفید است.

  • screenrecord {start| stop} file فرآیند ضبط صفحه نمایش را شروع یا متوقف می‌کند.
    • start file : ضبط ویدیو را شروع می‌کند. فایل خروجی باید با پسوند اجباری .webm تمام شود. ویدیوی ضبط شده مستقیماً در دایرکتوری خروجی کنسول AVD شما ذخیره می‌شود: ~/.android/avd/avd_name.avd/console_out/file .
    • توقف فایل : فرآیند ضبط نمایشگر فعال را متوقف می‌کند.

اتوماسیون و ماکرو

زیرسیستم اتوماسیون به توسعه‌دهندگان اجازه می‌دهد تا انتقال حالت‌های ماکرو را روی دستگاه مجازی در حال اجرا ضبط کرده و آنها را برای اجرای جریان‌های تست خودکار پخش کنند.

  • automation {record| stop-record| play| stop-play} ضبط خودکار ماکروها را مدیریت می‌کند.
    • record : شروع به ضبط تغییرات وضعیت دستگاه و ورودی‌ها می‌کند.
    • توقف ضبط : جلسه ضبط ماکروی فعلی را متوقف می‌کند.
    • پخش : شروع به پخش یک توالی ماکروی ضبط شده می‌کند.
    • توقف-پخش : توالی پخش ماکروی فعال را متوقف می‌کند.

فیزیک (6DoF)

دستورات فیزیک، ثبت موقعیت‌های مکانی واقعی زمین را برای مدل‌های حرکتی فیزیکی شش درجه آزادی (6DoF) مدیریت می‌کنند که برای شبیه‌سازی ردیابی حرکت پیشرفته استفاده می‌شوند.

  • physics {record-gt| stop} ضبط‌های مدل ژست فیزیکی را مدیریت می‌کند.
    • record-gt : شروع به ضبط داده‌های حرکت 6DoF مبتنی بر واقعیت زمینی می‌کند.
    • توقف : فرآیند ضبط اطلاعات واقعی فعلی را متوقف می‌کند.

کنترل‌های پیشرفته دستگاه

این بخش، نقاط پایانی فرمان کنسول بسیار تخصصی را برای پیکربندی‌های شبیه‌سازی پیشرفته، از جمله پروکسی‌های شبکه، پیکربندی‌های چند نمایشگری، لغو رندر و اشکال‌زدایی مستقیم هایپروایزر، جمع‌آوری می‌کند.

  • multidisplay {add| del} مانیتورهای مجازی ثانویه را برای آزمایش پیکربندی‌های چندصفحه‌ای اضافه یا حذف می‌کند. توجه: مانیتورهای ثانویه در پروفایل‌های fold مانند Pixel Fold یا شبیه‌ساز Resizable پشتیبانی نمی‌شوند.

  • proxy {set| clear} فورواردینگ پروکسی شبکه را به صورت برنامه‌نویسی شده از کنسول پیکربندی می‌کند.

    • set host port : تنظیمات پروکسی هدف را پیکربندی می‌کند.
    • پاک کردن : تنظیمات پروکسی را به حالت پیش‌فرض برمی‌گرداند. توجه: عملیات تنظیم پروکسی در محیط‌های اجرای بدون سر (headless execution) با شکست مواجه می‌شود.
  • virtualscene-image {wall| table} image_path دیوارهای پس‌زمینه یا جداول افقی نمایش داده شده در فید دوربین صحنه مجازی را با یک فایل تصویر کاربر سفارشی می‌کند.

  • resize-display scale به صورت پویا وضوح صفحه را بین مقیاس‌های از پیش تعیین‌شده تنظیم می‌کند. توجه: تنظیمات وضوح در پیکربندی‌های بدون سر پشتیبانی نمی‌شوند.

  • nodraw {on| off} رندرینگ رابط کاربری گرافیکی فیزیکی را روی صفحه میزبان غیرفعال می‌کند تا در حین اجرای خودکار خودکار بدون نیاز به پردازش در پس‌زمینه و با حجم بالا، حافظه سیستم و بار پردازنده گرافیکی را کاهش دهد.

  • grpc port کنترل پیشرفته‌ی برنامه‌ریزی‌شده‌ی دستگاه را روی نقاط پایانی پورت gRPC سفارشی پیکربندی می‌کند.

  • qemu monitor دسترسی مستقیم و تعاملی ترمینال به کنسول هایپروایزر اصلی را فراهم می‌کند. این دستور فقط می‌تواند از طریق جلسات فعال کنسول Telnet وارد شود.

  • icebox track pid زمانی که فرآیند برنامه مشخص شده با یک خطای مدیریت نشده یا خرابی مواجه می‌شود، اسنپ‌شات‌های خودکار سیستم را فعال می‌کند.

  • phonenumber number تلفن محلی مجازی دستگاه هدف را تنظیم می‌کند.

رابط برنامه‌نویسی gRPC

نسخه‌های مدرن شبیه‌ساز از یک رابط برنامه‌نویسی قدرتمند gRPC در کنار کنسول قدیمی Telnet پشتیبانی می‌کنند. در حالی که کنسول Telnet برای جلسات تعاملی سریع یا اسکریپت‌نویسی ساده عالی است، رابط gRPC برای کنترل خودکار با کارایی بالا، ایمن و قوی در محیط‌های یکپارچه‌سازی مداوم (CI) و بدون سر (headless) طراحی شده است. gRPC با ارائه نقاط پایانی سرویس مستقیم، نیاز به تجزیه جریان‌های متنی، مدیریت handshakeهای جلسه ترمینال یا افشای پورت‌های میزبان محلی رمزگذاری نشده را از بین می‌برد.

برای کمک به انتخاب بین کنسول قدیمی Telnet و رابط برنامه‌نویسی gRPC مدرن، مقایسه زیر را از نظر عملکرد، امنیت و قابلیت‌های ویژگی بررسی کنید:

ویژگی کنسول تلنت رابط gRPC
بهترین برای اشکال‌زدایی دستی، جلسات تعاملی. CI/CD بدون سر، تجهیزات تست خودکار سنگین.
سرعت کندتر؛ سربار متنی، تأخیر اتصال. بهینه‌سازی‌شده؛ HTTP/2 مالتی‌پلکس‌شده، پروتوتایپ سریع.
امنیت رمزگذاری نشده؛ پورت‌های محلی (۵۵۵۴–۵۵۸۵). می‌تواند با TLS ایمن شود، روی شبکه‌ها کار می‌کند.
جریان‌ها پشتیبانی نشده؛ فقط درخواست-پاسخ. پخش جریانی برای logcat، ضبط صدای مهمان.
رسانه فایل‌های خروجی را روی دیسک میزبان/مهمان می‌نویسد. بافرهای دودویی مستقیم از طریق سیم.
سیستم عامل مهمان محدود به دستورات ثابت شبیه‌ساز. دستورات پوسته bash بومی مهمان را اجرا می‌کند.

راه‌اندازی و فراخوانی gRPC

برای استفاده از نقاط پایانی gRPC، شبیه‌ساز اندروید را از خط فرمان اجرا کنید و پرچم -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 fix EmulatorController/setGps
حسگرها sensor set incubating.SensorService/setSensor
بیومتریک finger touch EmulatorController/sendFingerprint
وضعیت بدن posture EmulatorController/setPosture
وضعیت بدن physics / fold EmulatorController/setPhysicalModel
پیامک 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، ضبط یا تزریق صدا دو طرفه، تغییرات رابط کاربری گرافیکی میزبان و دسترسی مستقیم به پوسته است.

سرویس/روش gRPC پارامتر قابلیت
streamLogcat {"maxLines": 100} خروجی‌های logcat سیستم مهمان را پخش می‌کند
streamAudio {} صدای بلندگو را از طریق سیم پخش می‌کند
injectAudio {"audio": "..."} جریان‌های صوتی میکروفون را تزریق می‌کند
UiController {"theme": "DARK"} تم‌های پنجره‌ی میزبان را تغییر می‌دهد
Waterfall/Exec {"cmd": "ls"} دستورات پوسته سیستم عامل مهمان بومی را اجرا می‌کند

شبیه‌سازی و اعتبارسنجی اثر انگشت

شکل ۱. صفحه تأیید اثر انگشت.

از دستور finger برای شبیه‌سازی و اعتبارسنجی احراز هویت اثر انگشت برای برنامه خود استفاده کنید. به SDK Tools نسخه ۲۴.۳ یا بالاتر و اندروید ۶.۰ (سطح API ۲۳) یا بالاتر نیاز دارید.

برای شبیه‌سازی و اعتبارسنجی احراز هویت اثر انگشت، مراحل زیر را دنبال کنید:

  1. اگر هنوز شناسه اثر انگشت ندارید، با انتخاب تنظیمات > امنیت > اثر انگشت و دنبال کردن دستورالعمل‌های ثبت‌نام، یک اثر انگشت جدید در شبیه‌ساز ثبت کنید.

  2. Set up your app to accept fingerprint authentication . After you perform this setup, your device displays the fingerprint authentication screen.

  3. While your app displays the fingerprint authentication screen, go to the console and enter the finger touch command and the fingerprint ID you created. This simulates a finger touch.

  4. Then, enter the finger remove command to simulate finger removal. Your app should respond as if a user touched and then removed their finger from the fingerprint sensor.