إرسال أوامر وحدة التحكّم في المحاكي

يوفر كل جهاز افتراضي قيد التشغيل وحدة تحكّم تتيح لك طلب البيانات والتحكّم في بيئة الجهاز المحاكى. على سبيل المثال، يمكنك استخدام وحدة التحكّم لإدارة إعادة توجيه المنفذ وخصائص الشبكة وأحداث الاتصال الهاتفي أثناء تشغيل تطبيقك على المحاكي.

تتطلّب الأوامر التالية أن يكون لديك محاكي قيد التشغيل. لمزيد من المعلومات حول تشغيل المحاكي، يُرجى الاطّلاع على تشغيل التطبيقات على Android Emulator وبدء المحاكي من سطر الأوامر.

بدء جلسة وحدة تحكّم وإيقافها

للوصول إلى وحدة التحكّم وإدخال الأوامر من نافذة وحدة طرفية، استخدِم telnet للاتصال بمنفذ وحدة التحكّم وقدِّم رمز المصادقة المميز. في كل مرة تعرض فيها وحدة التحكّم OK، تكون جاهزة لتلقّي الأوامر. لا يوجد طلب نموذجي.

للاتصال بوحدة تحكّم جهاز افتراضي قيد التشغيل، اتّبِع الخطوات التالية:

  1. افتح نافذة المحطة الطرفية وأدخِل الأمر التالي:

    telnet localhost console-port
    

    يعرض عنوان نافذة المحاكي رقم منفذ وحدة التحكّم عند التشغيل في نافذة منفصلة، ولكن لا يعرضه عند التشغيل في نافذة الأدوات. على سبيل المثال، يمكن أن يكون عنوان النافذة لمحاكي يستخدم منفذ وحدة التحكّم 5554 هو Pixel8_API_34:5554. بالإضافة إلى ذلك، يعرض الأمر adb devices قائمة بالأجهزة الافتراضية قيد التشغيل وأرقام منافذ وحدة التحكّم الخاصة بها. لمزيد من المعلومات، يُرجى الاطّلاع على طلب البحث عن الأجهزة.

    ملاحظة: يستمع المحاكي إلى عمليات الاتصال على المنافذ من 5554 إلى 5585، ويقبل عمليات الاتصال من المضيف المحلي فقط.

  2. بعد أن تعرض وحدة التحكّم حسنًا، أدخِل الأمر 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: يبدأ تنفيذ الجهاز.
    • الحالة: طلب البحث عن حالة الجهاز الافتراضي، والتي يمكن أن تكون قيد التشغيل أو متوقفة.
    • name: طلب بحث عن اسم الجهاز الافتراضي.
  • avd snapshot {list| save name| load name| delete name} يتم حفظ حالة الجهاز واستعادتها في اللقطات على النحو التالي:

    • list: تعرض هذه السمة جميع اللقطات المحفوظة.
    • save name: لحفظ اللقطة باسم.
    • load name: لتحميل اللقطة المسماة.
    • استبدِل delete name باسم اللقطة المحفوظة لحذفها.

    يحفظ المثال التالي لقطة بالاسم firstactivitysnapshot:

    avd snapshot save firstactivitysnapshot
    
  • fold: يطوي الجهاز لعرض إعدادات الشاشة الأصغر، إذا كان الجهاز قابلاً للطي ومفتوحًا حاليًا.

  • فتح: يفتح الجهاز لعرض إعدادات الشاشة الأكبر، إذا كان الجهاز قابلاً للطي وكان مطويًا حاليًا.

  • kill: لإنهاء الجهاز الافتراضي.

  • ping: يتحقّق مما إذا كان الجهاز الافتراضي قيد التشغيل.

  • تدوير: لتدوير الفيديو بزاوية 45 درجة عكس عقارب الساعة

تعطُّل المحاكي

  • crash: يؤدي إلى تعطُّل المحاكي أثناء تنفيذ التطبيق.

  • crash-on-exit: يؤدي إلى تعطُّل المحاكي عند خروج التطبيق.

