एम्युलेटर कंसोल के निर्देश भेजें

चालू हर वर्चुअल डिवाइस में एक कंसोल होता है. इसकी मदद से, डिवाइस के एनवायरमेंट को कंट्रोल किया जा सकता है और उससे जुड़ी क्वेरी की जा सकती है. उदाहरण के लिए, कंसोल का इस्तेमाल करके पोर्ट रीडायरेक्शन, नेटवर्क की सुविधाओं, और टेलीफ़ोनी इवेंट को मैनेज किया जा सकता है. ऐसा तब किया जा सकता है, जब आपका ऐप्लिकेशन एम्युलेटर पर चल रहा हो.

इन कमांड को चलाने के लिए, आपके पास पहले से ही कोई एम्युलेटर चालू होना चाहिए. एम्युलेटर चलाने के बारे में ज़्यादा जानकारी के लिए, Android Emulator पर ऐप्लिकेशन चलाना और कमांड लाइन से एम्युलेटर शुरू करना लेख पढ़ें.

कंसोल सेशन शुरू और बंद करना

कंसोल को ऐक्सेस करने और टर्मिनल विंडो से कमांड डालने के लिए, कंसोल पोर्ट से कनेक्ट करने के लिए टेलनेट का इस्तेमाल करें. इसके बाद, अपना पुष्टि करने वाला टोकन डालें. जब भी कंसोल पर OK दिखता है, तब यह कमांड स्वीकार करने के लिए तैयार होता है. कोई सामान्य प्रॉम्प्ट नहीं है.

चल रहे वर्चुअल डिवाइस के कंसोल से कनेक्ट करने के लिए:

  1. टर्मिनल विंडो खोलें और यह निर्देश डालें:

    telnet localhost console-port
    

    जब एम्युलेटर को अलग विंडो में चलाया जाता है, तब एम्युलेटर विंडो के टाइटल में कंसोल पोर्ट नंबर दिखता है. हालांकि, जब इसे टूल विंडो में चलाया जाता है, तब यह नहीं दिखता. उदाहरण के लिए, कंसोल पोर्ट 5554 का इस्तेमाल करने वाले एम्युलेटर के लिए विंडो का टाइटल, Pixel8_API_34:5554 हो सकता है. इसके अलावा, adb devices कमांड, चालू वर्चुअल डिवाइसों और उनके कंसोल पोर्ट नंबर की सूची प्रिंट करती है. ज़्यादा जानकारी के लिए, डिवाइसों के लिए क्वेरी करना लेख पढ़ें.

    ध्यान दें: एम्युलेटर, पोर्ट 5554 से 5585 पर कनेक्शन के लिए सुनता है. साथ ही, यह सिर्फ़ लोकल होस्ट से कनेक्शन स्वीकार करता है.

  2. कंसोल में OK दिखने के बाद, auth auth_token कमांड डालें.

    कंसोल कमांड डालने से पहले, एम्युलेटर कंसोल को पुष्टि करनी होती है. auth_token में मौजूद कॉन्टेंट, आपकी होम डायरेक्ट्री में मौजूद .emulator_console_auth_token फ़ाइल के कॉन्टेंट से मेल खाना चाहिए.

    अगर वह फ़ाइल मौजूद नहीं है, तो telnet localhost console-port कमांड फ़ाइल बनाती है. इसमें पुष्टि करने के लिए रैंडम तरीके से जनरेट किया गया टोकन होता है. प्रमाणीकरण की सुविधा बंद करने के लिए, .emulator_console_auth_token फ़ाइल से टोकन मिटाएं. अगर यह फ़ाइल मौजूद नहीं है, तो एक खाली फ़ाइल बनाएं.

  3. कंसोल से कनेक्ट होने के बाद, कंसोल कमांड डालें.

    कंसोल कमांड की सूची देखने और किसी खास कमांड के बारे में जानने के लिए, help, help command या help-verbose डालें.

  4. कंसोल सेशन से बाहर निकलने के लिए, quit या exit डालें.

यहां एक उदाहरण सेशन दिया गया है:

$ telnet localhost 5554
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Android Console: Authentication required
Android Console: type 'auth <auth_token>' to authenticate
Android Console: you can find your <auth_token> in
'/Users/me/.emulator_console_auth_token'
OK
auth 123456789ABCdefZ
Android Console: type 'help' for a list of commands
OK
help-verbose
Android console command help:
    help|h|?         Prints a list of commands
    help-verbose     Prints a list of commands with descriptions
    ping             Checks if the emulator is alive
    automation       Manages emulator automation
    event            Simulates hardware events
    geo              Geo-location commands
    gsm              GSM related commands
    cdma             CDMA related commands
    crash            Crashes the emulator instance
    crash-on-exit    Simulates crash on exit for the emulator instance
    kill             Terminates the emulator instance
    restart          Restarts the emulator instance
    network          Manages network settings  (ethernet and cellular only)
    power            Power related commands
    quit|exit        Quits control session
    redir            Manages port redirections
    sms              SMS related commands
    avd              Controls virtual device execution
    qemu             QEMU-specific commands
    sensor           Manages emulator sensors
    physics          Manages physical model
    finger           Manages emulator finger print
    debug            Controls the emulator debug output tags
    rotate           Rotates the screen clockwise by 90 degrees
    screenrecord     Records the emulator's display
    fold             Folds the device
    unfold           Unfolds the device
    multidisplay     Configures the multi-display
    nodraw           turn on/off NoDraw mode. (experimental)
    resize-display   resize the display resolution to the preset size
    virtualscene-image  customize virtualscene image for virtulscene camera
    proxy            manage network proxy server settings
    phonenumber      set phone number for the device

try 'help <command>' for command-specific help
OK
exit
Connection closed by foreign host.

फ़ायर-एंड-फ़ॉरगेट कमांड

अगर आपको सेशन खुला नहीं रखना है, तो adb emu शॉर्टकट का इस्तेमाल करें. यह शॉर्टकट, कमांड को पूरा करता है और तुरंत कंट्रोल को इनवॉकिंग शेल पर वापस भेज देता है:

adb emu command commandParameter

adb emu के साथ इनवोकेशन, उपलब्ध एम्युलेटर से कनेक्ट होता है. अगर एक साथ कई एम्युलेटर चल रहे हैं, तो आपको उस एम्युलेटर का सीरियल नंबर पास करना होगा जिसे टारगेट किया जा रहा है:

adb -s emulator-serial emu command commandParameter

