MonkeyDevice

Một lớp monkeyrunner tượng trưng cho một thiết bị hoặc trình mô phỏng có thể được truy cập bởi máy trạm đang chạy monkeyrunner.

Lớp này dùng để điều khiển một thiết bị Android hoặc trình mô phỏng. Các phương thức sẽ gửi sự kiện giao diện người dùng, truy xuất thông tin, cài đặt cũng như xoá và chạy các ứng dụng.

Bạn thường không cần tạo bản sao của lớp MonkeyDevice. Thay vào đó, bạn sẽ sử dụng phương thức MonkeyRunner.waitForConnection() để tạo một đối tượng mới từ liên kết thiết bị hoặc trình mô phỏng. Ví dụ, thay vì dùng:

newdevice = MonkeyDevice()

bạn nên dùng:

newdevice = MonkeyRunner.waitForConnection()

Tóm tắt

Hằng số
string DOWN Sử dụng hằng số này cùng đối số type tương ứng với phương thức press() hoặc touch() để gửi sự kiện DOWN.
string UP Sử dụng hằng số này với đối số type tương ứng với phương thức press() hoặc touch() để gửi sự kiện UP.
string DOWN_AND_UP Sử dụng hằng số này với đối số type tương ứng với phương thức press() hoặc touch() để lập tức gửi một sự kiện DOWN kèm theo một sự kiện UP.
Phương thức
void broadcastIntent (string uri, string action, string data, string mimetype, iterable categories dictionary extras, component component, iterable flags)
Truyền phát một Ý định (Intent) đến thiết bị này, như thể Ý định này đến từ ứng dụng.
void drag (tuple start, tuple end, float duration, integer steps)
Mô phỏng một cử chỉ kéo (chạm, giữ và di chuyển) trên màn hình thiết bị.
object getProperty (string key)
Tên của biến môi trường trong hệ thống sẽ trả về giá trị của biến đó cho thiết bị này. Bạn có thể xem các tên biến khả dụng tại phần mô tả chi tiết của phương thức này.
object getSystemProperty (string key)
. API này tương đương với adb shell getprop <key>. This is provided for use by platform developers.
void installPackage (string path)
Cài đặt ứng dụng Android hoặc gói kiểm thử nằm trong packageFile trên thiết bị. Trong trường hợp ứng dụng hoặc gói kiểm thử đã được cài đặt sẵn, ứng dụng hoặc gói kiểm thử đó sẽ được thay thế.
dictionary instrument (string className, dictionary args)
Chạy thành phần được chỉ định trong khả năng đo lường Android rồi trả về dữ liệu kiểu từ điển có định dạng chính xác như thành phần đang chạy quy định. Thành phần này buộc phải có trên thiết bị.
void press (string name, dictionary type)
Gửi sự kiện phím xác định bởi đối số type tới khoá được chỉ định bằng mã phím.
void reboot (string into)
Khởi động lại thiết bị này với trình tải khởi động, chỉ định bởi bootloadType.
void removePackage (string package)
Xoá gói chỉ định khỏi thiết bị, bao gồm cả dữ liệu và bộ nhớ đệm trong gói.
object shell (string cmd)
Thực thi câu lệnh shell adb và trả về kết quả (nếu có).
void startActivity (string uri, string action, string data, string mimetype, iterable categories dictionary extras, component component, flags)
Bắt đầu một Hoạt động trên thiết bị này bằng cách gửi một Ý định được tạo từ các đối số đã cấp.
MonkeyImage takeSnapshot()
Chụp toàn bộ vùng đệm màn hình trên thiết bị, thu được một đối tượng MonkeyImage chứa ảnh chụp màn hình đang hiển thị.
void touch (integer x, integer y, integer type)
Gửi một sự kiện chạm xác định bởi đối số type đến vị trí trên màn hình xác định theo x và y.
void type (string message)
Gửi các ký tự dưới dạng gói tin tới thiết bị, như thể các ký tự đó được nhập trên bàn phím thiết bị. Điều này tương đương với việc gọi phương thức press() cho mỗi mã phím trong message bằng cách sử dụng kiểu sự kiện phím DOWN_AND_UP.
void wake ()
Đánh thức màn hình thiết bị.

Hằng số

string DOWN

Giá trị của phương thức press() hoặc touch(). Xác định gửi kiểu sự kiện DOWN tới thiết bị, tương ứng với thao tác nhấn phím hoặc chạm vào màn hình.

string UP