علامات تصحيح الأخطاء

  • علامات تصحيح الأخطاء ...: تتيح هذه العلامة تفعيل رسائل تصحيح الأخطاء أو إيقافها من أجزاء محدّدة من المحاكي. يجب أن تكون مَعلمة العلامات قيمة من قائمة علامات تصحيح الأخطاء التي تظهر عند تنفيذ emulator -help-debug-tags. لمزيد من المعلومات حول الخيار -help-debug-tags، راجِع جدول الخيارات الشائعة الاستخدام. يسمح المثال التالي باستخدام علامة الراديو:

    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. يمكن لأي تطبيق الاستعلام من &quot;خدمة تحديد الموقع الجغرافي&quot; للحصول على الموقع الجغرافي الحالي الذي تم تحديده باستخدام نظام تحديد المواقع العالمي (GPS) للجهاز المحاكي من خلال استدعاء LocationManager.getLastKnownLocation("gps").

  • geo fix longitude latitude [altitude] [satellites] [velocity]: يرسل هذا الأمر إصلاحًا بسيطًا لنظام تحديد المواقع العالمي (GPS) إلى المحاكي. حدِّد خط الطول وخط العرض بالدرجات العشرية. استخدِم رقمًا من 1 إلى 12 لتحديد عدد الأقمار الصناعية التي سيتم استخدامها لتحديد الموقع الجغرافي، وحدِّد الارتفاع بالأمتار والسرعة بالعُقد.

  • جملة 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
    
  • 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 فتح تطبيق Dialer التلقائي
KEY_SEND إرسال رسالة أو بدء مكالمة هاتفية
KEY_HEADSETHOOK خطّاف تعليق سمّاعة الرأس (الردّ/إنهاء المكالمة)
KEY_SCREEN أمر تفعيل شاشة الاستراحة
KEY_CONFIG قائمة نظام الإعدادات
KEY_SWITCHVIDEOMODE تبديل وضع فيديو النظام
KEY_KBDILLUMTOGGLE إيقاف/تفعيل الإضاءة الخلفية للوحة المفاتيح
الجدول الفرعي B: عناصر التحكّم في الوسائط والتشغيل
الرمز الوصف
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 الاتجاه للأعلى
KEY_DOWN الاتجاه للأسفل
KEY_LEFT الاتجاه لليسار على لوحة التحكّم
KEY_RIGHT الاتجاه لليمين على لوحة التحكّم
KEY_PAGEUP التنقّل إلى أعلى الصفحة
KEY_PAGEDOWN التنقّل باستخدام مفتاح Page Down
KEY_INSERT إدراج مشغّل مفتاح
KEY_DELETE حذف مشغّل المفتاح
KEY_ENTER مشغّل مفتاح Enter
KEY_ESC تشغيل مفتاح Escape
KEY_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 ± (لوحة المفاتيح الرقمية)
الجدول الفرعي E: مفاتيح التعديل والوظائف
  • مفاتيح الوظائف العادية: من KEY_F1 إلى KEY_F24 (24 رمزًا)
الرمز الوصف
KEY_LEFTSHIFT مفتاح التعديل Shift الأيسر
KEY_RIGHTSHIFT مفتاح تعديل لوحة المفاتيح Right Shift
KEY_LEFTCTRL مفتاح التعديل Control الأيسر في لوحة المفاتيح
KEY_RIGHTCTRL مفتاح التعديل Right Control
KEY_LEFTALT مفتاح التعديل Alt الأيسر
KEY_RIGHTALT مفتاح التعديل Right 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
الجدول الفرعي 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 مشغّل الاتجاه للأعلى في لوحة التحكّم بالألعاب
BTN_DPAD_DOWN زرّ الاتجاه للأسفل في لوحة التحكّم بالألعاب
BTN_DPAD_LEFT زر الاتجاه لليسار على لوحة التحكّم
BTN_DPAD_RIGHT زر الاتجاه لليمين على لوحة التحكّم
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 Gesture double-tap speed flag
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 اختيار وضع إطار العرض
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 أمر إيقاف مشغّل الأسطوانات المدمجة
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 عدد صحيح معرّف كائن ثنائي كبير لجهة الاتصال
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 قبعة لوحة التحكّم الاتجاهية ومفاتيح عرض المنظور
ABS_PRESSURE من 0 إلى 255 مستوى قوة القلم أو المؤشر
ABS_DISTANCE الشهر مسافة التمرير (القلم الرقمي)
ABS_TILT_X / _TILT_Y درجات زوايا ميلان قلم الشاشة
ABS_VOLUME التناظرية مستويات صوت وحدة التحكّم

