يوفر كل جهاز افتراضي قيد التشغيل وحدة تحكّم تتيح لك طلب البيانات والتحكّم في بيئة الجهاز المحاكى. على سبيل المثال، يمكنك استخدام وحدة التحكّم لإدارة إعادة توجيه المنفذ وخصائص الشبكة وأحداث الاتصال الهاتفي أثناء تشغيل تطبيقك على المحاكي.
تتطلّب الأوامر التالية أن يكون لديك محاكي قيد التشغيل. لمزيد من المعلومات حول تشغيل المحاكي، يُرجى الاطّلاع على تشغيل التطبيقات على Android Emulator وبدء المحاكي من سطر الأوامر.
بدء جلسة وحدة تحكّم وإيقافها
للوصول إلى وحدة التحكّم وإدخال الأوامر من نافذة وحدة طرفية، استخدِم telnet للاتصال بمنفذ وحدة التحكّم وقدِّم رمز المصادقة المميز. في كل مرة تعرض فيها وحدة التحكّم OK، تكون جاهزة لتلقّي الأوامر. لا يوجد طلب نموذجي.
للاتصال بوحدة تحكّم جهاز افتراضي قيد التشغيل، اتّبِع الخطوات التالية:
افتح نافذة المحطة الطرفية وأدخِل الأمر التالي:
telnet localhost console-portيعرض عنوان نافذة المحاكي رقم منفذ وحدة التحكّم عند التشغيل في نافذة منفصلة، ولكن لا يعرضه عند التشغيل في نافذة الأدوات. على سبيل المثال، يمكن أن يكون عنوان النافذة لمحاكي يستخدم منفذ وحدة التحكّم 5554 هو Pixel8_API_34:5554. بالإضافة إلى ذلك، يعرض الأمر
adb devicesقائمة بالأجهزة الافتراضية قيد التشغيل وأرقام منافذ وحدة التحكّم الخاصة بها. لمزيد من المعلومات، يُرجى الاطّلاع على طلب البحث عن الأجهزة.ملاحظة: يستمع المحاكي إلى عمليات الاتصال على المنافذ من 5554 إلى 5585، ويقبل عمليات الاتصال من المضيف المحلي فقط.
بعد أن تعرض وحدة التحكّم حسنًا، أدخِل الأمر
auth auth_token.قبل أن تتمكّن من إدخال أوامر وحدة التحكّم، يجب المصادقة على وحدة تحكّم المحاكي. يجب أن يتطابق
auth_tokenمع محتوى الملف.emulator_console_auth_tokenفي دليل منزلك.إذا لم يكن هذا الملف متوفّرًا، ينشئ الأمر
telnet localhost console-portالملف الذي يحتوي على رمز مميّز للمصادقة تم إنشاؤه عشوائيًا. لإيقاف المصادقة، احذف الرمز المميّز من الملف.emulator_console_auth_tokenأو أنشئ ملفًا فارغًا إذا لم يكن الملف متوفّرًا.بعد الاتصال بوحدة التحكّم، أدخِل أوامر وحدة التحكّم.
أدخِل
helpأوhelp commandأوhelp-verboseللاطّلاع على قائمة بأوامر وحدة التحكّم والتعرّف على أوامر معيّنة.للخروج من جلسة وحدة التحكّم، أدخِل
quitأوexit.
في ما يلي مثال على جلسة:
$ telnet localhost 5554
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Android Console: Authentication required
Android Console: type 'auth <auth_token>' to authenticate
Android Console: you can find your <auth_token> in
'/Users/me/.emulator_console_auth_token'
OK
auth 123456789ABCdefZ
Android Console: type 'help' for a list of commands
OK
help-verbose
Android console command help:
help|h|? Prints a list of commands
help-verbose Prints a list of commands with descriptions
ping Checks if the emulator is alive
automation Manages emulator automation
event Simulates hardware events
geo Geo-location commands
gsm GSM related commands
cdma CDMA related commands
crash Crashes the emulator instance
crash-on-exit Simulates crash on exit for the emulator instance
kill Terminates the emulator instance
restart Restarts the emulator instance
network Manages network settings (ethernet and cellular only)
power Power related commands
quit|exit Quits control session
redir Manages port redirections
sms SMS related commands
avd Controls virtual device execution
qemu QEMU-specific commands
sensor Manages emulator sensors
physics Manages physical model
finger Manages emulator finger print
debug Controls the emulator debug output tags
rotate Rotates the screen clockwise by 90 degrees
screenrecord Records the emulator's display
fold Folds the device
unfold Unfolds the device
multidisplay Configures the multi-display
nodraw turn on/off NoDraw mode. (experimental)
resize-display resize the display resolution to the preset size
virtualscene-image customize virtualscene image for virtulscene camera
proxy manage network proxy server settings
phonenumber set phone number for the device
try 'help <command>' for command-specific help
OK
exit
Connection closed by foreign host.
أوامر التنفيذ التلقائي
إذا لم تكن بحاجة إلى إبقاء الجلسة مفتوحة، استخدِم الاختصار 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 firstactivitysnapshotfold: يطوي الجهاز لعرض إعدادات الشاشة الأصغر، إذا كان الجهاز قابلاً للطي ومفتوحًا حاليًا.
فتح: يفتح الجهاز لعرض إعدادات الشاشة الأكبر، إذا كان الجهاز قابلاً للطي وكان مطويًا حاليًا.
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. يمكن لأي تطبيق الاستعلام من "خدمة تحديد الموقع الجغرافي" للحصول على الموقع الجغرافي الحالي الذي تم تحديده باستخدام نظام تحديد المواقع العالمي (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 OKevent 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 100network speed speedيتيح لك المحاكي محاكاة معدّلات نقل البيانات المختلفة على الشبكة. يمكنك ضبط معدّل نقل أو نطاق عند بدء تشغيل المحاكي، أو يمكنك استخدام وحدة التحكّم لتغيير المعدّل أثناء تشغيل التطبيق في المحاكي.يكون تنسيق سرعة الشبكة أحد التنسيقات التالية (الأرقام بالكيلوبت/ثانية):
تنسيق سرعة الشبكة:
gsm: GSM/CSD، الذي يستخدم سرعة 14.4 ميغابايت في الثانية للتحميل و14.4 ميغابايت في الثانية للتنزيل
hscsd: HSCSD، التي تستخدم سرعة 14.4 في التحميل و43.2 في التنزيل
gprs: شبكة GPRS التي تستخدم سرعة 40.0 ميغابايت في الثانية للتحميل و80.0 ميغابايت في الثانية للتنزيل
EDGE: EDGE/EGPRS، التي تستخدم سرعة 118.4 في التحميل و236.8 في التنزيل
umts: النظام العالمي لاتصالات الجوال عن بعد (UMTS)/الجيل الثالث، الذي يستخدم سرعة 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 80network capture {start| stop} fileيرسل حِزمًا إلى ملف. توضّح القائمة التالية المَعلمات وقيم المَعلمات:ملاحظة: بدءًا من الإصدار 36.5 من "محاكي Android" والإصدارات الأحدث، يتم تلقائيًا التعامل مع عدد الزيارات المرتبطة باتصال Wi-Fi من خلال netsim. لا يسجّل أمر وحدة التحكّم الخاص بتسجيل بيانات الشبكة سوى بيانات شبكة الجيل الثاني/شبكة WAN القديمة التي يتم توجيهها من خلال حزمة QEMU slirp. لالتقاط حِزم Wi-Fi أو Bluetooth أو حِزم الشبكة المتقدّمة في أحدث إصدارات المحاكي، راجِع التقاط حركة بيانات الشبكة في دليل "الشبكة المتقدّمة للمحاكي".
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، شغِّل "محاكي Android" من سطر الأوامر وأضِف العلامة -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"} |
تشغيل أوامر واجهة المستخدم لنظام التشغيل الضيف الأصلي |
محاكاة بصمة الإصبع والتحقّق من صحتها
استخدِم أمر الإصبع لمحاكاة عملية المصادقة ببصمة الإصبع والتحقّق من صحتها في تطبيقك. يجب أن يتوفّر لديك الإصدار 24.3 أو إصدار أحدث من "أدوات حزمة تطوير البرامج (SDK)" والإصدار 6.0 (مستوى واجهة برمجة التطبيقات 23) أو إصدار أحدث من نظام التشغيل Android.
لمحاكاة عملية مصادقة بصمة الإصبع والتحقّق من صحتها، اتّبِع الخطوات التالية:
إذا لم يكن لديك معرّف بصمة إصبع، سجِّل بصمة إصبع جديدة في المحاكي من خلال النقر على الإعدادات > الأمان > بصمة الإصبع واتّباع تعليمات التسجيل.
اضبط إعدادات تطبيقك لقبول المصادقة ببصمة الإصبع. بعد إجراء عملية الإعداد هذه، يعرض جهازك شاشة مصادقة بصمة الإصبع.
أثناء عرض تطبيقك لشاشة مصادقة بصمة الإصبع، انتقِل إلى وحدة التحكّم وأدخِل الأمر
finger touchورقم تعريف بصمة الإصبع الذي أنشأته. يحاكي هذا الإجراء لمسة إصبع.بعد ذلك، أدخِل الأمر
finger removeلمحاكاة إزالة الإصبع. يجب أن يستجيب تطبيقك كما لو أنّ المستخدم وضع إصبعه على أداة استشعار بصمات الأصابع ثم أزاله.