Giá trị của phương thức press() hoặc touch(). Xác định gửi kiểu sự kiện UP tới thiết bị, tương ứng với thao tác nhả phím hoặc nhấc tay khỏi màn hình.

string DOWN_AND_UP

Giá trị cho phương thức press(), touch() hoặc type(). Xác định gửi kiểu sự kiện DOWN cùng với kiểu sự kiện UP tới thiết bị, tương ứng với việc nhập phím hoặc nhấp vào màn hình.

Phương thức công khai

void broadcastIntent ( string uri, string action, string data, string mimetype, iterable categories dictionary extras, component component, iterable flags)

Truyền phát một Ý định đến thiết bị này, như thể Ý định này đến từ ứng dụng. Hãy xem Intent để biết thêm thông tin về đối số.

Đối số
uri URI cho Ý định. (xem Intent.setData()).
action Hành động cho Ý định này (xem Intent.setAction()).
data URI dữ liệu cho Ý định này (xem Intent.setData()).
mimetype Kiểu MIME cho Ý định (xem Intent.setType()).
categories Cấu trúc dữ liệu kiểu lặp (iterable data structure) chứa chuỗi xác định loại Ý định (xem Intent.addCategory()).
extras Dữ liệu bổ sung kiểu từ điển cho Ý định này (xem ví dụ tại Intent.putExtra()).

Khoá cho mỗi từ điển dữ liệu phải là kiểu chuỗi. Giá trị của mục này có thể là bất kỳ kiểu dữ liệu đơn giản hoặc có cấu trúc nào.

component Là thành phần của Ý định này (xem ComponentName). Việc sử dụng đối số này sẽ điều hướng Ý định đến một lớp cụ thể trong một gói Android xác định.
flags Cấu trúc dữ liệu kiểu lặp chứa cờ sẽ kiểm sẽ soát cách Ý định xử lý (xem Intent.setFlags()).

void drag ( tuple start, tuple end, float duration, integer steps)

Mô phỏng một cử chỉ kéo (chạm, giữ và di chuyển) trên màn hình thiết bị.

Đối số
start Điểm bắt đầu của cử chỉ kéo, dưới dạng bộ dữ liệu (tuple) (x, y), trong đó x và y là số nguyên.
end Điểm kết thúc của cử chỉ kéo, dưới dạng bộ dữ liệu (x, y), trong đó x và y là số nguyên.
duration Thời lượng diễn ra cử chỉ kéo tính bằng giây. Giá trị mặc định là 1,0 giây.
steps Số bước cần thực hiện khi nội suy điểm. Giá trị mặc định là 10.

object getProperty (string key)

Tên của biến môi trường trong hệ thống sẽ trả về giá trị của biến đó cho thiết bị này.

Đối số
key Tên của biến môi trường trong hệ thống. Các tên biến khả dụng được liệt kê trong Bảng 1. Tên biến thuộc tính nằm cuối chủ đề này.
Giá trị trả về
  • Giá trị của biến. Định dạng dữ liệu thay đổi tuỳ theo yêu cầu của biến.

object getSystemProperty (string key)

Đồng nghĩa với getProperty().

Đối số
key Tên của biến môi trường trong hệ thống. Các tên biến khả dụng được liệt kê trong Bảng 1. Tên biến thuộc tính.
Giá trị trả về
  • Giá trị của biến. Định dạng dữ liệu thay đổi tuỳ theo yêu cầu của biến.

void installPackage (string path)

Cài đặt ứng dụng Android hoặc gói kiểm thử chứa trong packageFile trên thiết bị. Trong trường hợp ứng dụng hoặc gói kiểm thử đã được cài đặt sẵn, ứng dụng hoặc gói kiểm thử đó sẽ được thay thế.

Đối số
path Đường dẫn và tên tệp hợp lệ của tệp .apk dùng để cài đặt.

dictionary instrument ( string className, dictionary args)

Chạy thành phần được chỉ định với khả năng đo lường Android rồi trả về kết quả kiểu từ điển có định dạng chính xác như thành phần đang chạy quy định. Thành phần này buộc phải có trên thiết bị.

Sử dụng phương thức này để bắt đầu kịch bản kiểm thử sử dụng một trong các lớp kịch bản kiểm thử của Android. Hãy xem bài viết Thông tin cơ bản về kiểm thử để tìm hiểu thêm về quy trình kiểm thử đơn vị bằng khung kiểm thử Android.