يتم توجيه التفاعل باللمس على أجهزة Android من خلال بروتوكولات اللمس المتعدد (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. يتم عكس عملية الربط بين مشاركات Unicode ولوحة مفاتيح الجهاز الحالية، ويتم تجاهل الأحرف غير المتاحة بدون إشعار.

عناصر التحكّم في حالة التشغيل

  • شاشة الطاقة: تعرض حالة البطارية والشاحن.

  • power ac {on| off}: لضبط حالة الشحن عبر التيار المتردد على "مفعّل" أو "غير مفعّل".

  • حالة الطاقة {unknown| charging| discharging| not-charging| full}: لتغيير حالة البطارية كما هو محدّد.

  • power present {true| false}: يضبط حالة توفّر البطارية.

  • power health {unknown| good| overheat| dead| overvoltage| failure}: لضبط حالة صحة البطارية.

  • power capacity percent: تضبط هذه السمة حالة سعة البطارية المتبقية كنسبة مئوية من 0 إلى 100.

حالة اتصال الشبكة (إيثرنت وشبكة الجوّال فقط)

  • حالة الشبكة: تتحقّق من حالة الشبكة وخصائص التأخير والسرعة الحالية.

  • network delay latency تغيير وقت استجابة الشبكة المحاكى

    يتيح لك المحاكي محاكاة مستويات مختلفة من وقت استجابة الشبكة حتى تتمكّن من اختبار تطبيقك في بيئة أكثر ملاءمة لظروف التشغيل الفعلية. يمكنك ضبط مستوى أو نطاق وقت الاستجابة عند بدء تشغيل المحاكي، أو يمكنك استخدام وحدة التحكّم لتغيير وقت الاستجابة أثناء تشغيل التطبيق في المحاكي.

    يكون تنسيق وقت استجابة الشبكة أحد التنسيقات التالية (الأرقام بالمللي ثانية):

    تنسيق وقت استجابة الشبكة:

  • gprs: شبكة GPRS التي تستخدم نطاق وقت استجابة يبلغ 150 كحدّ أدنى و550 كحدّ أقصى.

  • EDGE: EDGE/EGPRS، التي تستخدم نطاق تأخير يبلغ 80 كحد أدنى و400 كحد أقصى.

  • umts: النظام العالمي لاتصالات الجوال عن بعد (UMTS) أو شبكة الجيل الثالث، ويستخدم نطاق وقت استجابة يبلغ 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)/الجيل الثالث، الذي يستخدم سرعة 128.0 في التحميل و1920 في التنزيل

  • hsdpa: HSDPA، الذي يستخدم سرعة 348.0 للأعلى و14,400.0 للأسفل.

  • lte: شبكة LTE، التي تستخدم سرعة 58,000 في التحميل و173,000 في التنزيل

  • evdo: EVDO، التي تستخدم سرعة 75,000 في التحميل و280,000 في التنزيل

  • كاملة: سرعة غير محدودة، ولكنها تعتمد على سرعة اتصال جهاز الكمبيوتر بالإنترنت.

  • num: يضبط معدّلًا دقيقًا بالكيلوبت في الثانية يُستخدم لكل من التحميل والتنزيل.

  • up:down: يضبط معدّلات دقيقة بالكيلوبت/ثانية للتحميل والتنزيل بشكل منفصل.

    لضبط سرعة الشبكة عند بدء تشغيل المحاكي، استخدِم خيار -netspeed في المحاكي. أمثلة:

    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 من &quot;محاكي Android&quot; والإصدارات الأحدث، يتم تلقائيًا التعامل مع عدد الزيارات المرتبطة باتصال Wi-Fi من خلال netsim. لا يسجّل أمر وحدة التحكّم الخاص بتسجيل بيانات الشبكة سوى بيانات شبكة الجيل الثاني/شبكة WAN القديمة التي يتم توجيهها من خلال حزمة QEMU slirp. لالتقاط حِزم Wi-Fi أو Bluetooth أو حِزم الشبكة المتقدّمة في أحدث إصدارات المحاكي، راجِع التقاط حركة بيانات الشبكة في دليل &quot;الشبكة المتقدّمة للمحاكي&quot;.

  • start file: لبدء تسجيل حِزم الشبكة لأسباب أمنية، يجب أن يكون الملف اسم ملف مجردًا (بدون فواصل مسار مثل / وبدون ..). سيتم حفظ ملف التقاط الحزمة ضمن دليل المحتوى الخاص بجهاز Android الافتراضي في المجلد 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، وذلك على النحو التالي:

    • غير مسجَّلة: ما مِن شبكة متاحة.
    • الشبكة الرئيسية: على الشبكة المحلية، بدون تجوال
    • التجوال: على شبكة التجوال
    • جارٍ البحث: جارٍ البحث عن شبكات.
    • مرفوض: مكالمات الطوارئ فقط
    • إيقاف: كما هو الحال مع "غير مسجّل".
    • on: كما هو الحال في المنزل.
  • gsm hold: لتغيير حالة المكالمة إلى "في الانتظار" يمكنك تغيير حالة مكالمة إلى "في انتظار الرد" فقط عندما تكون حالتها الحالية نشطة أو في انتظار الرد.

  • قائمة GSM: تعرض جميع المكالمات الواردة والصادرة وحالاتها.

  • حالة GSM: تعرض حالة 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: لقراءة الاشتراك من ذاكرة الوصول العشوائي غير المتطايرة
    • ruim: لقراءة الاشتراك من وحدة تعريف هوية المستخدم القابلة للإزالة (RUIM).
  • cdma prl_version version: تعرض هذه السمة إصدار قائمة التجوال المفضّلة (PRL) الحالية. رقم الإصدار مخصّص لقاعدة بيانات PRL التي تتضمّن معلومات تُستخدم أثناء عملية اختيار النظام واكتسابه.

