Skip to content

Commit 64fb772

Browse files
fix QA findings
1 parent d6d7ed3 commit 64fb772

File tree

4 files changed

+25
-19
lines changed

4 files changed

+25
-19
lines changed

src/askui/android_agent.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -421,8 +421,8 @@ def key_tap(
421421
from askui import AndroidVisionAgent
422422
423423
with AndroidVisionAgent() as agent:
424-
agent.key_tap("KEYCODE_HOME") # Taps the home key
425-
agent.key_tap("KEYCODE_BACK") # Taps the back key
424+
agent.key_tap("home") # Taps the home key
425+
agent.key_tap("back") # Taps the back key
426426
```
427427
"""
428428
self.os.key_tap(key)
@@ -446,8 +446,8 @@ def key_combination(
446446
from askui import AndroidVisionAgent
447447
448448
with AndroidVisionAgent() as agent:
449-
agent.key_combination(["KEYCODE_HOME", "KEYCODE_BACK"]) # Taps the home key and then the back key
450-
agent.key_combination(["KEYCODE_HOME", "KEYCODE_BACK"], duration_in_ms=200) # Taps the home key and then the back key with a 200ms delay
449+
agent.key_combination(["home", "back"]) # Taps the home key and then the back key
450+
agent.key_combination(["home", "back"], duration_in_ms=200) # Taps the home key and then the back key for 200ms.
451451
```
452452
"""
453453
self.os.key_combination(keys, duration_in_ms)
@@ -536,27 +536,27 @@ def swipe(
536536
self.os.swipe(x1, y1, x2, y2, duration_in_ms)
537537

538538
@telemetry.record_call(
539-
exclude={"device_name"},
539+
exclude={"device_serial_number"},
540540
)
541541
@validate_call
542-
def set_device_by_name(
542+
def set_device_by_serial_number(
543543
self,
544-
device_name: str,
544+
device_serial_number: str,
545545
) -> None:
546546
"""
547547
Sets the active device for screen interactions by name.
548548
549549
Args:
550-
device_name (str): The name of the device to set as active.
550+
device_serial_number (str): The serial number of the device to set as active.
551551
552552
Example:
553553
```python
554554
from askui import AndroidVisionAgent
555555
556556
with AndroidVisionAgent() as agent:
557-
agent.set_device_by_name("Pixel 6") # Sets the active device to the Pixel 6
557+
agent.set_device_by_serial_number("Pixel 6") # Sets the active device to the Pixel 6
558558
"""
559-
self.os.set_device_by_name(device_name)
559+
self.os.set_device_by_serial_number(device_serial_number)
560560

561561
@telemetry.record_call(exclude={"goal", "on_message"})
562562
@validate_call

src/askui/tools/android/agent_os.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -375,9 +375,9 @@ def set_device_by_index(self, device_index: int = 0) -> None:
375375
raise NotImplementedError
376376

377377
@abstractmethod
378-
def set_device_by_name(self, device_name: str) -> None:
378+
def set_device_by_serial_number(self, device_serial_number: str) -> None:
379379
"""
380-
Sets the active device for screen interactions by name.
380+
Sets the active device for screen interactions by serial number.
381381
"""
382382
raise NotImplementedError
383383

src/askui/tools/android/agent_os_handler.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,9 +139,9 @@ def set_device_by_index(self, device_index: int = 0) -> None:
139139
"AndroidAgentOS", f"Set device by index: {device_index}"
140140
)
141141

142-
def set_device_by_name(self, device_name: str) -> None:
143-
self._os_agent.set_device_by_name(device_name)
142+
def set_device_by_serial_number(self, device_serial_number: str) -> None:
143+
self._os_agent.set_device_by_serial_number(device_serial_number)
144144
self._real_screen_resolution = None
145145
self._reporter.add_message(
146-
"AndroidAgentOS", f"Set device by name: {device_name}"
146+
"AndroidAgentOS", f"Set device by serial number: {device_serial_number}"
147147
)

src/askui/tools/android/ppadb_agent_os.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import io
22
import re
3+
import shlex
34
import string
45
from typing import List, Optional, get_args
56

@@ -110,14 +111,14 @@ def set_device_by_index(self, device_index: int = 0) -> None:
110111
self._device = devices[device_index]
111112
self.set_display_by_index(0)
112113

113-
def set_device_by_name(self, device_name: str) -> None:
114+
def set_device_by_serial_number(self, device_serial_number: str) -> None:
114115
devices = self._get_connected_devices()
115116
for device in devices:
116-
if device.serial == device_name:
117+
if device.serial == device_serial_number:
117118
self._device = device
118119
self.set_display_by_index(0)
119120
return
120-
msg = f"Device name {device_name} not found"
121+
msg = f"Device name {device_serial_number} not found"
121122
raise RuntimeError(msg)
122123

123124
def screenshot(self) -> Image.Image:
@@ -186,7 +187,12 @@ def type(self, text: str) -> None:
186187
raise RuntimeError(error_msg_nonprintable)
187188
assert self._selected_display is not None
188189
display_index: int = self._selected_display.display_index
189-
self.shell(f"input -d {display_index} text {text}")
190+
191+
escaped_text = shlex.quote(text)
192+
193+
shell_safe_text = escaped_text.replace(" ", "%s")
194+
195+
self.shell(f"input -d {display_index} text {shell_safe_text}")
190196

191197
def key_tap(self, key: ANDROID_KEY) -> None:
192198
if key not in get_args(ANDROID_KEY):

0 commit comments

Comments
 (0)