Đối số
className Tên của một thành phần Android được cài đặt trên thiết bị, dưới hình thức packagename/classname chuẩn, trong đó packagename là tên gói Android của tệp .apk trên thiết bị và classname là tên lớp của một thành phần Android (Activity, ContentProvider, Service hoặc BroadcastReceiver) cũng trong tệp đó. Tên gói và tên lớp phải đồng thời đủ điều kiện. Hãy xem ComponentName để biết thêm thông tin.
args Dữ liệu kiểu từ điển chứa cờ và giá trị các cờ đó. Các dữ liệu này sẽ được truyền tới các thành phần từ đầu. Nếu cờ không nhận giá trị, hãy đặt giá trị kiểu từ điển cờ thành chuỗi rỗng.
Giá trị trả về
  • Kết quả chạy của thành phần trả về dưới dạng dữ liệu kiểu từ điển. Nội dung của giá trị đó do chính thành phần đó xác định.

    Nếu bạn sử dụng InstrumentationTestRunner làm tên lớp cho đối số componentName, thì dữ liệu kiểu từ điển trả về sẽ chứa một khoá "stream" duy nhất. Giá trị của "stream" là một chuỗi chứa kết quả đầu ra của quy trình kiểm thử, giống như khi InstrumentationTestRunner chạy thông qua dòng lệnh. Định dạng của giá trị trả về này được mô tả trong phần kiểm thử trong các IDE khác.

void press (string name, integer type)

Gửi sự kiện phím do type chỉ định đến khoá do keycode chỉ định.

Đối số
name Tên của mã phím cần gửi đi. Hãy xem KeyEvent để biết danh sách tên mã phím khả dụng. Hãy sử dụng tên mã phím thay vì giá trị số nguyên của mã.
type Loại sự kiện quan trọng cần gửi. Các giá trị hợp lệ là DOWN, UPDOWN_AND_UP.

void reboot (string bootloadType)

Khởi động lại thiết bị này với trình tải khởi động, chỉ định bởi bootloadType.

Đối số
into Loại trình tải khởi động dùng để khởi động lại. Bạn có thể sử dụng các giá trị sau: "bootloader", "recovery" hoặc "None".

void removePackage (string package)

Xoá gói chỉ định khỏi thiết bị, bao gồm cả dữ liệu và bộ nhớ đệm trong gói.

Đối số
package Tên gói Android của tệp .apk trên thiết bị.

object shell (string cmd)

Thực thi câu lệnh shell adb và trả về kết quả (nếu có).

Đối số
⌘ Cmd Lệnh thực thi trong môi trường shell adb. Hình thức của các lệnh này được mô tả trong chủ đề Cầu gỡ lỗi Android.
Giá trị trả về
  • Kết quả chạy của lệnh (nếu có). Định dạng của giá trị trả về được xác định theo lệnh.

void startActivity ( string uri, string action, string data, string mimetype, iterable categories dictionary extras, component component, iterable flags)

Bắt đầu một Hoạt động trên thiết bị bằng cách gửi một Ý định được tạo từ các đối số đã cấp.

Đối số
uri URI cho Ý định. (xem Intent.setData()).
action Hành động cho Ý định (xem Intent.setAction()).
data URI dữ liệu cho Ý định (xem Intent.setData()).
mimetype Kiểu MIME cho Ý định (xem Intent.setType()).
categories Cấu trúc dữ liệu kiểu lặp có chứa chuỗi xác định danh mục cho Ý định (xem Intent.addCategory()).
extras Dữ liệu kiểu từ điển bổ sung cho Ý định (xem ví dụ về Intent.putExtra()).

Khoá cho mỗi từ điển dữ liệu phải là kiểu chuỗi. Giá trị của mục này có thể là bất kỳ kiểu dữ liệu đơn giản hoặc có cấu trúc nào.

component Thành phần của Ý định này (xem ComponentName). Việc sử dụng đối số này sẽ chuyển hướng Intent đến một lớp cụ thể trong một gói Android xác định.
flags Cấu trúc dữ liệu kiểu lặp chứa cờ sẽ kiểm sẽ soát cách Ý định xử lý (xem Intent.setFlags()).

MonkeyImage takeSnapshot ()

Chụp toàn bộ vùng đệm màn hình trên thiết bị, thu được chứa ảnh chụp màn hình đang hiển thị.

Giá trị trả về
  • Đối tượng MonkeyImage chứa hình ảnh của màn hình đang hiển thị.

void touch ( integer x, integer y, string type)

Gửi một sự kiện chạm xác định bởi đối số type đến vị trí trên màn hình xác định theo x và y.