एम्युलेटर कमांड रेफ़रंस

यहां दी गई सूचियों में, एम्युलेटर कंसोल के उन कमांड के बारे में बताया गया है जिनके पैरामीटर और वैल्यू दी गई हैं:

सामान्य निर्देश

  • avd {stop| start| status| name} यह वर्चुअल डिवाइस को इस तरह से कंट्रोल और मैनेज करता है:

    • stop: इससे डिवाइस पर चल रहे कोड को रोका जा सकता है.
    • start: डिवाइस को चालू करता है.
    • status: वर्चुअल डिवाइस के स्टेटस के बारे में क्वेरी करता है. यह स्टेटस, चालू या बंद हो सकता है.
    • name: वर्चुअल डिवाइस के नाम के बारे में क्वेरी करता है.
  • avd snapshot {list| save name| load name| delete name} यह कुकी, स्नैपशॉट में डिवाइस की स्थिति को सेव करती है और उसे वापस लाती है. ऐसा इन स्थितियों में होता है:

    • list: इससे सेव किए गए सभी स्नैपशॉट दिखते हैं.
    • save name: स्नैपशॉट को नाम के तौर पर सेव करता है.
    • load name: इससे नाम वाला स्नैपशॉट लोड होता है.
    • delete name: इससे नाम दिया गया स्नैपशॉट मिट जाता है.

    यहां दिए गए उदाहरण में, firstactivitysnapshot नाम से स्नैपशॉट सेव करने का तरीका बताया गया है:

    avd snapshot save firstactivitysnapshot
    
  • fold: अगर डिवाइस फ़ोल्ड किया जा सकने वाला डिवाइस है और फ़िलहाल वह अनफ़ोल्ड है, तो उसे फ़ोल्ड करके उसकी छोटी स्क्रीन कॉन्फ़िगरेशन को दिखाता है.

  • unfold: अगर डिवाइस को फ़ोल्ड किया जा सकता है और फ़िलहाल वह फ़ोल्ड है, तो उसे अनफ़ोल्ड करता है, ताकि उसकी बड़ी स्क्रीन कॉन्फ़िगरेशन दिख सके.

  • kill: वर्चुअल डिवाइस को बंद कर देता है.

  • ping: इससे यह पता चलता है कि वर्चुअल डिवाइस चल रहा है या नहीं.

  • rotate: इससे एवीडी को घड़ी की उलटी दिशा में 45 डिग्री के हिसाब से घुमाया जाता है.

एम्युलेटर क्रैश हो जाता है

  • crash: ऐप्लिकेशन को एक्ज़ीक्यूट करने के दौरान, एम्युलेटर क्रैश हो जाता है.

  • crash-on-exit: ऐप्लिकेशन बंद होने पर, एम्युलेटर क्रैश हो जाता है.

टैग डीबग करना

  • debug tags ...: इससे एम्युलेटर के कुछ हिस्सों से डीबग मैसेज पाने की सुविधा चालू या बंद होती है. टैग पैरामीटर की वैल्यू, डीबग टैग की उस सूची में से होनी चाहिए जो emulator -help-debug-tags को लागू करने पर दिखती है. -help-debug-tags विकल्प के बारे में ज़्यादा जानने के लिए, अक्सर इस्तेमाल किए जाने वाले विकल्पों की टेबल देखें. यहां दिए गए उदाहरण में, रेडियो टैग को चालू करने का तरीका बताया गया है:

    debug radio
    

पोर्ट रीडायरेक्शन

  • redir list: इससे मौजूदा पोर्ट रीडायरेक्शन की सूची दिखती है.

  • redir add protocol:host-port:guest-port इससे नया पोर्ट रीडायरेक्शन जुड़ता है. जैसे:

    • प्रोटोकॉल: यह टीसीपी या यूडीपी होना चाहिए.
    • host-port: होस्ट पर खोलने के लिए पोर्ट नंबर.
    • guest-port: यह पोर्ट नंबर, डेटा को एम्युलेटर पर रूट करने के लिए होता है.
  • redir del protocol:host-port इस कमांड से पोर्ट रीडायरेक्शन मिट जाता है.

    • प्रोटोकॉल: यह टीसीपी या यूडीपी होना चाहिए.
    • host-port: होस्ट पर खोलने के लिए पोर्ट नंबर.

भौगोलिक जगह

यह कुकी, एम्युलेटर में चल रहे ऐप्लिकेशन को भौगोलिक जगह की जानकारी भेजती है. इसके लिए, यह एम्युलेटर को जीपीएस की जानकारी भेजती है.

वर्चुअल डिवाइस के चालू होते ही, इनमें से कोई भी जियो कमांड दी जा सकती है. एम्युलेटर, आपके डाले गए पते के हिसाब से जगह की जानकारी सेट करता है. इसके लिए, वह नकली जगह की जानकारी देने वाला प्रोवाइडर बनाता है. यह प्रोवाइडर, ऐप्लिकेशन के ज़रिए सेट किए गए जगह की जानकारी के लिसनर को जवाब देता है. साथ ही, LocationManager को जगह की जानकारी देता है. कोई भी ऐप्लिकेशन, लोकेशन मैनेजर से क्वेरी करके, LocationManager.getLastKnownLocation("gps") को कॉल करके, एम्युलेट किए गए डिवाइस के लिए मौजूदा जीपीएस फ़िक्स पा सकता है.

  • geo fix longitude latitude [altitude] [satellites] [velocity]: यह इम्यूलेटर को सामान्य जीपीएस फ़िक्स भेजता है. देशांतर और अक्षांश को दशमलव डिग्री में बताएं. जगह की जानकारी का पता लगाने के लिए, इस्तेमाल किए जाने वाले सैटलाइट की संख्या तय करने के लिए, 1 से 12 तक की किसी संख्या का इस्तेमाल करें. साथ ही, ऊंचाई को मीटर में और गति को नॉट में तय करें.

  • geo nmea sentence: यह विकल्प, NMEA 0183 वाक्य को इम्यूलेट किए गए डिवाइस पर भेजता है. ऐसा लगता है कि इसे इम्यूलेट किए गए जीपीएस मॉडेम से भेजा गया है. वाक्य की शुरुआत '$GP' से करें. फ़िलहाल, सिर्फ़ '$GPGGA' और '$GPRCM' वाक्यों का इस्तेमाल किया जा सकता है. यहां दिया गया उदाहरण, GPGGA (ग्लोबल पोज़िशनिंग सिस्टम फ़िक्स डेटा) वाक्य है. इससे जीपीएस रिसीवर के लिए समय, जगह, और फ़िक्स डेटा मिलता है:

    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 — Key Code References