إدارة أدوات الاستشعار على المحاكي

تتعلّق هذه الأوامر بأدوات الاستشعار المتوفّرة في "جهاز Android الافتراضي". بالإضافة إلى استخدام أمر جهاز الاستشعار، يمكنك الاطّلاع على الإعدادات وتعديلها في المحاكي من خلال شاشة "أجهزة الاستشعار الافتراضية" في علامتي التبويب "مقياس التسارع" و"أجهزة الاستشعار الإضافية".

  • حالة أداة الاستشعار: تعرض قائمة بجميع أدوات الاستشعار وحالتها.

  • 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 تنشئ هذه الطريقة رسالة SMS واردة محاكية. توضّح القائمة التالية المَعلمات وقيمها:

    • sender-phone-number: يحتوي على سلسلة رقمية عشوائية.
    • textmessage: رسالة SMS.

    يرسل المثال التالي الرسالة "مرحبًا" إلى رقم الهاتف 4085555555:

    sms send 4085555555 hi there
    

تعيد وحدة التحكّم توجيه رسالة SMS إلى إطار عمل Android، الذي يمرّرها إلى تطبيق على المحاكي يتعامل مع الرسائل القصيرة، مثل تطبيق "الرسائل". وإذا أدخلت 10 أرقام، ينسّقها التطبيق كرقم هاتف. يتم عرض السلاسل الرقمية الأطول أو الأقصر بالطريقة التي أرسلتها بها.

محاكاة بصمة الإصبع

  • finger touch fingerprint-id: يحاكي إصبعًا يلمس المستشعر.

  • finger remove: يحاكي إزالة الإصبع.

