From 9ba5e23690f9c2814d9b164ab2ba12e2d060e86d Mon Sep 17 00:00:00 2001 From: Joel Fernandes Date: Thu, 20 Apr 2017 11:23:42 -0700 Subject: [PATCH 1/3] android: Add system wakeup and sleep keycodes Signed-off-by: Joel Fernandes --- libs/utils/android/system.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/libs/utils/android/system.py b/libs/utils/android/system.py index 42e8c4dec..c26b0dd08 100644 --- a/libs/utils/android/system.py +++ b/libs/utils/android/system.py @@ -254,6 +254,26 @@ class System(object): """ target.execute('input keyevent KEYCODE_BACK') + @staticmethod + def wakeup(target): + """ + Wake up the system if its sleeping + + :param target: instance of devlib Android target + :type target: devlib.target.AndroidTarget + """ + target.execute('input keyevent KEYCODE_WAKEUP') + + @staticmethod + def sleep(target): + """ + Make system sleep if its awake + + :param target: instance of devlib Android target + :type target: devlib.target.AndroidTarget + """ + target.execute('input keyevent KEYCODE_SLEEP') + @staticmethod def gfxinfo_reset(target, apk_name): """ -- GitLab From fb6046b3808fdbbc648076a6db5a9846e070080f Mon Sep 17 00:00:00 2001 From: Joel Fernandes Date: Sun, 26 Mar 2017 04:05:37 -0700 Subject: [PATCH 2/3] android: Add support for screen on/off and unlock Signed-off-by: Joel Fernandes --- libs/utils/android/screen.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/libs/utils/android/screen.py b/libs/utils/android/screen.py index af80a5f07..971760660 100644 --- a/libs/utils/android/screen.py +++ b/libs/utils/android/screen.py @@ -16,6 +16,7 @@ # import logging +from system import System class Screen(object): """ @@ -136,4 +137,20 @@ class Screen(object): """ return target.execute('getprop ro.sf.lcd_density') + @staticmethod + def set_screen(target, on=True): + log = logging.getLogger('Screen') + if not on: + log.info('Setting screen OFF') + System.sleep(target) + return + log.info('Setting screen ON') + System.wakeup(target) + + @staticmethod + def unlock(target): + Screen.set_screen(target, on=True) + System.menu(target) + System.home(target) + # vim :set tabstop=4 shiftwidth=4 expandtab -- GitLab From f2fd5b78499f93b8c03b2424118bfa95579c39f0 Mon Sep 17 00:00:00 2001 From: Joel Fernandes Date: Mon, 17 Apr 2017 21:43:33 -0700 Subject: [PATCH 3/3] android/workloads: Unlock screen properly Also wakes up device if needed while unlocking. For youtube workloads: Since I am removing back button as a part of the unlock patch, I changed to starting youtube video from beginning, to do it with help of force_stop instead of back button which I also find to be more robust. Signed-off-by: Joel Fernandes --- libs/utils/android/workloads/gmaps.py | 4 +--- libs/utils/android/workloads/jankbench.py | 5 ++--- libs/utils/android/workloads/uibench.py | 5 ++--- libs/utils/android/workloads/vellamo.py | 3 +-- libs/utils/android/workloads/youtube.py | 7 ++++--- 5 files changed, 10 insertions(+), 14 deletions(-) diff --git a/libs/utils/android/workloads/gmaps.py b/libs/utils/android/workloads/gmaps.py index 380686d48..838f5cf0e 100644 --- a/libs/utils/android/workloads/gmaps.py +++ b/libs/utils/android/workloads/gmaps.py @@ -70,9 +70,7 @@ class GMaps(Workload): # Set min brightness Screen.set_brightness(self._target, auto=False, percent=0) # Unlock device screen (assume no password required) - System.menu(self._target) - # Press Back button to be sure we run the video from the start - System.back(self._target) + Screen.unlock(self._target) # Use the monkey tool to start GMaps # This allows to subsequently set the screen orientation to LANDSCAPE diff --git a/libs/utils/android/workloads/jankbench.py b/libs/utils/android/workloads/jankbench.py index fcf76e8a0..5d17ded92 100644 --- a/libs/utils/android/workloads/jankbench.py +++ b/libs/utils/android/workloads/jankbench.py @@ -102,9 +102,8 @@ class Jankbench(Workload): except KeyError: raise ValueError('Jankbench test [%s] not supported', test_name) - # Make sure we exit the app if already open - System.menu(self._target) - System.back(self._target) + # Unlock device screen (assume no password required) + Screen.unlock(self._target) # Close and clear application System.force_stop(self._target, self.package, clear=True) diff --git a/libs/utils/android/workloads/uibench.py b/libs/utils/android/workloads/uibench.py index bdba69fa8..3b24030ee 100755 --- a/libs/utils/android/workloads/uibench.py +++ b/libs/utils/android/workloads/uibench.py @@ -85,9 +85,8 @@ class UiBench(Workload): self.out_dir = out_dir self.collect = collect - # Press Back button to be sure we run the video from the start - System.menu(self._target) - System.back(self._target) + # Unlock device screen (assume no password required) + Screen.unlock(self._target) # Close and clear application System.force_stop(self._target, self.package, clear=True) diff --git a/libs/utils/android/workloads/vellamo.py b/libs/utils/android/workloads/vellamo.py index 476266efa..c8863e8d2 100644 --- a/libs/utils/android/workloads/vellamo.py +++ b/libs/utils/android/workloads/vellamo.py @@ -94,8 +94,7 @@ class Vellamo(Workload): sleep_time = 3.5 # Unlock device screen (assume no password required) - System.menu(self._target) - System.back(self._target) + Screen.unlock(self._target) System.force_stop(self._target, self.package, clear=True) diff --git a/libs/utils/android/workloads/youtube.py b/libs/utils/android/workloads/youtube.py index a2461926e..cdfbf2d04 100644 --- a/libs/utils/android/workloads/youtube.py +++ b/libs/utils/android/workloads/youtube.py @@ -66,9 +66,10 @@ class YouTube(Workload): self.collect = collect # Unlock device screen (assume no password required) - System.menu(self._target) - # Press Back button to be sure we run the video from the start - System.back(self._target) + Screen.unlock(self._target) + + # Stop youtube if already running + System.force_stop(self._target, self.package) # Use the monkey tool to start YouTube without playing any video. # This allows to subsequently set the screen orientation to LANDSCAPE -- GitLab