EV_KEY इवेंट टाइप का इस्तेमाल, बटन दबाने और छोड़ने की प्रोसेस को सिम्युलेट करने के लिए किया जाता है. यहां दी गई टेबल में, इस्तेमाल किए जा सकने वाले की-कोड की लंबी सूची को लॉजिकल कैटगरी में बांटा गया है. हर कुंजी कोड के लिए, 1 की वैल्यू भेजने पर, कुंजी दबाने का ऐक्शन ट्रिगर होता है. वहीं, 0 की वैल्यू भेजने पर, कुंजी छोड़ने का ऐक्शन ट्रिगर होता है. 2 वैल्यू, key repeat को दिखाती है.

सबटेबल A: Android सिस्टम की कुंजियां
कोड Description
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 कीबोर्ड की बैकलाइट टॉगल करें
उप-टेबल B: मीडिया और प्लेबैक कंट्रोल
कोड Description
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: नेविगेशन और सामान्य कीबोर्ड
कोड Description
KEY_UP डी-पैड में अप ऐरो वाले बटन की दिशा
KEY_DOWN डी-पैड में डाउन ऐरो वाला बटन
KEY_LEFT डी-पैड में लेफ़्ट ऐरो वाला बटन
KEY_RIGHT डी-पैड में राइट ऐरो वाला बटन
KEY_PAGEUP पेज पर ऊपर की ओर स्क्रोल करने की सुविधा
KEY_PAGEDOWN पेज डाउन नेविगेशन
KEY_INSERT कुंजी ट्रिगर डालें
KEY_DELETE कुंजी के ट्रिगर को मिटाना
KEY_ENTER कुंजी ट्रिगर डालें
KEY_ESC एस्केप बटन ट्रिगर
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 कोड).
कोड Description
KEY_LEFTSHIFT लेफ़्ट शिफ़्ट कीबोर्ड मॉडिफ़ायर
KEY_RIGHTSHIFT राइट शिफ़्ट कीबोर्ड मॉडिफ़ायर
KEY_LEFTCTRL लेफ़्ट कंट्रोल कीबोर्ड मॉडिफ़ायर
KEY_RIGHTCTRL राइट कंट्रोल कीबोर्ड मॉडिफ़ायर
KEY_LEFTALT कीबोर्ड मॉडिफ़ायर के तौर पर इस्तेमाल होने वाला बायां Alt बटन
KEY_RIGHTALT राइट Alt कीबोर्ड मॉडिफ़ायर
KEY_LEFTMETA लेफ़्ट मेटा/कमांड बटन
KEY_RIGHTMETA राइट मेटा/कमांड बटन
KEY_CAPSLOCK Caps Lock कीबोर्ड टॉगल करें
KEY_NUMLOCK Num Lock कीबोर्ड टॉगल
KEY_SCROLLLOCK Scroll Lock कीबोर्ड टॉगल करें
KEY_COMPOSE कैरेक्टर बनाने में मदद करने वाला टूल
KEY_FN फ़िज़िकल कीबोर्ड पर मौजूद FN कुंजी
KEY_FN_ESC फ़ंक्शन बटन के कॉम्बिनेशन
KEY_FN_1 स्पेशल फ़ंक्शन का शॉर्टकट 1
KEY_FN_2 स्पेशल फ़ंक्शन का दूसरा शॉर्टकट
KEY_FN_D स्पेशल फ़ंक्शन का शॉर्टकट D
KEY_FN_E स्पेशल फ़ंक्शन का शॉर्टकट E
KEY_FN_F स्पेशल फ़ंक्शन का शॉर्टकट F
KEY_FN_S स्पेशल फ़ंक्शन का शॉर्टकट S
KEY_FN_B स्पेशल फ़ंक्शन का शॉर्टकट B
सबटेबल F: गेमपैड और जॉयस्टिक
कोड Description
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: माउस, टच, और स्टाइलस इनपुट
कोड Description
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 Gesture triple-tap speed flag
सबटेबल 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 Buffer cancel process trigger
KEY_FIND दस्तावेज़ खोजने की सुविधा
KEY_REFRESH दस्तावेज़ रीफ़्रेश करने की सुविधा
KEY_EXIT दस्तावेज़ बंद करने की सुविधा
KEY_DOCUMENTS सिस्टम दस्तावेज़ों का पोर्टल लॉन्च करता है
KEY_HOMEPAGE इससे होम पेज ब्राउज़र लॉन्च होता है
KEY_FAVORITES इससे ब्राउज़र के पसंदीदा आइटम का पोर्टल खुलता है
KEY_CHAT इससे इंस्टैंट मैसेंजर लॉन्च होता है
KEY_EMAIL दूसरे ईमेल पते का लॉन्च ट्रिगर
KEY_FINANCE स्टॉक/फ़ाइनेंस की सुविधा खोलें
KEY_SPORT खेल-कूद की गतिविधियों को ट्रैक करने की सुविधा खोलें
KEY_SHOP डिजिटल शॉपिंग पोर्टल खोलें
KEY_PLAYER प्राइमरी मीडिया प्लेयर खोलें
KEY_MP3 प्राइमरी MP3 प्लेयर खोलें
KEY_TEXT डिफ़ॉल्ट टेक्स्ट एडिटर खोलें
KEY_LIST चेकलिस्ट यूटिलिटी खोलें
KEY_MEMO नोटपैड / मेमो यूटिलिटी खोलें
KEY_CALENDAR इससे कैलेंडर / एजेंडा पोर्टल खुलता है
KEY_DIRECTORY इससे सिस्टम एड्रेस डायरेक्ट्री खुलती है
KEY_COMPUTER इससे स्पेसिफ़िकेशन एक्सप्लोरर खुलता है
KEY_TV / KEY_TV2 टेलीविज़न पोर्टल लॉन्च करता है
KEY_RADIO रेडियो यूटिलिटी लॉन्च करता है
KEY_CD / KEY_DVD इससे ऑप्टिकल ड्राइव रीडर चालू होता है
KEY_AUDIO / KEY_VIDEO मीडिया की खास बातों को ऐक्सेस करता है
KEY_TUNER इससे रिसीवर/ट्यूनर कॉन्फ़िगर किए जाते हैं
KEY_SAT / KEY_SAT2 सैटलाइट फ़ीड कॉन्फ़िगर करता है
KEY_TAPE टेप मीडिया डेक चलाएं
KEY_VCR वीसीआर प्लेयर का फ़ीड चलाओ
KEY_VCR2 वीसीआर 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 सीडी डेक चलाने का निर्देश
KEY_PAUSECD सीडी डेक को रोकने का निर्देश
KEY_STOPCD सीडी डेक को रोकने का निर्देश
KEY_DIGITS डिजिटल कीपैड से एंट्री करने का निर्देश
KEY_TEEN कीपैड पर किशोरों के लिए उपलब्ध वैल्यू का विकल्प
KEY_TWEN कीपैड ट्वेन वैल्यू का विकल्प
KEY_DEL_EOL लाइन के आखिर में मौजूद बफ़र को मिटाएं
KEY_DEL_EOS स्क्रीन बफ़र के आखिर तक मिटाएं
KEY_INS_LINE नई लाइन का बफ़र डालें
KEY_BRL_DOT1 से _DOT8 ब्रेल डिसप्ले के बटन के इनपुट
KEY_VOICECOMMAND वॉइस असिस्टेंट ऐप्लिकेशन लॉन्च करता है
KEY_SELECTIVE_SCREEN इससे स्क्रीन के किसी हिस्से को स्निप करने की सुविधा चालू होती है
KEY_BATTERY बैटरी की सूचनाओं के बारे में क्वेरी करता है
KEY_STAR / KEY_SHARP टेलीफ़ोन के कीपैड के सिंबल
KEY_PLUS टेलीफ़ोन कीपैड के साथ प्लस का निशान
KEY_INFO जानकारी वाले पैनल का ओवरले दिखाएं
KEY_TIME घड़ी का मौजूदा समय दिखाओ
KEY_VENDOR Queries vendor specifications
KEY_ARCHIVE इससे लोकल आर्काइव यूटिलिटी खुलती है
KEY_PROGRAM प्रोग्राम के पैरामीटर कॉन्फ़िगर करता है
KEY_POWER2 इससे बैकअप के तौर पर बिजली की आपूर्ति शुरू हो जाती है

