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)


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

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

.connect(ipaddress, port = 5555) ⇒ Object



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

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
38
# 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
  device = ADB.devices.select {|k| k.keys.first == serial}
  state = device.first[serial] || 'unknown'
  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



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

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



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

def self.get_device_type(options)
  return :default if ['unauthorized', 'offline', 'unknown'].include? options.values.first
  serial = options.keys.first
  state = options.values.first
  begin
    man = Device.new(serial: serial, state: state).manufacturer
  rescue DeviceAPI::DeviceNotFound
    return :default
  rescue => e
    puts "Unrecognised exception whilst finding device '#{serial}' (state: #{state})"
    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