للحصول على تعليمات حول كيفية استخدام هذه الأوامر، راجِع القسم التالي حول محاكاة بصمة الإصبع والتحقّق من صحتها.

تسجيل الشاشة

يتيح أمر تسجيل الشاشة إمكانية تسجيل ملفات فيديو عالية الجودة للشاشة الفعلية للمحاكي مباشرةً من نظام التشغيل المضيف. ويُعدّ ذلك مفيدًا جدًا لمسارات الدمج المستمر وإعداد تقارير الأخطاء تلقائيًا.

  • screenrecord {start| stop} file يبدأ عملية تسجيل الشاشة أو يوقفها.
    • بدء الملف: لبدء تسجيل الفيديو يجب أن ينتهي ملف الإخراج بالامتداد الإلزامي .webm. يتم حفظ الفيديو الذي تم التقاطه مباشرةً ضمن دليل إخراج وحدة التحكّم في محاكي Android للأجهزة الافتراضية (AVD): ~/.android/avd/avd_name.avd/console_out/file.
    • stop file: لإيقاف عملية تسجيل الشاشة النشطة.

التشغيل الآلي والماكرو

يتيح النظام الفرعي للتشغيل الآلي للمطوّرين تسجيل عمليات نقل حالة الماكرو على الجهاز الافتراضي قيد التشغيل وإعادة تشغيلها لتنفيذ مسارات الاختبار الآلي.

  • automation {record| stop-record| play| stop-play} تُستخدَم لإدارة عمليات تسجيل وحدات الماكرو المبرمَجة.
    • record: لبدء تسجيل التغييرات والمدخلات في حالة الجهاز
    • stop-record: لإيقاف جلسة تسجيل الماكرو الحالية.
    • تشغيل: لبدء تشغيل تسلسل وحدات ماكرو مسجَّل
    • stop-play: لإيقاف تسلسل تشغيل الماكرو النشط.

الفيزياء (6 درجات من الحرية)

تتحكّم أوامر الفيزياء في تسجيل الوضعيات المكانية الصحيحة لعينات من نماذج الحركة الفيزيائية ذات ست درجات حرية (6DoF)، والتي تُستخدَم لمحاكاة ميزة تتبُّع الحركة المتقدّمة.

  • physics {record-gt| stop} تُستخدَم لإدارة التسجيلات التي تتضمّن نموذج الوضعية الجسدية.
    • record-gt: تبدأ في تسجيل بيانات حركة 6 درجات من الحرية (6DoF) الخاصة بالبيانات المرجعية.
    • stop: لإيقاف عملية تسجيل البيانات الأساسية الحالية

عناصر التحكّم المتقدّمة بالجهاز

يجمع هذا القسم نقاط نهاية أوامر وحدة التحكّم المتخصّصة للغاية لإعدادات المحاكاة المتقدّمة، بما في ذلك خوادم وكيل الشبكة وإعدادات العرض المتعدد وعمليات إلغاء العرض وتصحيح الأخطاء المباشر في برنامج Hypervisor.

  • multidisplay {add| del} تضيف هذه السمة شاشات افتراضية ثانوية أو تحذفها لاختبار إعدادات متعددة الشاشات. ملاحظة: لا تتوافق الشاشات الثانوية مع ملفات التعريف القابلة للطي، مثل Pixel Fold أو المحاكي القابل لتغيير الحجم.

  • proxy {set| clear} يضبط إعادة توجيه الخادم الوكيل للشبكة آليًا من وحدة التحكّم.

    • set host port: تضبط هذه السمة إعدادات الخادم الوكيل المستهدف.
    • clear: لإعادة ضبط إعدادات الخادم الوكيل على الإعدادات التلقائية ملاحظة: تتعذّر عمليات ضبط الوكيل في بيئات التنفيذ بلا واجهة مستخدم رسومية.
  • 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) والبيئات غير الرسومية. من خلال توفير نقاط نهاية مباشرة للخدمة، تزيل gRPC الحاجة إلى تحليل تدفقات النصوص أو إدارة عمليات المصافحة لجلسات الوحدة الطرفية أو عرض منافذ localhost غير مشفّرة.