Đối số
x Vị trí theo chiều ngang của thao tác chạm trên pixel trong thực tế của thiết bị, tính từ bên trái màn hình theo hướng màn hình lúc này.
y Vị trí theo chiều dọc của thao tác chạm trên pixel trong thực tế của thiết bị, tính từ đầu màn hình theo hướng màn hình lúc này.
type Loại sự kiện quan trọng cần gửi. Các giá trị hợp lệ là DOWN, UPDOWN_AND_UP.

void type (string message)

Gửi các ký tự dưới dạng gói tin tới thiết bị, như thể các ký tự đó được nhập trên bàn phím thiết bị. Điều này tương đương với việc gọi phương thức press() cho mỗi mã phím trong message bằng cách sử dụng kiểu sự kiện phím DOWN_AND_UP.

Đối số
message Một chuỗi chứa các ký tự bạn muốn gửi.

void wake ()

Đánh thức màn hình thiết bị.


Phụ lục

Table 1.Property variable names used with getProperty() and getSystemProperty().

Nhóm thuộc tính Thuộc tính Mô tả Lưu ý
build board Tên mã cho bảng hệ thống của thiết bị xem Build
brand Nhà mạng hoặc nhà cung cấp dịch vụ của hệ điều hành.
device Tên thiết kế của thiết bị.
fingerprint Giá trị nhận dạng duy nhất của bản dựng đang chạy hiện tại.
host
ID Nhãn hoặc mã danh sách thay đổi.
model Tên hiển thị cho người dùng cuối của thiết bị.
product Tên sản phẩm tổng thể.
tags Các thẻ được phân tách bằng dấu phẩy mô tả bản dựng, chẳng hạn như "unsigned" và "debug".
type Loại bản dựng, chẳng hạn như "user" hoặc "eng".
user
CPU_ABI Tên của tập lệnh dành cho mã gốc, dưới dạng CPU ngoại cỡ theo quy ước ABI.
manufacturer Nhà sản xuất sản phẩm/phần cứng.
version.incremental Mã nội bộ mà hệ thống kiểm soát nguồn sử dụng thể hiện phiên bản phần mềm.
version.release Tên hiển thị cho người dùng của phiên bản phần mềm này.
version.sdk Phiên bản SDK hiển thị cho người liên kết với phiên bản hệ điều hành này.
version.codename Tên mã phát triển hiện tại hay "REL" nếu phiên bản phần mềm này đã được phát hành.
display width Chiều rộng màn hình thiết bị tính theo pixel. Hãy xem DisplayMetrics để biết chi tiết.
height Chiều cao hiển thị của thiết bị tính theo pixel.
density Mật độ logic của màn hình. Đây là một hệ số để điều chỉnh theo tỷ lệ theo đơn vị DIP (pixel không phụ thuộc vào mật độ) theo độ phân giải của thiết bị. DIP được điều chỉnh sao cho 1 DIP tương đương với 1 pixel trên một màn hình hiển thị 160 pixel trên inch. Ví dụ: trên màn hình 160 dpi, mật độ = 1,0, trong khi trên màn hình 120 dpi, mật độ = 0,75.

Giá trị này không tuân theo chính xác kích thước màn hình thực nhưng được điều chỉnh để phù hợp với các thay đổi đáng kể dựa trên DPI màn hình. Hãy xem density để biết thêm thông tin.

am.current package Tên gói Android của gói đang chạy. Các khoá am.current sẽ trả về thông tin về Hoạt động đang chạy.
action Hành động hiện tại. Phần này có cùng định dạng với thuộc tính name của phần tử action trong tệp kê khai gói.
comp.class Tên lớp của thành phần bắt đầu hoạt động hiện tại. Hãy xem comp.package để biết thêm chi tiết.
comp.package Tên gói của thành phần bắt đầu hoạt động hiện tại. Thành phần được xác định theo tên gói và tên lớp của gói chứa thành phần đó.
data Dữ liệu (nếu có) có trong Ý định bắt đầu Hoạt động hiện tại.
categories Các danh mục do Ý định bắt đầu Hoạt động hiện tại chỉ định.
clock realtime Số mili giây kể từ khi thiết bị khởi động lại, bao gồm cả thời gian ngủ sâu. Hãy xem SystemClock để biết thêm thông tin.
uptime Số mili giây kể từ khi thiết bị khởi động lại, không tính thời gian ngủ sâu
millis thời gian hiện tại kể từ thời gian bắt đầu của hệ thống UNIX, tính theo mili giây.