adb_keyevent.py 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. # -*- coding:utf-8 -*-
  2. import os, sys, time
  3. from ssat_sdk.uiautomator2 import AdbShell
  4. import os
  5. import subprocess
  6. '''
  7. // key codes,键名对应着键值
  8. public static final int KEYCODE_UNKNOWN = 0;
  9. public static final int KEYCODE_SOFT_LEFT = 1;
  10. public static final int KEYCODE_SOFT_RIGHT = 2;
  11. public static final int KEYCODE_HOME = 3;
  12. public static final int KEYCODE_BACK = 4;
  13. public static final int KEYCODE_CALL = 5;
  14. public static final int KEYCODE_ENDCALL = 6;
  15. public static final int KEYCODE_0 = 7;
  16. public static final int KEYCODE_1 = 8;
  17. public static final int KEYCODE_2 = 9;
  18. public static final int KEYCODE_3 = 10;
  19. public static final int KEYCODE_4 = 11;
  20. public static final int KEYCODE_5 = 12;
  21. public static final int KEYCODE_6 = 13;
  22. public static final int KEYCODE_7 = 14;
  23. public static final int KEYCODE_8 = 15;
  24. public static final int KEYCODE_9 = 16;
  25. public static final int KEYCODE_STAR = 17;
  26. public static final int KEYCODE_POUND = 18;
  27. public static final int KEYCODE_DPAD_UP = 19;
  28. public static final int KEYCODE_DPAD_DOWN = 20;
  29. public static final int KEYCODE_DPAD_LEFT = 21;
  30. public static final int KEYCODE_DPAD_RIGHT = 22;
  31. public static final int KEYCODE_DPAD_CENTER = 23;
  32. public static final int KEYCODE_VOLUME_UP = 24;
  33. public static final int KEYCODE_VOLUME_DOWN = 25;
  34. public static final int KEYCODE_POWER = 26;
  35. public static final int KEYCODE_CAMERA = 27;
  36. public static final int KEYCODE_CLEAR = 28;
  37. public static final int KEYCODE_A = 29;
  38. public static final int KEYCODE_B = 30;
  39. public static final int KEYCODE_C = 31;
  40. public static final int KEYCODE_D = 32;
  41. public static final int KEYCODE_E = 33;
  42. public static final int KEYCODE_F = 34;
  43. public static final int KEYCODE_G = 35;
  44. public static final int KEYCODE_H = 36;
  45. public static final int KEYCODE_I = 37;
  46. public static final int KEYCODE_J = 38;
  47. public static final int KEYCODE_K = 39;
  48. public static final int KEYCODE_L = 40;
  49. public static final int KEYCODE_M = 41;
  50. public static final int KEYCODE_N = 42;
  51. public static final int KEYCODE_O = 43;
  52. public static final int KEYCODE_P = 44;
  53. public static final int KEYCODE_Q = 45;
  54. public static final int KEYCODE_R = 46;
  55. public static final int KEYCODE_S = 47;
  56. public static final int KEYCODE_T = 48;
  57. public static final int KEYCODE_U = 49;
  58. public static final int KEYCODE_V = 50;
  59. public static final int KEYCODE_W = 51;
  60. public static final int KEYCODE_X = 52;
  61. public static final int KEYCODE_Y = 53;
  62. public static final int KEYCODE_Z = 54;
  63. public static final int KEYCODE_COMMA = 55;
  64. public static final int KEYCODE_PERIOD = 56;
  65. public static final int KEYCODE_ALT_LEFT = 57;
  66. public static final int KEYCODE_ALT_RIGHT = 58;
  67. public static final int KEYCODE_SHIFT_LEFT = 59;
  68. public static final int KEYCODE_SHIFT_RIGHT = 60;
  69. public static final int KEYCODE_TAB = 61;
  70. public static final int KEYCODE_SPACE = 62;
  71. public static final int KEYCODE_SYM = 63;
  72. public static final int KEYCODE_EXPLORER = 64;
  73. public static final int KEYCODE_ENVELOPE = 65;
  74. public static final int KEYCODE_ENTER = 66;
  75. public static final int KEYCODE_DEL = 67;
  76. public static final int KEYCODE_GRAVE = 68;
  77. public static final int KEYCODE_MINUS = 69;
  78. public static final int KEYCODE_EQUALS = 70;
  79. public static final int KEYCODE_LEFT_BRACKET = 71;
  80. public static final int KEYCODE_RIGHT_BRACKET = 72;
  81. public static final int KEYCODE_BACKSLASH = 73;
  82. public static final int KEYCODE_SEMICOLON = 74;
  83. public static final int KEYCODE_APOSTROPHE = 75;
  84. public static final int KEYCODE_SLASH = 76;
  85. public static final int KEYCODE_AT = 77;
  86. public static final int KEYCODE_NUM = 78;
  87. public static final int KEYCODE_HEADSETHOOK = 79;
  88. public static final int KEYCODE_FOCUS = 80; // *Camera* focus
  89. public static final int KEYCODE_PLUS = 81;
  90. public static final int KEYCODE_MENU = 82;
  91. public static final int KEYCODE_NOTIFICATION = 83;
  92. public static final int KEYCODE_SEARCH = 84;
  93. public static final int KEYCODE_MEDIA_PLAY_PAUSE= 85;
  94. public static final int KEYCODE_MEDIA_STOP = 86;
  95. public static final int KEYCODE_MEDIA_NEXT = 87;
  96. public static final int KEYCODE_MEDIA_PREVIOUS = 88;
  97. public static final int KEYCODE_MEDIA_REWIND = 89;
  98. public static final int KEYCODE_MEDIA_FAST_FORWARD = 90;
  99. public static final int KEYCODE_MUTE = 91;
  100. '''
  101. KeyDict = {"home":3, "back":4, "power":26, "up":19, "down":20, "left":21, "right":22, "ok":23}
  102. print KeyDict.keys()
  103. class AdbKeyevent():
  104. def __init__(self):
  105. pass
  106. def sendKey(self, keyName, times=1, duration=1):
  107. for ti in range(0, times):
  108. if KeyDict.has_key(keyName.lower()):
  109. self.keyevent(KeyDict[keyName])
  110. time.sleep(duration)
  111. else:
  112. print u"keyevent没有按键:", keyName
  113. break
  114. def getDeviceName(self):
  115. return "adbkeyevent"
  116. def getScriptName(self):
  117. return "adbkeyevent"
  118. def getKeyName(self):
  119. return KeyDict.keys()
  120. def close(self):
  121. self.operator.close()
  122. def getCurrentDeviceName(self):
  123. return self.getCurrentDeviceName()
  124. def keyevent(self, keycode):
  125. cmd = "adb shell input keyevent " + str(keycode)
  126. print cmd
  127. os.system(cmd)
  128. # ret = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  129. # print ret
  130. def startActivity(self, activity):
  131. cmd_head = "adb shell am start"
  132. cmd = cmd_head + " " + activity
  133. print "startActivity:",cmd
  134. process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  135. out = process.stdout.read()
  136. err = process.stderr.read()
  137. process.terminate()
  138. if err.lower().find("error") == 0:
  139. print "startActivity,",err
  140. return False
  141. else:
  142. print "startActivity"
  143. return True
  144. '''
  145. 执行android shell下的指令,例如: ls
  146. '''
  147. def excuteShell(self, command):
  148. cmd_head = "adb shell"
  149. cmd = cmd_head + " " + command
  150. print "excuteShell:", cmd
  151. process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  152. out = process.stdout.read()
  153. err = process.stderr.read()
  154. process.terminate()
  155. if err.find("error") == 0:
  156. print "excuteShell,", err
  157. return err
  158. else:
  159. print "excuteShell"
  160. return out
  161. '''
  162. 执行windows cmd的指令,例如:dir
  163. '''
  164. def excuteCmd(self, cmd):
  165. print "excuteCmd:", cmd
  166. process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  167. out = process.stdout.read()
  168. err = process.stderr.read()
  169. process.terminate()
  170. if err.find("error") == 0:
  171. print "excuteCmd,", err
  172. return err
  173. else:
  174. print "excuteCmd"
  175. return out
  176. if __name__ == "__main__":
  177. keyevent = AdbKeyevent()
  178. # keyevent.sendKey("ok", 2, 3)
  179. ret = keyevent.excuteCmd("adb root")
  180. print ret
  181. ret = keyevent.excuteShell("ls /storage")
  182. print ret