للمساعدة في الاختيار بين وحدة تحكّم Telnet القديمة وواجهة gRPC الحديثة القابلة للبرمجة، راجِع المقارنة التالية بين الأداء والأمان وإمكانات الميزات:

الميزة وحدة تحكّم Telnet واجهة gRPC
الأفضل لـ تصحيح الأخطاء يدويًا، وجلسات تفاعلية عمليات CI/CD بدون واجهة مستخدم، وأجهزة اختبار مبرمَجة ثقيلة
السرعة أبطأ، بسبب حجم النص ووقت استجابة الاتصال محسَّن، وبروتوكول HTTP/2 متعدد الإرسال، وبروتوكول سريع
الأمان غير مشفَّر، المنافذ المحلية (5554-5585) يمكن تأمينها باستخدام بروتوكول أمان طبقة النقل (TLS)، وتعمل عبر الشبكات.
البث المباشر غير متوافق، طلب واستجابة فقط عمليات البث لـ logcat والتقاط صوت الضيف
الوسائط يكتب ملفات الإخراج على قرص المضيف/الضيف. مخازن مؤقتة ثنائية مباشرة عبر الشبكة
نظام التشغيل الضيف يقتصر على أوامر المحاكي الثابتة. تنفيذ أوامر shell bash الخاصة بالضيف الأصلي

إطلاق gRPC واستدعاؤه

لاستخدام نقاط نهاية gRPC، شغِّل &quot;محاكي Android&quot; من سطر الأوامر وأضِف العلامة -grpc، مع تحديد منفذ إعادة التوجيه المستهدف.

# 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) 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 المباشر، أو تسجيل الصوت أو إدخاله في اتجاهين، أو تعديل واجهة المستخدم الرسومية للمضيف، أو الوصول المباشر إلى shell.

خدمة / طريقة gRPC المَعلمة إمكانية
streamLogcat {"maxLines": 100} بث مخرجات logcat لنظام الضيف
streamAudio {} بث صوت مكبّر الصوت عبر السلك
injectAudio {"audio": "..."} إدخال بث صوتي من الميكروفون
UiController {"theme": "DARK"} تعديل تصميمات نوافذ المضيف
Waterfall/Exec {"cmd": "ls"} تشغيل أوامر واجهة المستخدم لنظام التشغيل الضيف الأصلي

محاكاة بصمة الإصبع والتحقّق من صحتها

الشكل 1. شاشة المصادقة ببصمة الإصبع

استخدِم أمر الإصبع لمحاكاة عملية المصادقة ببصمة الإصبع والتحقّق من صحتها في تطبيقك. يجب أن يتوفّر لديك الإصدار 24.3 أو إصدار أحدث من &quot;أدوات حزمة تطوير البرامج (SDK)&quot; والإصدار 6.0 (مستوى واجهة برمجة التطبيقات 23) أو إصدار أحدث من نظام التشغيل Android.

لمحاكاة عملية مصادقة بصمة الإصبع والتحقّق من صحتها، اتّبِع الخطوات التالية:

  1. إذا لم يكن لديك معرّف بصمة إصبع، سجِّل بصمة إصبع جديدة في المحاكي من خلال النقر على الإعدادات > الأمان > بصمة الإصبع واتّباع تعليمات التسجيل.

  2. اضبط إعدادات تطبيقك لقبول المصادقة ببصمة الإصبع. بعد إجراء عملية الإعداد هذه، يعرض جهازك شاشة مصادقة بصمة الإصبع.

  3. أثناء عرض تطبيقك لشاشة مصادقة بصمة الإصبع، انتقِل إلى وحدة التحكّم وأدخِل الأمر finger touch ورقم تعريف بصمة الإصبع الذي أنشأته. يحاكي هذا الإجراء لمسة إصبع.

  4. بعد ذلك، أدخِل الأمر finger remove لمحاكاة إزالة الإصبع. يجب أن يستجيب تطبيقك كما لو أنّ المستخدم وضع إصبعه على أداة استشعار بصمات الأصابع ثم أزاله.