EV_ABS — ऐब्सलूट मोशन इवेंट

EV_ABS इवेंट टाइप, सटीक टच, ड्रैग-एंड-ड्रॉप के जेस्चर, मल्टी-टच पिंच ऐक्शन, और जॉयस्टिक में बदलाव करने के लिए ज़रूरी है. मैप के नीचे दिए गए ऐब्सलूट कोऑर्डिनेट, सीधे तौर पर स्क्रीन के रिज़ॉल्यूशन से जुड़े होते हैं.

कोड कोऑर्डिनेट की रेंज Description
ABS_MT_TRACKING_ID -1 या ≥0 ट्रैकिंग आईडी; -1 ends touch
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 mm स्क्रीन से दूरी पर हाथ घुमाना
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 mm स्टाइलस पेन को स्क्रीन से ऊपर रखने की दूरी
ABS_TILT_X / _TILT_Y डिग्री स्टाइलस के झुकाव के कोण
ABS_VOLUME ऐनालॉग कंट्रोलर के वॉल्यूम लेवल

Android में टच इंटरैक्शन, मल्टी-टच (एमटी) प्रोटोकॉल की मदद से काम करता है. मॉडर्न इम्यूलेटर, प्रोटोकॉल A (स्टेटलेस, सिंक्रनाइज़ेशन मार्क से अलग किए गए संपर्क पैकेट भेजना) और प्रोटोकॉल B (स्टेटफ़ुल, संपर्कों को ट्रैकिंग के लिए तय किए गए स्लॉट असाइन करना) दोनों को लागू करते हैं. प्रोटोकॉल B की मदद से, पिंच करके ज़ूम करने जैसे जेस्चर के लिए, एक साथ कई टच को आसानी से ट्रैक किया जा सकता है.

EV_REL और EV_SW — मोशन और हार्डवेयर स्विच

EV_REL इवेंट कैटगरी, पॉइंटर या कोऑर्डिनेट में हुए बदलावों को मैनेज करती है. इसका इस्तेमाल मुख्य रूप से, बाहरी माउस की गतिविधियों या स्क्रोलिंग व्हील की नकल करने के लिए किया जाता है. EV_SW इवेंट कैटगरी, फ़िज़िकल डिवाइस के स्विच को मैनेज करती है. जैसे, फ़्लिप फ़ोन या टैबलेट को फ़ोल्ड किया गया है या नहीं या बाहरी ऑडियो हार्डवेयर डाला गया है या नहीं.

कोड वैल्यू Description
REL_X Delta हॉरिज़ॉन्टल कर्सर मूवमेंट
REL_Y Delta कर्सर को ऊपर या नीचे ले जाना
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
पिंच करके ज़ूम करने के जेस्चर का सिम्युलेशन

