Module: DeviceAPI::Android

Defined in:
lib/device_api/android/adb.rb,
lib/device_api/android.rb,
lib/device_api/android/aapt.rb,
lib/device_api/android/device.rb,
lib/device_api/android/signing.rb,
lib/device_api/android/plugins/disk.rb,
lib/device_api/android/device/kindle.rb,
lib/device_api/android/plugins/audio.rb,
lib/device_api/android/device/samsung.rb,
lib/device_api/android/plugins/memory.rb,
lib/device_api/android/plugins/battery.rb

Overview

Android component of DeviceAPI

Defined Under Namespace

Modules: Plugin Classes: AAPT, ADB, ADBCommandError, BadSerialString, Device, DeviceAlreadyConnectedError, DeviceDisconnectedWhenNotARemoteDevice, Kindle, Samsung, Signing, SigningCommandError

Class Method Summary collapse

Class Method Details

.check_if_remote_device?(serial) ⇒ Boolean

Returns:

  • (Boolean)


47
48
49
50
51
52
53
54
# File 'lib/device_api/android.rb', line 47

def self.check_if_remote_device?(serial)
  begin
    ADB::check_ip_address(serial)
    true
  rescue ADBCommandError
    false 
  end 
end

.connect(ipaddress, port = 5555) ⇒ Object



39
40
41
# File 'lib/device_api/android.rb', line 39

def self.connect(ipaddress,port=5555)
  ADB.connect(ipaddress,port)
end

.device(serial) ⇒ Object

Retrieve an Device object by serial id



30
31
32
33
34
35
36
37
# File 'lib/device_api/android.rb', line 30

def self.device(serial)
  if serial.to_s.empty?
    raise DeviceAPI::BadSerialString.new("serial was '#{serial.nil? ? 'nil' : serial}'")
  end
  state = ADB.get_state(serial)
  remote = check_if_remote_device?(serial)
  DeviceAPI::Android::Device.create( self.get_device_type({ :"#{serial}" => state}),  { serial: serial, state: state, remote: remote })
end

.devicesObject

Returns array of connected android devices



19
20
21
22
23
24
25
26
27
# File 'lib/device_api/android.rb', line 19

def self.devices
  ADB.devices.map do |d|
    if d.keys.first && !d.keys.first.include?('?')
      serial = d.keys.first
      remote = check_if_remote_device?(serial)
      DeviceAPI::Android::Device.create( self.get_device_type(d), { serial: serial, state: d.values.first, remote: remote} )
    end
  end.compact
end

.disconnect(ipaddress, port = 5555) ⇒ Object



43
44
45
# File 'lib/device_api/android.rb', line 43

def self.disconnect(ipaddress,port=5555)
  ADB.disconnect(ipaddress,port)
end

.get_device_type(options) ⇒ Object

Return the device type used in determining which Device Object to create



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/device_api/android.rb', line 57

def self.get_device_type(options)
  return :default if ['unauthorized', 'offline', 'unknown'].include? options.values.first
  serial = options.keys.first
  state = ADB.get_state(serial)
  begin
    man = Device.new(serial: serial, state: state).manufacturer
  rescue DeviceAPI::DeviceNotFound
    return :default
  rescue => e
    puts "Unrecognised exception whilst finding device '#{serial}' (state: #{options.values.first})"
    puts e.message
    puts e.backtrace.inspect
    return :default
  end
  return :default if man.nil?
  case man.downcase
    when 'amazon'
      type = :kindle
    when 'samsung'
      type = :samsung
    else
      type = :default
  end
  type
end