class AndroidHandler(): '''android系统及设备相关功能实现''' def __init__(self): ''' AndroidHandler构造函数 ''' self.__adb = Adb() self.__devices_list = self.__getConnection() if len(self.__devices_list) == 0: raise NoDeviceConnectionException self.__get_system_properties() def __getConnection(self): ''' 获取设备连接状态 :return: 连接的设备列表 ''' __ret_device_list = [] try: __devices_list = self.__adb.devices() except Exception, e: print str(e) raise ADBServerException if len(__devices_list) == 0: pass else: for __dev in __devices_list: if not __dev[1] == 'device': raise DeviceStatuException __ret_device_list.append(__dev) return __ret_device_list
class AndroidHandler(): '''android系统及设备相关功能实现''' DISPLAY_SIZE = (480, 600) _adb = None def __init__(self): ''' AndroidHandler构造函数 ''' if self._adb == None: self._adb = Adb() def getConnection(self): ''' 获取设备连接状态 :return: 连接的设备列表 ''' __ret_device_list = [] __devices_list = self._adb.devices() if len(__devices_list) == 0: pass else: for _dev in __devices_list: __ret_device_list.append(_dev[0]) return __ret_device_list def shell(self, cmd, serial=None, timeout=None): ''' 运行设备端命令 :param shell_cmd: 命令 :param timeout: 超时时间,默认无 :return: 命令运行返回值 ''' if serial == None: _cmd = str(cmd) _retVal = self._adb.shell(cmd, timeout=timeout) else: _retVal = self._adb.shell(cmd, serial, timeout=timeout) # with self._adb.socket.Connect(): # print self._adb.socket.address # # _cmd = host_command(serial, cmd) # # _cmd = 'host:get-serialno' # # _cmd = 'host:devices' # # _cmd = 'host: -s 4d0088254b015125 shell ls' # _cmd = 'host-serial:4d0088254b015125: uninstall com.gfth.coouj' # print _cmd # _retVal = self._adb._command(_cmd) return _retVal def getDevicesInfo(self): ''' 获取设备信息 :return: 设备信息字典 ''' __device_info_dic = {} __device_info = self.shell('getprop').replace('\n', '').split('\r') # __device_info = self.shell('getprop') print __device_info for __prop in __device_info: if __prop.count(':') > 0: try: # print("split prop: %s" % __prop) __prop_key = str(__prop).split(u'[')[1].split(u']')[0] __prop_value = str(__prop).split(u'[')[2][0:-1] # __prop_value = str(__prop).split(u':')[1] except: print "split prop %s exception" % str(__prop) else: continue if __prop_key == 'dalvik.vm.heapsize': print __prop __device_info_dic[DEV_INFO.DEVICES_HEAPSIZE] = __prop_value Logger.d("Get DEVICES_HEAPSIZE = " + __device_info_dic[DEV_INFO.DEVICES_HEAPSIZE]) if __prop_key == 'ro.build.version.release': __device_info_dic[DEV_INFO.DEVICES_AND_VERSION] = __prop_value Logger.d("Get DEVICES_AND _VERSION = " + __device_info_dic[DEV_INFO.DEVICES_AND_VERSION]) if __prop_key == 'ro.build.version.sdk': __device_info_dic[DEV_INFO.DEVICES_SDK_VERSION] = __prop_value Logger.d("Get DEVICES_SDK_VERSION = " + __device_info_dic[DEV_INFO.DEVICES_SDK_VERSION]) if __prop_key == 'ro.product.cpu.abi': __device_info_dic[DEV_INFO.DEVICES_CPU_TYPE] = __prop_value Logger.d("Get DEVICES_CPU_TYPE = " + __device_info_dic[DEV_INFO.DEVICES_CPU_TYPE]) if __prop_key == 'ro.product.manufacturer': devices_n1 = __prop_value if __prop_key == 'ro.product.model': devices_n2 = __prop_value try: __dev_name = str(devices_n1 + '-' + devices_n2).replace(' ', '-') __device_info_dic[DEV_INFO.DEVICES_NAME] = __dev_name Logger.d("Get DEVICES_NAME = " + __device_info_dic[DEV_INFO.DEVICES_NAME]) except Exception, e: print "Get device name error" #获取显示信息 try: __device_info_dic[DEV_INFO.DEVICES_DISP_SIZE] = self.getDisSize() except Exception, e: print "Get device display error"
class AndroidHandler(): '''android系统及设备相关功能实现''' DISPLAY_SIZE = (480, 600) _adb = None def __init__(self): ''' AndroidHandler构造函数 ''' if self._adb == None: self._adb = Adb() def getConnection(self): ''' 获取设备连接状态 :return: 连接的设备列表 ''' __ret_device_list = [] __devices_list = self._adb.devices() if len(__devices_list) == 0: pass else: for _dev in __devices_list: __ret_device_list.append(_dev[0]) return __ret_device_list def shell(self, cmd, serial=None, timeout=None): ''' 运行设备端命令 :param shell_cmd: 命令 :param timeout: 超时时间,默认无 :return: 命令运行返回值 ''' if serial == None: _cmd = str(cmd) _retVal = self._adb.shell(cmd, timeout=timeout) else: _retVal = self._adb.shell(cmd, serial, timeout=timeout) # with self._adb.socket.Connect(): # print self._adb.socket.address # # _cmd = host_command(serial, cmd) # # _cmd = 'host:get-serialno' # # _cmd = 'host:devices' # # _cmd = 'host: -s 4d0088254b015125 shell ls' # _cmd = 'host-serial:4d0088254b015125: uninstall com.gfth.coouj' # print _cmd # _retVal = self._adb._command(_cmd) return _retVal def getDevicesInfo(self): ''' 获取设备信息 :return: 设备信息字典 ''' __device_info_dic = {} __device_info = self.shell('getprop').replace('\n','').split('\r') # __device_info = self.shell('getprop') print __device_info for __prop in __device_info: if __prop.count(':') > 0: try: # print("split prop: %s" % __prop) __prop_key = str(__prop).split(u'[')[1].split(u']')[0] __prop_value = str(__prop).split(u'[')[2][0:-1] # __prop_value = str(__prop).split(u':')[1] except: print "split prop %s exception" % str(__prop) else: continue if __prop_key == 'dalvik.vm.heapsize': print __prop __device_info_dic[DEV_INFO.DEVICES_HEAPSIZE] = __prop_value Logger.d("Get DEVICES_HEAPSIZE = " + __device_info_dic[DEV_INFO.DEVICES_HEAPSIZE]) if __prop_key == 'ro.build.version.release': __device_info_dic[DEV_INFO.DEVICES_AND_VERSION] = __prop_value Logger.d("Get DEVICES_AND _VERSION = " + __device_info_dic[DEV_INFO.DEVICES_AND_VERSION]) if __prop_key == 'ro.build.version.sdk': __device_info_dic[DEV_INFO.DEVICES_SDK_VERSION] = __prop_value Logger.d("Get DEVICES_SDK_VERSION = " + __device_info_dic[DEV_INFO.DEVICES_SDK_VERSION]) if __prop_key == 'ro.product.cpu.abi': __device_info_dic[DEV_INFO.DEVICES_CPU_TYPE] = __prop_value Logger.d("Get DEVICES_CPU_TYPE = " + __device_info_dic[DEV_INFO.DEVICES_CPU_TYPE]) if __prop_key == 'ro.product.manufacturer': devices_n1 = __prop_value if __prop_key == 'ro.product.model': devices_n2 = __prop_value try: __dev_name = str(devices_n1 + '-' + devices_n2).replace(' ','-') __device_info_dic[DEV_INFO.DEVICES_NAME] = __dev_name Logger.d("Get DEVICES_NAME = " + __device_info_dic[DEV_INFO.DEVICES_NAME]) except Exception, e: print "Get device name error" #获取显示信息 try: __device_info_dic[DEV_INFO.DEVICES_DISP_SIZE] = self.getDisSize() except Exception, e: print "Get device display error"
def num_devices(): if adb_active(): a = Adb(DEFAULT_ADDRESS) return len(a.devices())