mirror of
https://github.com/ARM-software/devlib.git
synced 2025-02-26 14:37:51 +00:00
Merge pull request #157 from marcbonnici/airplane/brightness
Adds additional Android methods
This commit is contained in:
commit
2a0d110012
@ -1061,20 +1061,25 @@ class AndroidTarget(Target):
|
|||||||
|
|
||||||
# Android-specific
|
# Android-specific
|
||||||
|
|
||||||
def swipe_to_unlock(self, direction="horizontal"):
|
def swipe_to_unlock(self, direction="diagonal"):
|
||||||
width, height = self.screen_resolution
|
width, height = self.screen_resolution
|
||||||
command = 'input swipe {} {} {} {}'
|
command = 'input swipe {} {} {} {}'
|
||||||
if direction == "horizontal":
|
if direction == "diagonal":
|
||||||
swipe_heigh = height * 2 // 3
|
|
||||||
start = 100
|
start = 100
|
||||||
stop = width - start
|
stop = width - start
|
||||||
self.execute(command.format(start, swipe_heigh, stop, swipe_heigh))
|
swipe_height = height * 2 // 3
|
||||||
if direction == "vertical":
|
self.execute(command.format(start, swipe_height, stop, 0))
|
||||||
swipe_middle = height / 2
|
elif direction == "horizontal":
|
||||||
swipe_heigh = height * 2 // 3
|
swipe_height = height * 2 // 3
|
||||||
self.execute(command.format(swipe_middle, swipe_heigh, swipe_middle, 0))
|
start = 100
|
||||||
|
stop = width - start
|
||||||
|
self.execute(command.format(start, swipe_height, stop, swipe_height))
|
||||||
|
elif direction == "vertical":
|
||||||
|
swipe_middle = width / 2
|
||||||
|
swipe_height = height * 2 // 3
|
||||||
|
self.execute(command.format(swipe_middle, swipe_height, swipe_middle, 0))
|
||||||
else:
|
else:
|
||||||
raise DeviceError("Invalid swipe direction: {}".format(self.swipe_to_unlock))
|
raise TargetError("Invalid swipe direction: {}".format(direction))
|
||||||
|
|
||||||
def getprop(self, prop=None):
|
def getprop(self, prop=None):
|
||||||
props = AndroidProperties(self.execute('getprop'))
|
props = AndroidProperties(self.execute('getprop'))
|
||||||
@ -1186,6 +1191,69 @@ class AndroidTarget(Target):
|
|||||||
if self.is_screen_on():
|
if self.is_screen_on():
|
||||||
self.execute('input keyevent 26')
|
self.execute('input keyevent 26')
|
||||||
|
|
||||||
|
def set_auto_brightness(self, auto_brightness):
|
||||||
|
cmd = 'settings put system screen_brightness_mode {}'
|
||||||
|
self.execute(cmd.format(int(boolean(auto_brightness))))
|
||||||
|
|
||||||
|
def get_auto_brightness(self):
|
||||||
|
cmd = 'settings get system screen_brightness_mode'
|
||||||
|
return boolean(self.execute(cmd).strip())
|
||||||
|
|
||||||
|
def set_brightness(self, value):
|
||||||
|
if not 0 <= value <= 255:
|
||||||
|
msg = 'Invalid brightness "{}"; Must be between 0 and 255'
|
||||||
|
raise ValueError(msg.format(value))
|
||||||
|
self.set_auto_brightness(False)
|
||||||
|
cmd = 'settings put system screen_brightness {}'
|
||||||
|
self.execute(cmd.format(int(value)))
|
||||||
|
|
||||||
|
def get_brightness(self):
|
||||||
|
cmd = 'settings get system screen_brightness'
|
||||||
|
return integer(self.execute(cmd).strip())
|
||||||
|
|
||||||
|
def get_airplane_mode(self):
|
||||||
|
cmd = 'settings get global airplane_mode_on'
|
||||||
|
return boolean(self.execute(cmd).strip())
|
||||||
|
|
||||||
|
def set_airplane_mode(self, mode):
|
||||||
|
root_required = self.get_sdk_version() > 23
|
||||||
|
if root_required and not self.is_rooted:
|
||||||
|
raise TargetError('Root is required to toggle airplane mode on Android 7+')
|
||||||
|
cmd = 'settings put global airplane_mode_on {}'
|
||||||
|
self.execute(cmd.format(int(boolean(mode))))
|
||||||
|
self.execute('am broadcast -a android.intent.action.AIRPLANE_MODE', as_root=root_required)
|
||||||
|
|
||||||
|
def get_auto_rotation(self):
|
||||||
|
cmd = 'settings get system accelerometer_rotation'
|
||||||
|
return boolean(self.execute(cmd).strip())
|
||||||
|
|
||||||
|
def set_auto_rotation(self, autorotate):
|
||||||
|
cmd = 'settings put system accelerometer_rotation {}'
|
||||||
|
self.execute(cmd.format(int(boolean(autorotate))))
|
||||||
|
|
||||||
|
def set_natural_rotation(self):
|
||||||
|
self.set_rotation(0)
|
||||||
|
|
||||||
|
def set_left_rotation(self):
|
||||||
|
self.set_rotation(1)
|
||||||
|
|
||||||
|
def set_inverted_rotation(self):
|
||||||
|
self.set_rotation(2)
|
||||||
|
|
||||||
|
def set_right_rotation(self):
|
||||||
|
self.set_rotation(3)
|
||||||
|
|
||||||
|
def get_rotation(self):
|
||||||
|
cmd = 'settings get system user_rotation'
|
||||||
|
return self.execute(cmd).strip()
|
||||||
|
|
||||||
|
def set_rotation(self, rotation):
|
||||||
|
if not 0 <= rotation <= 3:
|
||||||
|
raise ValueError('Rotation value must be between 0 and 3')
|
||||||
|
self.set_auto_rotation(False)
|
||||||
|
cmd = 'settings put system user_rotation {}'
|
||||||
|
self.execute(cmd.format(rotation))
|
||||||
|
|
||||||
def homescreen(self):
|
def homescreen(self):
|
||||||
self.execute('am start -a android.intent.action.MAIN -c android.intent.category.HOME')
|
self.execute('am start -a android.intent.action.MAIN -c android.intent.category.HOME')
|
||||||
|
|
||||||
|
112
doc/target.rst
112
doc/target.rst
@ -2,7 +2,7 @@ Target
|
|||||||
======
|
======
|
||||||
|
|
||||||
|
|
||||||
.. class:: Target(connection_settings=None, platform=None, working_directory=None, executables_directory=None, connect=True, modules=None, load_default_modules=True, shell_prompt=DEFAULT_SHELL_PROMPT)
|
.. class:: Target(connection_settings=None, platform=None, working_directory=None, executables_directory=None, connect=True, modules=None, load_default_modules=True, shell_prompt=DEFAULT_SHELL_PROMPT, conn_cls=None)
|
||||||
|
|
||||||
:class:`Target` is the primary interface to the remote device. All interactions
|
:class:`Target` is the primary interface to the remote device. All interactions
|
||||||
with the device are performed via a :class:`Target` instance, either
|
with the device are performed via a :class:`Target` instance, either
|
||||||
@ -68,6 +68,9 @@ Target
|
|||||||
prompted on the target. This may be used by some modules that establish
|
prompted on the target. This may be used by some modules that establish
|
||||||
auxiliary connections to a target over UART.
|
auxiliary connections to a target over UART.
|
||||||
|
|
||||||
|
:param conn_cls: This is the type of connection that will be used to communicate
|
||||||
|
with the device.
|
||||||
|
|
||||||
.. attribute:: Target.core_names
|
.. attribute:: Target.core_names
|
||||||
|
|
||||||
This is a list containing names of CPU cores on the target, in the order in
|
This is a list containing names of CPU cores on the target, in the order in
|
||||||
@ -450,3 +453,110 @@ Target
|
|||||||
Returns the path to the extracted contents. In case of files (gzip and
|
Returns the path to the extracted contents. In case of files (gzip and
|
||||||
bzip2), the path to the decompressed file is returned; for archives, the
|
bzip2), the path to the decompressed file is returned; for archives, the
|
||||||
path to the directory with the archive's contents is returned.
|
path to the directory with the archive's contents is returned.
|
||||||
|
|
||||||
|
|
||||||
|
Android Target
|
||||||
|
---------------
|
||||||
|
|
||||||
|
.. class:: AndroidTarget(connection_settings=None, platform=None, working_directory=None, executables_directory=None, connect=True, modules=None, load_default_modules=True, shell_prompt=DEFAULT_SHELL_PROMPT, conn_cls=AdbConnection, package_data_directory="/data/data")
|
||||||
|
|
||||||
|
:class:`AndroidTarget` is a subclass of :class:`Target` with additional features specific to a device running Android.
|
||||||
|
|
||||||
|
:param package_data_directory: This is the location of the data stored
|
||||||
|
for installed Android packages on the device.
|
||||||
|
|
||||||
|
.. method:: AndroidTarget.set_rotation(rotation)
|
||||||
|
|
||||||
|
Specify an integer representing the desired screen rotation with the
|
||||||
|
following mappings: Natural: ``0``, Rotated Left: ``1``, Inverted : ``2``
|
||||||
|
and Rotated Right : ``3``.
|
||||||
|
|
||||||
|
.. method:: AndroidTarget.get_rotation(rotation)
|
||||||
|
|
||||||
|
Returns an integer value representing the orientation of the devices
|
||||||
|
screen. ``0`` : Natural, ``1`` : Rotated Left, ``2`` : Inverted
|
||||||
|
and ``3`` : Rotated Right.
|
||||||
|
|
||||||
|
.. method:: AndroidTarget.set_natural_rotation()
|
||||||
|
|
||||||
|
Sets the screen orientation of the device to its natural (0 degrees)
|
||||||
|
orientation.
|
||||||
|
|
||||||
|
.. method:: AndroidTarget.set_left_rotation()
|
||||||
|
|
||||||
|
Sets the screen orientation of the device to 90 degrees.
|
||||||
|
|
||||||
|
.. method:: AndroidTarget.set_inverted_rotation()
|
||||||
|
|
||||||
|
Sets the screen orientation of the device to its inverted (180 degrees)
|
||||||
|
orientation.
|
||||||
|
|
||||||
|
.. method:: AndroidTarget.set_right_rotation()
|
||||||
|
|
||||||
|
Sets the screen orientation of the device to 270 degrees.
|
||||||
|
|
||||||
|
.. method:: AndroidTarget.set_auto_rotation(autorotate)
|
||||||
|
|
||||||
|
Specify a boolean value for whether the devices auto-rotation should
|
||||||
|
be enabled.
|
||||||
|
|
||||||
|
.. method:: AndroidTarget.get_auto_rotation()
|
||||||
|
|
||||||
|
Returns ``True`` if the targets auto rotation is currently enabled and
|
||||||
|
``False`` otherwise.
|
||||||
|
|
||||||
|
.. method:: AndroidTarget.set_airplane_mode(mode)
|
||||||
|
|
||||||
|
Specify a boolean value for whether the device should be in airplane mode.
|
||||||
|
|
||||||
|
.. note:: Requires the device to be rooted if the device is running Android 7+.
|
||||||
|
|
||||||
|
.. method:: AndroidTarget.get_airplane_mode()
|
||||||
|
|
||||||
|
Returns ``True`` if the target is currently in airplane mode and
|
||||||
|
``False`` otherwise.
|
||||||
|
|
||||||
|
.. method:: AndroidTarget.set_brightness(value)
|
||||||
|
|
||||||
|
Sets the devices screen brightness to a specified integer between ``0`` and
|
||||||
|
``255``.
|
||||||
|
|
||||||
|
.. method:: AndroidTarget.get_brightness()
|
||||||
|
|
||||||
|
Returns an integer between ``0`` and ``255`` representing the devices
|
||||||
|
current screen brightness.
|
||||||
|
|
||||||
|
.. method:: AndroidTarget.set_auto_brightness(auto_brightness)
|
||||||
|
|
||||||
|
Specify a boolean value for whether the devices auto brightness
|
||||||
|
should be enabled.
|
||||||
|
|
||||||
|
.. method:: AndroidTarget.get_auto_brightness()
|
||||||
|
|
||||||
|
Returns ``True`` if the targets auto brightness is currently
|
||||||
|
enabled and ``False`` otherwise.
|
||||||
|
|
||||||
|
.. method:: AndroidTarget.ensure_screen_is_off()
|
||||||
|
|
||||||
|
Checks if the devices screen is on and if so turns it off.
|
||||||
|
|
||||||
|
.. method:: AndroidTarget.ensure_screen_is_on()
|
||||||
|
|
||||||
|
Checks if the devices screen is off and if so turns it on.
|
||||||
|
|
||||||
|
.. method:: AndroidTarget.is_screen_on()
|
||||||
|
|
||||||
|
Returns ``True`` if the targets screen is currently on and ``False``
|
||||||
|
otherwise.
|
||||||
|
|
||||||
|
.. method:: AndroidTarget.homescreen()
|
||||||
|
|
||||||
|
Returns the device to its home screen.
|
||||||
|
|
||||||
|
.. method:: AndroidTarget.swipe_to_unlock(direction="diagonal")
|
||||||
|
|
||||||
|
Performs a swipe input on the device to try and unlock the device.
|
||||||
|
A direction of ``"horizontal"``, ``"vertical"`` or ``"diagonal"``
|
||||||
|
can be supplied to specify in which direction the swipe should be
|
||||||
|
performed. By default ``"diagonal"`` will be used to try and
|
||||||
|
support the majority of newer devices.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user