दो उंगलियों से ज़ूम करने की सुविधा को ट्रिगर करने के लिए, ऐक्टिव एमटी स्लॉट (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
किसी असली डिवाइस से Console इवेंट कोड ढूंढना

किसी कस्टम ऐक्शन या बटन के हाथ के जेस्चर के लिए इवेंट सिंटैक्स की सटीक सीक्वेंस का पता लगाने के लिए, एडीबी शेल के ज़रिए कनेक्ट करें और 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 स्ट्रिंग होना चाहिए. यूनिकोड पोस्ट को मौजूदा डिवाइस के कीबोर्ड के हिसाब से रिवर्स-मैप किया जाता है. साथ ही, इस्तेमाल न किए जा सकने वाले वर्णों को चुपचाप हटा दिया जाता है.

पावर स्टेट कंट्रोल

  • पावर डिसप्ले: इससे बैटरी और चार्जर की स्थिति के बारे में पता चलता है.

  • power ac {on| off}: इससे एसी चार्जिंग की स्थिति को चालू या बंद पर सेट किया जाता है.

  • power status {unknown| charging| discharging| not-charging| full}: इससे बैटरी का स्टेटस बदलता है.

  • power present {true| false}: इससे बैटरी की मौजूदगी का स्टेटस सेट होता है.

  • power health {unknown| good| overheat| dead| overvoltage| failure}: इससे बैटरी की परफ़ॉर्मेंस का स्टेटस सेट किया जाता है.

  • पावर कैपेसिटी का प्रतिशत: इससे बैटरी की बची हुई क्षमता को 0 से 100 प्रतिशत के बीच सेट किया जाता है.

नेटवर्क कनेक्शन की स्थिति (सिर्फ़ ईथरनेट और मोबाइल इंटरनेट के लिए)

  • नेटवर्क की स्थिति: इससे नेटवर्क की स्थिति, मौजूदा देरी, और स्पीड की जानकारी मिलती है.

  • network delay latency इससे, नेटवर्क की नकल करने के दौरान होने वाली देरी में बदलाव होता है.

    एम्युलेटर की मदद से, नेटवर्क की अलग-अलग लेटेन्सी लेवल को सिम्युलेट किया जा सकता है. इससे, ऐप्लिकेशन को ऐसी स्थितियों में टेस्ट किया जा सकता है जो आम तौर पर ऐप्लिकेशन के चलने के दौरान होती हैं. एम्युलेटर शुरू होने पर, लेटेंसी का लेवल या रेंज सेट की जा सकती है. इसके अलावा, ऐप्लिकेशन के एम्युलेटर में चलने के दौरान, कंसोल का इस्तेमाल करके लेटेंसी को बदला जा सकता है.

    नेटवर्क लेटेन्सी का फ़ॉर्मैट इनमें से कोई एक होता है (संख्याएं मिलीसेकंड में होती हैं):

    नेटवर्क लेटेंसी का फ़ॉर्मैट:

  • gprs: GPRS, जिसमें कम से कम 150 और ज़्यादा से ज़्यादा 550 की लेटेंसी रेंज का इस्तेमाल किया जाता है.

  • edge: EDGE/EGPRS, जिसमें कम से कम 80 और ज़्यादा से ज़्यादा 400 की लेटेंसी रेंज का इस्तेमाल किया जाता है.

  • umts: यूएमटीएस/3G. इसमें, वीडियो स्ट्रीम होने और उसके दिखने के समय के बीच का फ़र्क़ कम से कम 35 और ज़्यादा से ज़्यादा 200 होता है.

  • none: कोई इंतज़ार का समय नहीं.

  • num: इससे मिलीसेकंड में तय किए गए इंतज़ार के समय को दोहराया जाता है.

  • min:max: इससे, तय की गई लेटेंसी रेंज का पता चलता है.

    एम्युलेटर के चालू होने पर लेटेन्सी सेट करने के लिए, -netdelay एम्युलेटर विकल्प का इस्तेमाल करें. इसके साथ, लेटेन्सी की ऐसी वैल्यू का इस्तेमाल करें जो काम करती हो. उदाहरण:

    emulator -netdelay gprs
    emulator -netdelay 40,100
    

    एम्युलेटर के चालू रहने के दौरान नेटवर्क में होने वाली देरी में बदलाव करने के लिए, कंसोल से कनेक्ट करें और network delay कमांड का इस्तेमाल करें:

    network delay gprs
    network delay 40 100
    
  • network speed speed इस एम्युलेटर की मदद से, नेटवर्क ट्रांसफ़र की अलग-अलग दरों को सिम्युलेट किया जा सकता है. एम्युलेटर शुरू होने पर, ट्रांसफ़र रेट या रेंज सेट की जा सकती है. इसके अलावा, ऐप्लिकेशन के एम्युलेटर में चलने के दौरान, कंसोल का इस्तेमाल करके रेट बदला जा सकता है.

    नेटवर्क स्पीड का फ़ॉर्मैट इनमें से कोई एक होता है (संख्याएं किलोबिट/सेकंड में होती हैं):

    नेटवर्क स्पीड का फ़ॉर्मैट:

  • gsm: GSM/CSD, जिसमें डेटा ट्रांसफ़र की स्पीड 14.4 अप और 14.4 डाउन होती है.

  • hscsd: HSCSD, जिसमें 14.4 अप और 43.2 डाउन की स्पीड का इस्तेमाल किया जाता है.

  • gprs: GPRS, जिसमें 40.0 अप और 80.0 डाउन की स्पीड का इस्तेमाल किया जाता है.

  • edge: EDGE/EGPRS, जिसमें 118.4 केबीपीएस की अपलोड स्पीड और 236.8 केबीपीएस की डाउनलोड स्पीड होती है.

  • umts: यूएमटीएस/3G, जिसमें 128.0 केबीपीएस की अपलोड स्पीड और 1920 केबीपीएस की डाउनलोड स्पीड होती है.

  • hsdpa: HSDPA, जिसमें 348.0 अप और 14,400.0 डाउन की स्पीड का इस्तेमाल किया जाता है.

  • 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 यह फ़ाइल में पैकेट भेजता है. यहां दी गई सूची में, पैरामीटर और पैरामीटर वैल्यू के बारे में बताया गया है:

    ध्यान दें: Android Emulator 36.5 और इसके बाद के वर्शन में, वाई-फ़ाई कनेक्शन के ट्रैफ़िक को डिफ़ॉल्ट रूप से netsim मैनेज करता है. नेटवर्क कैप्चर कंसोल कमांड, सिर्फ़ लेगसी सेल्यूलर/वैन ट्रैफ़िक को कैप्चर करती है. यह ट्रैफ़िक, QEMU स्लिप स्टैक से रूट किया जाता है. इमुलेटर के नए वर्शन में वाई-फ़ाई, ब्लूटूथ या ऐडवांस नेटवर्क पैकेट कैप्चर करने के लिए, ऐडवांस इमुलेटर नेटवर्किंग गाइड में नेटवर्क ट्रैफ़िक कैप्चर करना लेख पढ़ें.

  • start file: इससे नेटवर्क पैकेट कैप्चर करने की प्रोसेस शुरू होती है. सुरक्षा के लिए, फ़ाइल का नाम सिर्फ़ फ़ाइल का नाम होना चाहिए. इसमें पाथ सेपरेटर (जैसे, /) और .. नहीं होना चाहिए. पैकेट कैप्चर फ़ाइल, आपके एवीडी की कॉन्टेंट डायरेक्ट्री में console_out/ फ़ोल्डर में सेव की जाएगी. उदाहरण के लिए, ~/.android/avd/avd_name.avd/console_out/file.

  • stop file: इससे चुनी गई फ़ाइल को पैकेट भेजना बंद हो जाता है.

टेलीफ़ोनी एम्युलेशन

Android Emulator में, GSM और CDMA के अपने एमुलेटेड मॉडेम शामिल होते हैं. इनकी मदद से, Emulator में टेलीफ़ोनी फ़ंक्शन को सिम्युलेट किया जा सकता है. उदाहरण के लिए, जीएसएम की मदद से इनकमिंग फ़ोन कॉल का सिम्युलेशन किया जा सकता है. साथ ही, डेटा कनेक्शन बनाए और बंद किए जा सकते हैं. सीडीएमए में, सदस्यता का सोर्स और रोमिंग की पसंदीदा सूची दी जाती है. Android सिस्टम, सिम्युलेट किए गए कॉल को ठीक उसी तरह हैंडल करता है जिस तरह वह असली कॉल को हैंडल करता है. एम्युलेटर पर कॉल ऑडियो की सुविधा काम नहीं करती.

  • gsm {call| accept| cancel| busy} phonenumber gsm पैरामीटर ये हैं:

    • call: इस इंटेंट का इस्तेमाल करके, phonenumber से आने वाले फ़ोन कॉल को सिम्युलेट किया जाता है.
    • accept: इस विकल्प का इस्तेमाल करके, phonenumber से आने वाले कॉल को स्वीकार किया जाता है. साथ ही, कॉल की स्थिति को चालू में बदल दिया जाता है. कॉल की स्थिति को 'चालू है' पर सिर्फ़ तब बदला जा सकता है, जब उसकी मौजूदा स्थिति 'इंतज़ार में है' या 'रोक दी गई है' हो.
    • cancel: यह कमांड, phonenumber से आने वाले इनबाउंड फ़ोन कॉल या उस पर किए जाने वाले आउटबाउंड फ़ोन कॉल को बंद कर देती है.
    • busy: यह फ़ंक्शन, phonenumber पर किए गए आउटबाउंड कॉल को बंद करता है और कॉल की स्थिति को busy में बदल देता है. कॉल की स्थिति को 'व्यस्त' के तौर पर सिर्फ़ तब बदला जा सकता है, जब उसकी मौजूदा स्थिति 'कॉल का इंतज़ार किया जा रहा है' हो.
  • gsm {data| voice} state डेटा स्टेट कमांड, जीपीआरएस डेटा कनेक्शन की स्थिति बदलती है. वहीं, वॉइस स्टेट कमांड, जीपीआरएस वॉइस कनेक्शन की स्थिति बदलती है. ये बदलाव इस तरह होते हैं:

    • unregistered: कोई नेटवर्क उपलब्ध नहीं है.
    • home: लोकल नेटवर्क पर, रोमिंग नहीं.
    • roaming: रोमिंग नेटवर्क पर है.
    • searching: नेटवर्क खोजे जा रहे हैं.
    • अनुमति नहीं है: सिर्फ़ आपातकालीन कॉल किए जा सकते हैं.
    • off: यह विकल्प, रजिस्टर नहीं किए गए विकल्प की तरह ही होता है.
    • on: घर पर होने की स्थिति की तरह ही.
  • gsm hold: कॉल को होल्ड करने की स्थिति में बदलता है. कॉल की स्थिति को सिर्फ़ तब होल्ड पर सेट किया जा सकता है, जब उसकी मौजूदा स्थिति चालू हो या इंतज़ार में हो.

  • gsm list: इसमें सभी इनबाउंड और आउटबाउंड कॉल और उनकी स्थितियां दिखती हैं.

  • gsm status: इससे GSM की मौजूदा वॉइस/डेटा स्थिति की जानकारी मिलती है. ये वैल्यू, आवाज़ और डेटा कमांड के लिए बताई गई वैल्यू होती हैं.

  • gsm signal {rssi| ber} यह अपडेट के अगले 15 सेकंड के लिए, सिग्नल की रिपोर्ट की गई स्ट्रेंथ (आरएसएसआई) और बिट एरर रेट (बीईआर) को बदलता है. यहां दी गई सूची में, पैरामीटर और उनकी वैल्यू के बारे में बताया गया है:

    • rssi: इसकी रेंज 0 से 31 तक होती है. अज्ञात के लिए, इसकी वैल्यू 99 होती है.
    • ber: रेंज 0 से 7 तक होती है. इसके अलावा, 'जानकारी नहीं है' के लिए 99 होती है.
  • gsm signal-profile num: इससे सिग्नल की क्वालिटी प्रोफ़ाइल सेट की जाती है. num, 0 से 4 तक की कोई संख्या होती है.

  • cdma ssource source यह मौजूदा सीडीएमए सदस्यता सोर्स सेट करता है. इसमें सोर्स, नेटवर्क पर आधारित अनुमति वाली सूची होती है. इसमें सीडीएमए कैरियर के सदस्य और उनकी वैल्यू शामिल होती हैं. ये वैल्यू इस तरह होती हैं:

    • nv: यह कुकी, नॉन-वोलैटाइल रैम से सदस्यता की जानकारी पढ़ती है.
    • ruim: यह कुकी, Removable User Identity Module (RUIM) से सदस्यता की जानकारी पढ़ती है.
  • cdma prl_version version: इससे पसंदीदा रोमिंग सूची (पीआरएल) का मौजूदा वर्शन डंप होता है. वर्शन नंबर, पीआरएल डेटाबेस के लिए होता है. इसमें सिस्टम चुनने और उसे हासिल करने की प्रोसेस के दौरान इस्तेमाल की गई जानकारी होती है.

एम्युलेटर पर सेंसर मैनेज करना

इन कमांड से पता चलता है कि एवीडी में कौनसे सेंसर उपलब्ध हैं. सेंसर कमांड का इस्तेमाल करने के अलावा, एम्युलेटर में सेटिंग देखी और अडजस्ट की जा सकती हैं. इसके लिए, ऐक्सिलरोमीटर और अतिरिक्त सेंसर टैब में मौजूद वर्चुअल सेंसर स्क्रीन पर जाएं.

  • सेंसर की स्थिति: इसमें सभी सेंसर और उनकी स्थिति की जानकारी होती है.

  • 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: इसमें कोई भी संख्या वाली स्ट्रिंग शामिल होती है.
    • textmessage: एसएमएस मैसेज.

    नीचे दिए गए उदाहरण में, 4085555555 फ़ोन नंबर पर "hi there" मैसेज भेजा गया है:

    sms send 4085555555 hi there
    

कंसोल, एसएमएस मैसेज को Android फ़्रेमवर्क पर फ़ॉरवर्ड करता है. इसके बाद, यह फ़्रेमवर्क मैसेज को ऐसे ऐप्लिकेशन पर भेजता है जो एसएमएस मैनेज करता है. जैसे, Messages ऐप्लिकेशन. अगर 10 नंबर पास किए जाते हैं, तो ऐप्लिकेशन उन्हें फ़ोन नंबर के तौर पर फ़ॉर्मैट करता है. लंबी या छोटी संख्या वाली स्ट्रिंग, उसी तरह दिखती हैं जिस तरह आपने उन्हें भेजा था.

फ़िंगरप्रिंट सिम्युलेशन

  • finger touch fingerprint-id: इससे सेंसर को उंगली से छूने की प्रोसेस को सिम्युलेट किया जाता है.

  • finger remove: इससे उंगली हटाने का सिम्युलेशन किया जाता है.

इन कमांड का इस्तेमाल करने के बारे में जानने के लिए, फ़िंगरप्रिंट सिम्युलेशन और पुष्टि के बारे में यहां दिया गया सेक्शन देखें.

स्क्रीन रिकॉर्ड

स्क्रीन रिकॉर्ड करने की कमांड की मदद से, होस्ट सिस्टम से सीधे तौर पर एम्युलेटर के फ़िज़िकल डिसप्ले की अच्छी क्वालिटी वाली वीडियो फ़ाइलें कैप्चर की जा सकती हैं. यह लगातार इंटिग्रेशन पाइपलाइन और गड़बड़ी की रिपोर्ट अपने-आप भेजने की सुविधा के लिए बहुत काम का है.

  • screenrecord {start| stop} file इससे डिसप्ले रिकॉर्डिंग की प्रोसेस शुरू या बंद होती है.
    • start file: इससे वीडियो रिकॉर्डिंग शुरू होती है. आउटपुट फ़ाइल के आखिर में, .webm एक्सटेंशन होना ज़रूरी है. कैप्चर किया गया वीडियो, सीधे तौर पर आपके एवीडी की कंसोल आउटपुट डायरेक्ट्री में सेव होता है: �.~/.android/avd/avd_name.avd/console_out/file
    • stop file: इससे, डिसप्ले रिकॉर्डिंग की चालू प्रोसेस बंद हो जाती है.

ऑटोमेशन और मैक्रो

ऑटोमेशन सबसिस्टम की मदद से डेवलपर, चालू वर्चुअल डिवाइस पर मैक्रो की स्थिति में होने वाले बदलावों को रिकॉर्ड कर सकते हैं. साथ ही, उन्हें अपने-आप होने वाली टेस्टिंग के फ़्लो को लागू करने के लिए वापस चला सकते हैं.

  • automation {record| stop-record| play| stop-play} यह कुकी, अपने-आप रिकॉर्ड होने वाले मैक्रो को मैनेज करती है.
    • record: यह डिवाइस की स्थिति में होने वाले बदलावों और इनपुट को रिकॉर्ड करना शुरू करता है.
    • stop-record: इससे मौजूदा मैक्रो रिकॉर्डिंग सेशन बंद हो जाता है.
    • play: रिकॉर्ड की गई मैक्रो सीक्वेंस को वापस चलाना शुरू करता है.
    • stop-play: इससे, चालू मैक्रो के प्लेबैक क्रम को रोका जाता है.

फ़िज़िक्स (6DoF)

फ़िज़िक्स कमांड, छह डिग्री ऑफ़ फ़्रीडम (6DoF) वाले फ़िज़िकल मूवमेंट मॉडल के लिए, ग्राउंड ट्रुथ स्पैटियल पोज़ को लॉग करने की सुविधा मैनेज करती हैं. इनका इस्तेमाल, ऐडवांस मोशन ट्रैकिंग को सिम्युलेट करने के लिए किया जाता है.

  • physics {record-gt| stop} यह कुकी, शरीर की मुद्रा के मॉडल की रिकॉर्डिंग को मैनेज करती है.
    • record-gt: इससे, ग्राउंड-ट्रुथ 6DoF मूवमेंट डेटा रिकॉर्ड करना शुरू किया जाता है.
    • stop: इससे ग्राउंड-ट्रुथ रिकॉर्डिंग की मौजूदा प्रोसेस रुक जाती है.

डिवाइस कंट्रोल की ऐडवांस सुविधाएं

इस सेक्शन में, कंसोल कमांड के ऐसे एंडपॉइंट शामिल होते हैं जो खास तौर पर, ऐडवांस इम्यूलेशन कॉन्फ़िगरेशन के लिए होते हैं. इनमें नेटवर्क प्रॉक्सी, मल्टी-डिस्प्ले कॉन्फ़िगरेशन, रेंडरिंग ओवरराइड, और हाइपरवाइज़र डायरेक्ट डिबगिंग शामिल हैं.

  • multidisplay {add| del} इस कुकी का इस्तेमाल, मल्टी-स्क्रीन कॉन्फ़िगरेशन की जांच करने के लिए सेकंडरी वर्चुअल मॉनिटर जोड़ने या मिटाने के लिए किया जाता है. ध्यान दें: Pixel Fold या Resizable Emulator जैसे फ़ोल्ड किए जा सकने वाले डिवाइसों पर, सेकंडरी मॉनिटर की सुविधा काम नहीं करती.

  • 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 कंसोल, इंटरैक्टिव सेशन या सामान्य स्क्रिप्टिंग के लिए बहुत अच्छा है. हालांकि, gRPC इंटरफ़ेस को लगातार इंटिग्रेशन (सीआई) और हेडलेस एनवायरमेंट में, बेहतर परफ़ॉर्मेंस, सुरक्षित, और मज़बूत ऑटोमेटेड कंट्रोल के लिए डिज़ाइन किया गया है. gRPC, सीधे तौर पर सेवा के एंडपॉइंट उपलब्ध कराता है. इसलिए, इसमें टेक्स्ट स्ट्रीम को पार्स करने, टर्मिनल सेशन हैंडशेक मैनेज करने या बिना एन्क्रिप्ट (सुरक्षित) किए गए लोकल होस्ट पोर्ट को दिखाने की ज़रूरत नहीं होती.

लेगसी Telnet कंसोल और आधुनिक gRPC प्रोग्रामैटिक इंटरफ़ेस में से किसी एक को चुनने के लिए, परफ़ॉर्मेंस, सुरक्षा, और सुविधाओं की क्षमताओं की तुलना देखें:

सुविधा Telnet Console gRPC इंटरफ़ेस
इनके लिए सबसे सही मैन्युअल डीबगिंग, इंटरैक्टिव सेशन. हेडलेस सीआई/सीडी, हैवी ऑटोमेटेड टेस्ट रिग.
स्पीड धीमा; टेक्स्ट ओवरहेड, कनेक्शन में लगने वाला समय. ऑप्टिमाइज़ किया गया; मल्टीप्लेक्स किया गया एचटीटीपी/2, फ़ास्ट प्रोटो.
सुरक्षा यह एन्क्रिप्ट (सुरक्षित) नहीं किया गया है. लोकल पोर्ट (5554–5585). इसे टीएलएस से सुरक्षित किया जा सकता है. यह नेटवर्क पर काम करता है.
स्ट्रीम यह सुविधा उपलब्ध नहीं है. सिर्फ़ अनुरोध और जवाब दिया जा सकता है. यह कुकी, logcat और मेहमान के ऑडियो को कैप्चर करने के लिए स्ट्रीम करती है.
मीडिया यह होस्ट/मेहमान की डिस्क पर आउटपुट फ़ाइलें लिखता है. सीधे तौर पर वायर से कनेक्ट किए गए बाइनरी बफ़र.
गेस्ट ओएस एम्युलेटर के लिए तय की गई कमांड का ही इस्तेमाल किया जा सकता है. यह कुकी, मेहमान के तौर पर ब्राउज़ करने वाले व्यक्ति के लिए नेटिव बैश शेल कमांड चलाती है.

gRPC को लॉन्च और कॉल करना

gRPC एंडपॉइंट का इस्तेमाल करने के लिए, कमांड लाइन से Android Emulator लॉन्च करें. इसके बाद, -grpc फ़्लैग शामिल करें. साथ ही, टारगेट लूपबैक पोर्ट की जानकारी दें.

# Start the emulator with the gRPC service enabled on port 8556
emulator -grpc localhost:8556 @Pixel_Fold

gRPC सेवा चालू होने पर, एम्युलेटर चालू होने के बाद, प्रोग्राम के हिसाब से आरपीसी कॉल किए जा सकते हैं. कमांड-लाइन टेस्टिंग के लिए, 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

gRPC सेवा मैपिंग के लिए टेलनेट कंसोल

यहां दी गई रेफ़रंस टेबल में, लेगसी टेलनेट कंसोल कमांड को उनकी संबंधित gRPC सेवाओं और तरीकों के साथ मैप किया गया है. इसमें यह भी बताया गया है कि वर्चुअल डिवाइस के साथ होने वाली सामान्य इंटरैक्शन को प्रोग्राम के हिसाब से कैसे अपने-आप किया जा सकता है:

कैटगरी लेगसी टेलनेट कमांड gRPC सेवा / तरीका
स्टेटस ping EmulatorController/getStatus
स्टेटस avd name incubating.AvdService/getAvdInfo
स्टेटस kill EmulatorController/setVmState
स्टेटस restart EmulatorController/setVmState
पावर power display EmulatorController/getBattery
पावर power capacity EmulatorController/setBattery
Geo Loc geo fix EmulatorController/setGps
सेंसर sensor set incubating.SensorService/setSensor
बायोमेट्रिक्स finger touch EmulatorController/sendFingerprint
पोस्चर posture EmulatorController/setPosture
पोस्चर physics / fold EmulatorController/setPhysicalModel
मैसेज (एसएमएस) sms 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 इंटरफ़ेस में कई नई सुविधाएं उपलब्ध हैं. इन्हें लेगसी टेलनेट कंसोल कनेक्शन पर इस्तेमाल नहीं किया जा सकता. इनमें डायरेक्ट लॉगकैट स्ट्रीमिंग, दोनों तरफ़ से ऑडियो कैप्चर या ऑडियो डालना, होस्ट जीयूआई में बदलाव करना, और डायरेक्ट शेल ऐक्सेस शामिल हैं.

gRPC सेवा / तरीका पैरामीटर क्षमता
streamLogcat {"maxLines": 100} यह मेहमान के सिस्टम लॉगकैट आउटपुट स्ट्रीम करता है
streamAudio {} यह स्पीकर के ऑडियो को वायर के ज़रिए स्ट्रीम करता है
injectAudio {"audio": "..."} माइक्रोफ़ोन से ऑडियो स्ट्रीम इंजेक्ट करता है
UiController {"theme": "DARK"} यह कुकी, होस्ट विंडो की थीम में बदलाव करती है
Waterfall/Exec {"cmd": "ls"} यह नेटिव गेस्ट ओएस की शेल कमांड चलाता है

फ़िंगरप्रिंट सिम्युलेशन और पुष्टि

पहली इमेज. फ़िंगरप्रिंट से पुष्टि करने की स्क्रीन.

अपने ऐप्लिकेशन के लिए, फ़िंगरप्रिंट की पुष्टि करने की सुविधा को सिम्युलेट और पुष्टि करने के लिए, फ़िंगर कमांड का इस्तेमाल करें. इसके लिए, आपके पास एसडीके टूल 24.3 या इसके बाद का वर्शन और Android 6.0 (एपीआई लेवल 23) या इसके बाद का वर्शन होना चाहिए.

फ़िंगरप्रिंट की पुष्टि करने की सुविधा को सिम्युलेट करने और उसकी पुष्टि करने के लिए, यह तरीका अपनाएं:

  1. अगर आपके पास फ़िंगरप्रिंट आईडी नहीं है, तो सेटिंग > सुरक्षा > फ़िंगरप्रिंट को चुनकर, एम्युलेटर में नया फ़िंगरप्रिंट रजिस्टर करें. इसके बाद, रजिस्टर करने के निर्देशों का पालन करें.

  2. फ़िंगरप्रिंट से पुष्टि करने की सुविधा को स्वीकार करने के लिए, अपना ऐप्लिकेशन सेट अप करें. यह सेटअप पूरा करने के बाद, आपके डिवाइस पर फ़िंगरप्रिंट से पुष्टि करने वाली स्क्रीन दिखेगी.

  3. जब आपका ऐप्लिकेशन, फ़िंगरप्रिंट से पुष्टि करने वाली स्क्रीन दिखाता है, तब कंसोल पर जाएं. इसके बाद, finger touch कमांड और बनाया गया फ़िंगरप्रिंट आईडी डालें. इससे उंगली से टच करने की प्रोसेस को सिम्युलेट किया जाता है.

  4. इसके बाद, उंगली हटाने का सिम्युलेट करने के लिए, finger remove कमांड डालें. आपके ऐप्लिकेशन को इस तरह जवाब देना चाहिए जैसे किसी व्यक्ति ने फ़िंगरप्रिंट सेंसर को छुआ हो और फिर अपनी उंगली हटा ली हो.