चालू हर वर्चुअल डिवाइस में एक कंसोल होता है. इसकी मदद से, डिवाइस के एनवायरमेंट को कंट्रोल किया जा सकता है और उससे जुड़ी क्वेरी की जा सकती है. उदाहरण के लिए, कंसोल का इस्तेमाल करके पोर्ट रीडायरेक्शन, नेटवर्क की सुविधाओं, और टेलीफ़ोनी इवेंट को मैनेज किया जा सकता है. ऐसा तब किया जा सकता है, जब आपका ऐप्लिकेशन एम्युलेटर पर चल रहा हो.
इन कमांड को चलाने के लिए, आपके पास पहले से ही कोई एम्युलेटर चालू होना चाहिए. एम्युलेटर चलाने के बारे में ज़्यादा जानकारी के लिए, Android Emulator पर ऐप्लिकेशन चलाना और कमांड लाइन से एम्युलेटर शुरू करना लेख पढ़ें.
कंसोल सेशन शुरू और बंद करना
कंसोल को ऐक्सेस करने और टर्मिनल विंडो से कमांड डालने के लिए, कंसोल पोर्ट से कनेक्ट करने के लिए टेलनेट का इस्तेमाल करें. इसके बाद, अपना पुष्टि करने वाला टोकन डालें. जब भी कंसोल पर OK दिखता है, तब यह कमांड स्वीकार करने के लिए तैयार होता है. कोई सामान्य प्रॉम्प्ट नहीं है.
चल रहे वर्चुअल डिवाइस के कंसोल से कनेक्ट करने के लिए:
टर्मिनल विंडो खोलें और यह निर्देश डालें:
telnet localhost console-portजब एम्युलेटर को अलग विंडो में चलाया जाता है, तब एम्युलेटर विंडो के टाइटल में कंसोल पोर्ट नंबर दिखता है. हालांकि, जब इसे टूल विंडो में चलाया जाता है, तब यह नहीं दिखता. उदाहरण के लिए, कंसोल पोर्ट 5554 का इस्तेमाल करने वाले एम्युलेटर के लिए विंडो का टाइटल, Pixel8_API_34:5554 हो सकता है. इसके अलावा,
adb devicesकमांड, चालू वर्चुअल डिवाइसों और उनके कंसोल पोर्ट नंबर की सूची प्रिंट करती है. ज़्यादा जानकारी के लिए, डिवाइसों के लिए क्वेरी करना लेख पढ़ें.ध्यान दें: एम्युलेटर, पोर्ट 5554 से 5585 पर कनेक्शन के लिए सुनता है. साथ ही, यह सिर्फ़ लोकल होस्ट से कनेक्शन स्वीकार करता है.
कंसोल में OK दिखने के बाद,
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: डिवाइस को चालू करता है.
- status: वर्चुअल डिवाइस के स्टेटस के बारे में क्वेरी करता है. यह स्टेटस, चालू या बंद हो सकता है.
- name: वर्चुअल डिवाइस के नाम के बारे में क्वेरी करता है.
avd snapshot {list| save name| load name| delete name}यह कुकी, स्नैपशॉट में डिवाइस की स्थिति को सेव करती है और उसे वापस लाती है. ऐसा इन स्थितियों में होता है:- list: इससे सेव किए गए सभी स्नैपशॉट दिखते हैं.
- save name: स्नैपशॉट को नाम के तौर पर सेव करता है.
- load name: इससे नाम वाला स्नैपशॉट लोड होता है.
- delete name: इससे नाम दिया गया स्नैपशॉट मिट जाता है.
यहां दिए गए उदाहरण में,
firstactivitysnapshotनाम से स्नैपशॉट सेव करने का तरीका बताया गया है:avd snapshot save firstactivitysnapshotfold: अगर डिवाइस फ़ोल्ड किया जा सकने वाला डिवाइस है और फ़िलहाल वह अनफ़ोल्ड है, तो उसे फ़ोल्ड करके उसकी छोटी स्क्रीन कॉन्फ़िगरेशन को दिखाता है.
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 OKevent 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 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: यूएमटीएस/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 80network 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} phonenumbergsm पैरामीटर ये हैं:- 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: इससे, डिसप्ले रिकॉर्डिंग की चालू प्रोसेस बंद हो जाती है.
- start 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) या इसके बाद का वर्शन होना चाहिए.
फ़िंगरप्रिंट की पुष्टि करने की सुविधा को सिम्युलेट करने और उसकी पुष्टि करने के लिए, यह तरीका अपनाएं:
अगर आपके पास फ़िंगरप्रिंट आईडी नहीं है, तो सेटिंग > सुरक्षा > फ़िंगरप्रिंट को चुनकर, एम्युलेटर में नया फ़िंगरप्रिंट रजिस्टर करें. इसके बाद, रजिस्टर करने के निर्देशों का पालन करें.
फ़िंगरप्रिंट से पुष्टि करने की सुविधा को स्वीकार करने के लिए, अपना ऐप्लिकेशन सेट अप करें. यह सेटअप पूरा करने के बाद, आपके डिवाइस पर फ़िंगरप्रिंट से पुष्टि करने वाली स्क्रीन दिखेगी.
जब आपका ऐप्लिकेशन, फ़िंगरप्रिंट से पुष्टि करने वाली स्क्रीन दिखाता है, तब कंसोल पर जाएं. इसके बाद,
finger touchकमांड और बनाया गया फ़िंगरप्रिंट आईडी डालें. इससे उंगली से टच करने की प्रोसेस को सिम्युलेट किया जाता है.इसके बाद, उंगली हटाने का सिम्युलेट करने के लिए,
finger removeकमांड डालें. आपके ऐप्लिकेशन को इस तरह जवाब देना चाहिए जैसे किसी व्यक्ति ने फ़िंगरप्रिंट सेंसर को छुआ हो और फिर अपनी उंगली हटा ली हो.