Gửi lệnh từ bảng điều khiển trình mô phỏng

Mỗi thiết bị ảo đang chạy có một bảng điều khiển cho phép bạn truy vấn và kiểm soát môi trường thiết bị được mô phỏng. Ví dụ: bạn có thể dùng bảng điều khiển để quản lý lệnh chuyển hướng cổng, các đặc điểm mạng và các sự kiện của điện thoại trong khi ứng dụng đang chạy trên trình mô phỏng.

Các lệnh sau đây yêu cầu bạn phải đã chạy trình mô phỏng. Để biết thêm thông tin về cách chạy trình mô phỏng, hãy xem phần Chạy ứng dụng trên Trình mô phỏng AndroidBắt đầu trình mô phỏng từ dòng lệnh.

Bắt đầu và dừng phiên điều khiển

Để truy cập vào bảng điều khiển và nhập các lệnh, từ cửa sổ dòng lệnh, hãy sử dụng telnet để kết nối với cổng bảng điều khiển và cung cấp mã thông báo xác thực của bạn. Mỗi khi bảng điều khiển hiển thị OK, nghĩa là bảng điều khiển đã sẵn sàng chấp nhận các lệnh. Thông thường, sẽ không có lời nhắc.

Cách kết nối với bảng điều khiển của một thiết bị ảo đang chạy:

  1. Mở cửa sổ dòng lệnh và nhập lệnh sau:
  2. telnet localhost console-port

    Tiêu đề cửa sổ trình mô phỏng liệt kê số cổng của bảng điều khiển khi chạy trong một cửa sổ riêng, nhưng không liệt kê thông tin này khi chạy trong cửa sổ công cụ. Ví dụ: tiêu đề cửa sổ của một trình mô phỏng sử dụng cổng bảng điều khiển 5554 có thể là Pixel8_API_34:5554. Ngoài ra, lệnh adb devices in ra danh sách các thiết bị ảo đang chạy và số cổng của bảng điều khiển tương ứng. Để biết thêm thông tin, hãy xem phần Truy vấn thiết bị.

    Lưu ý: Trình mô phỏng sẽ theo dõi các kết nối trên các cổng từ 5554 đến 5585 và chỉ chấp nhận kết nối từ localhost.

  3. Sau khi bảng điều khiển hiển thị OK, hãy nhập lệnh auth auth_token.
  4. Bảng điều khiển của trình mô phỏng yêu cầu xác thực trước khi bạn nhập các lệnh trong bảng điều khiển. auth_token phải phù hợp với nội dung của tệp .emulator_console_auth_token trong thư mục gốc.

    Nếu tệp đó không tồn tại, lệnh telnet localhost console-port sẽ tạo tệp chứa mã thông báo xác thực được tạo ngẫu nhiên. Để tắt tính năng xác thực, hãy xoá mã thông báo khỏi tệp .emulator_console_auth_token hoặc tạo một tệp trống nếu không có tệp đó.

  5. Sau khi bạn đã kết nối với bảng điều khiển, hãy nhập các lệnh trong bảng điều khiển.
  6. Nhập help, help command hoặc help-verbose để xem danh sách các lệnh trong bảng điều khiển và tìm hiểu về các lệnh cụ thể.

  7. Để thoát khỏi phiên điều khiển, hãy nhập quit hoặc exit.

Dưới đây là một phiên mẫu:

$ telnet localhost 5554
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Android Console: Authentication required
Android Console: type 'auth <auth_token>' to authenticate
Android Console: you can find your <auth_token> in
'/Users/me/.emulator_console_auth_token'
OK
auth 123456789ABCdefZ
Android Console: type 'help' for a list of commands
OK
help-verbose
Android console command help:
    help|h|?         Prints a list of commands
    help-verbose     Prints a list of commands with descriptions
    ping             Checks if the emulator is alive
    automation       Manages emulator automation
    event            Simulates hardware events
    geo              Geo-location commands
    gsm              GSM related commands
    cdma             CDMA related commands
    crash            Crashes the emulator instance
    crash-on-exit    Simulates crash on exit for the emulator instance
    kill             Terminates the emulator instance
    restart          Restarts the emulator instance
    network          Manages network settings
    power            Power related commands
    quit|exit        Quits control session
    redir            Manages port redirections
    sms              SMS related commands
    avd              Controls virtual device execution
    qemu             QEMU-specific commands
    sensor           Manages emulator sensors
    physics          Manages physical model
    finger           Manages emulator finger print
    debug            Controls the emulator debug output tags
    rotate           Rotates the screen clockwise by 90 degrees
    screenrecord     Records the emulator's display
    fold             Folds the device
    unfold           Unfolds the device
    multidisplay     Configures the multi-display
    nodraw           turn on/off NoDraw mode. (experimental)
    resize-display   resize the display resolution to the preset size
    virtualscene-image  customize virtualscene image for virtulscene camera
    proxy            manage network proxy server settings
    phonenumber      set phone number for the device


try 'help <command>' for command-specific help
OK
exit
Connection closed by foreign host.

Thông tin tham khảo về lệnh trong trình mô phỏng

Bảng sau đây mô tả các lệnh trong bảng điều khiển của trình mô phỏng cùng với thông số và giá trị của các lệnh đó:

Bảng 1. Các lệnh trong bảng điều khiển của trình mô phỏng

Lệnh chung Thông tin mô tả
avd {stop|start|status|name} Các truy vấn, chế độ điều khiển và quản lý thiết bị ảo như sau:
  • stop: Dừng quá trình thực thi của thiết bị.
  • start: Bắt đầu quá trình thực thi của thiết bị.
  • status: Truy vấn trạng thái của thiết bị ảo, có thể là running hoặc stopped.
  • name: Truy vấn tên của thiết bị ảo.
avd snapshot {list|save name|load name|delete name} Lưu và khôi phục trạng thái của thiết bị trong bản tổng quan nhanh như sau:
  • list: Liệt kê tất cả các bản tổng quan nhanh đã lưu.
  • save name: Lưu bản tổng quan nhanh với tên name.
  • load name: Tải bản tổng quan nhanh đã đặt tên.
  • delete name: Xoá bản tổng quan nhanh đã đặt tên.

Ví dụ sau đây lưu một bản tổng quan nhanh có tên firstactivitysnapshot.

avd snapshot save firstactivitysnapshot
fold Gập thiết bị lại để hiển thị cấu hình màn hình nhỏ hơn (nếu thiết bị có thể gập lại và đang mở).
unfold Mở thiết bị ra để hiển thị cấu hình màn hình lớn hơn (nếu thiết bị có thể gập lại và đang gập).
kill Chấm dứt thiết bị ảo.
ping Kiểm tra xem thiết bị ảo có đang chạy hay không.
rotate Xoay AVD ngược chiều kim đồng hồ, mỗi lần xoay thêm 45 độ.
Huỷ trình mô phỏng Thông tin mô tả
crash Huỷ trình mô phỏng trong quá trình thực thi ứng dụng.
crash-on-exit Huỷ trình mô phỏng khi ứng dụng thoát ra.
Thẻ gỡ lỗi Thông tin mô tả
debug tags ...

Bật hoặc tắt thông báo gỡ lỗi từ các phần cụ thể của trình mô phỏng. Thông số tags phải là một giá trị trong danh sách các thẻ gỡ lỗi xuất hiện khi bạn thực thi emulator -help-debug-tags. Để biết thêm thông tin về tuỳ chọn -help-debug-tags, hãy xem bảng các tuỳ chọn thường dùng.

Ví dụ sau đây sẽ bật thẻ radio:

debug radio
Chuyển hướng cổng Thông tin mô tả
redir list Liệt kê lệnh chuyển hướng cổng hiện tại.
redir add protocol:host-port:guest-port Thêm lệnh chuyển hướng cổng mới như sau:
  • protocol: Phải là tcp hoặc udp.
  • host-port: Số cổng cần mở trên máy chủ.
  • guest-port: Số cổng để định tuyến dữ liệu đến trên trình mô phỏng.
redir del protocol:host-port Xoá lệnh chuyển hướng cổng.
  • protocol: Phải là tcp hoặc udp.
  • host-port: Số cổng cần mở trên máy chủ.
Vị trí địa lý Thông tin mô tả

Đặt vị trí địa lý được báo cáo cho các ứng dụng chạy bên trong trình mô phỏng bằng cách gửi bản sửa lỗi GPS cho trình mô phỏng.

Bạn có thể đưa ra một trong các lệnh geo sau đây ngay khi thiết bị ảo đang chạy. Trình mô phỏng sẽ đặt vị trí bạn nhập bằng cách tạo một nhà cung cấp vị trí mô phỏng. Nhà cung cấp này phản hồi trình nghe vị trí do các ứng dụng cài đặt và cung cấp vị trí cho LocationManager. Mọi ứng dụng đều có thể truy vấn trình quản lý vị trí để lấy bản sửa lỗi GPS hiện tại cho thiết bị được mô phỏng bằng cách gọi LocationManager.getLastKnownLocation("gps").

geo fix longitude latitude [altitude] [satellites] [velocity] Gửi bản sửa lỗi GPS đơn giản cho trình mô phỏng. Chỉ định longitudelatitude theo độ thập phân. Sử dụng một số từ 1 đến 12 để chỉ định số satellites dùng để xác định vị trí, đồng thời chỉ định altitude tính bằng mét và velocity theo hải lý.
geo nmea sentence Gửi một câu NMEA 0183 tới thiết bị được mô phỏng như thể câu này xuất phát từ một modem GPS được mô phỏng. Bắt đầu sentence bằng "$GP". Hiện tại, chỉ có câu "$GPGGA" và "$GPRCM" mới được hỗ trợ. Sau đây là ví dụ về một câu GPGGA (Dữ liệu khắc phục sự cố hệ thống định vị toàn cầu) có chức năng thu thập thời gian, vị trí và dữ liệu khắc phục sự cố cho bộ thu GPS:
geo nmea $GPGGA ,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx
Sự kiện phần cứng giả Thông tin mô tả
event types Liệt kê tất cả các loại sự kiện giả. Đối với các sự kiện có mã, số lượng mã sẽ xuất hiện trong dấu ngoặc đơn ở bên phải.

event types
event <type> can be an integer or one of the following aliases:
    EV_SYN
    EV_KEY    (405 code aliases)
    EV_REL    (2 code aliases)
    EV_ABS    (27 code aliases)
    EV_MSC
    EV_SW     (4 code aliases)
    EV_LED
    EV_SND
    EV_REP
    EV_FF
    EV_PWR
    EV_FF_STATUS
    EV_MAX
OK
        

event send types [types ...] Gửi một hoặc nhiều loại sự kiện giả.
event codes type Liệt kê các mã sự kiện cho loại sự kiện giả đã chỉ định.
event send type[:code]:[value] [...] Gửi một hoặc nhiều sự kiện giả kèm theo mã và giá trị mã không bắt buộc.

Để tìm hiểu chính xác sự kiện cần gửi, bạn có thể sử dụng lệnh adb, đồng thời, dùng tay nhấn các nút trên trình mô phỏng.

Dưới đây là các sự kiện được tạo khi bạn nhấn nút nguồn:

adb shell getevent -lt

/dev/input/event12: EV_KEY       KEY_POWER            DOWN
/dev/input/event12: EV_SYN       SYN_REPORT           00000000
/dev/input/event12: EV_KEY       KEY_POWER            UP
/dev/input/event12: EV_SYN       SYN_REPORT           00000000
      
Ví dụ: để mô phỏng thao tác nhấn và giữ nút nguồn, hãy gửi hai sự kiện EV_KEY cho keydown và keyup:
event send EV_KEY:KEY_POWER:0
OK
event send EV_KEY:KEY_POWER:1
OK
      

event text message Gửi một chuỗi ký tự mô phỏng thao tác nhấn phím. Thông điệp phải là một chuỗi UTF-8. Các bài đăng sử dụng mã Unicode sẽ được ánh xạ ngược theo bàn phím hiện tại của thiết bị, còn các ký tự không được hỗ trợ sẽ tự động bị huỷ.
Điều khiển trạng thái nguồn Thông tin mô tả
power display Cho biết trạng thái bộ sạc và pin.
power ac {on|off} Đặt trạng thái sạc xoay chiều thành on hoặc off.
power status {unknown|charging|discharging|not-charging|full} Thay đổi trạng thái pin như chỉ định.
power present {true|false} Đặt trạng thái có/không có pin.
power health {unknown|good|overheat|dead|overvoltage|failure} Đặt tình trạng pin.
power capacity percent Đặt trạng thái của dung lượng pin còn lại ở dạng tỷ lệ phần trăm từ 0 đến 100.
Trạng thái kết nối mạng Thông tin mô tả
network status Kiểm tra trạng thái mạng cùng các đặc tính về độ trễ và tốc độ hiện tại.
network delay latency

Thay đổi độ trễ mạng được mô phỏng.

Trình mô phỏng cho phép bạn mô phỏng nhiều mức độ trễ mạng để có thể kiểm thử ứng dụng của mình trong môi trường có điều kiện chạy thực tế điển hình hơn. Bạn có thể đặt độ trễ hoặc phạm vi độ trễ khi khởi động trình mô phỏng. Bạn cũng có thể sử dụng bảng điều khiển để thay đổi độ trễ khi ứng dụng đang chạy trong trình mô phỏng.

Sau đây là các định dạng latency mạng (số có đơn vị là mili giây):

Định dạng độ trễ mạng:

  • gprs: GPRS, sử dụng phạm vi độ trễ từ 150 đến 550.
  • edge: EDGE/EGPRS, sử dụng phạm vi độ trễ từ 80 đến 400.
  • umts: UMTS/3G, sử dụng phạm vi độ trễ từ 35 đến 200.
  • none: Không có độ trễ.
  • num: Mô phỏng độ trễ đã chỉ định bằng mili giây.
  • min:max: Mô phỏng phạm vi độ trễ đã chỉ định.

Để đặt độ trễ khi khởi động trình mô phỏng, hãy sử dụng tuỳ chọn trình mô phỏng -netdelay với giá trị latency được hỗ trợ, như liệt kê trong danh sách Định dạng độ trễ mạng trước đó. Dưới đây là một số ví dụ:

emulator -netdelay gprs
emulator -netdelay 40,100

Để thay đổi độ trễ mạng trong khi trình mô phỏng đang chạy, hãy kết nối với bảng điều khiển và sử dụng lệnh netdelay có giá trị latency được hỗ trợ trong danh sách Định dạng độ trễ mạng trước đó.

network delay gprs
network delay 40 100
network speed speed Trình mô phỏng cho phép bạn mô phỏng nhiều tốc độ truyền qua mạng.

Bạn có thể đặt phạm vi hoặc tốc độ truyền khi khởi động trình mô phỏng. Ngoài ra, bạn cũng có thể dùng bảng điều khiển để thay đổi tốc độ khi ứng dụng đang chạy trong trình mô phỏng.

Sau đây là các định dạng speed mạng (số có đơn vị là kilobit/giây):

Định dạng tốc độ mạng:

  • gsm: GSM/CSD, sử dụng tốc độ tải lên là 14,4 và tải xuống là 14,4.
  • hscsd: HSCSD, sử dụng tốc độ tải lên là 14,4 và tải xuống là 43,2.
  • gprs: GPRS, sử dụng tốc độ tải lên là 40 và tải xuống là 80.
  • edge: EDGE/EGPRS, sử dụng tốc độ tải lên là 118,4 và tải xuống là 236,8.
  • umts: UMTS/3G, sử dụng tốc độ tải lên là 128 và tải xuống là 1920.
  • hsdpa: HSDPA, sử dụng tốc độ tải lên là 348 và tải xuống là 14400.
  • lte: LTE, sử dụng tốc độ tải lên là 58.000 và tải xuống là 173.000.
  • evdo: EVDO, sử dụng tốc độ tải lên là 75.000 và tải xuống là 280.000.
  • full: Tốc độ không giới hạn, nhưng phụ thuộc vào tốc độ kết nối của máy tính bạn sử dụng.
  • num: Đặt tốc độ chính xác theo kilobit/giây dùng cho cả hoạt động tải lên và tải xuống.
  • up:down: Đặt các tốc độ chính xác tính theo kilobit/giây để dùng riêng biệt cho hoạt động tải lên và tải xuống.

Để đặt tốc độ mạng khi khởi động trình mô phỏng, hãy dùng tuỳ chọn trình mô phỏng -netspeed với một giá trị speed được hỗ trợ như trong danh sách Định dạng tốc độ mạng trước đó. Dưới đây là một số ví dụ:

emulator -netspeed gsm @Pixel_API_26
emulator -netspeed 14.4,80 @Pixel_API_26

Để thay đổi tốc độ mạng trong khi trình mô phỏng đang chạy, hãy kết nối với bảng điều khiển và dùng lệnh network speed với giá trị speed được hỗ trợ trong danh sách Định dạng tốc độ mạng trước đó.

network speed 14.4 80
network capture {start|stop} file Gửi các gói cho tệp. Danh sách sau đây mô tả các thông số và giá trị thông số:
  • start file: Bắt đầu gửi các gói cho tệp đã chỉ định.
  • stop file: Ngừng gửi các gói cho tệp đã chỉ định.
Mô phỏng điện thoại Thông tin mô tả
Trình mô phỏng Android bao gồm các modem GSM và CDMA riêng được mô phỏng, cho phép bạn mô phỏng các chức năng điện thoại trong trình mô phỏng. Ví dụ: Với GSM, bạn có thể mô phỏng cuộc gọi điện thoại đến, cũng như thiết lập và ngắt kết nối dữ liệu. Với CDMA, bạn cung cấp nguồn đăng ký và danh sách chuyển vùng ưu tiên. Hệ thống Android xử lý các cuộc gọi được mô phỏng giống hệt như các cuộc gọi thực tế. Trình mô phỏng không hỗ trợ âm thanh cuộc gọi.
gsm {call|accept|cancel|busy} phonenumber Các thông số gsm như sau:
  • call: Mô phỏng cuộc gọi điện thoại đến từ phonenumber.
  • accept: Chấp nhận cuộc gọi đến từ phonenumber và thay đổi trạng thái cuộc gọi thành active. Bạn chỉ có thể thay đổi trạng thái cuộc gọi thành active khi cuộc gọi đang ở trạng thái waiting hoặc held.
  • cancel: Chấm dứt cuộc gọi từ hoặc cuộc gọi đến phonenumber.
  • busy: Chấm dứt cuộc gọi đến phonenumber và thay đổi trạng thái cuộc gọi thành busy. Bạn chỉ có thể thay đổi trạng thái cuộc gọi thành busy khi cuộc gọi đang ở trạng thái waiting.
gsm {data|voice} state Lệnh data state thay đổi trạng thái kết nối dữ liệu GPRS, còn lệnh data voice state thay đổi trạng thái kết nối giọng nói GPRS như sau:
  • unregistered: Không có mạng.
  • home: Đang dùng mạng cục bộ, không chuyển vùng.
  • roaming: Đang dùng mạng chuyển vùng.
  • searching: Đang tìm kiếm mạng.
  • denied: Chỉ cuộc gọi khẩn cấp.
  • off: Tương tự như unregistered.
  • on: Tương tự như home.
gsm hold Thay đổi trạng thái cuộc gọi thành hold. Bạn chỉ có thể thay đổi trạng thái cuộc gọi thành hold khi cuộc gọi đang ở trạng thái active hoặc waiting.
gsm list Liệt kê mọi cuộc gọi đến và đi cùng với trạng thái của chúng.
gsm status Báo cáo trạng thái dữ liệu/giọng nói GSM hiện tại. Giá trị là những giá trị được mô tả cho lệnh voicedata.
gsm signal {rssi|ber} Thay đổi cường độ tín hiệu đã báo cáo (rssi) và tỷ lệ lỗi bit (ber) trong 15 giây cập nhật tiếp theo. Danh sách sau đây mô tả các thông số và giá trị của các thông số đó:
  • Phạm vi rssi là từ 0 đến 31 và là 99 nếu không xác định.
  • Phạm vi ber là từ 0 đến 7 và là 99 nếu không xác định.
gsm signal-profile num Đặt cấu hình cường độ tín hiệu. num là một số trong khoảng từ 0 đến 4.
cdma ssource source Đặt nguồn đăng ký CDMA hiện tại, trong đó source là danh sách cho phép dựa trên mạng chứa những người đăng ký của nhà mạng CDMA và giá trị của họ, như sau:
  • nv: Đọc thông tin đăng ký từ RAM bất biến.
  • ruim: Đọc thông tin đăng ký từ Mô-đun nhận dạng người dùng có thể tháo rời (RUIM).
cdma prl_version version Huỷ phiên bản danh sách chuyển vùng ưu tiên (PRL) hiện tại. Số phiên bản dành cho cơ sở dữ liệu PRL chứa thông tin dùng trong quy trình lựa chọn và thu nạp hệ thống.
Quản lý các cảm biến trên trình mô phỏng Thông tin mô tả
Những lệnh này liên quan đến loại cảm biến có sẵn trong AVD. Bên cạnh việc sử dụng lệnh sensor, bạn có thể xem và điều chỉnh các chế độ cài đặt của trình mô phỏng ở màn hình Virtual sensors (Cảm biến ảo) trong các thẻ Accelerometer (Gia tốc kế) và Additional sensors (Cảm biến bổ sung).
sensor status Liệt kê tất cả các cảm biến và trạng thái của chúng. Sau đây là kết quả đầu ra mẫu cho lệnh sensor status:
sensor get sensor-name Xem chế độ cài đặt cho sensor-name. Ví dụ sau đây sẽ lấy giá trị cho cảm biến gia tốc:
sensor get acceleration
acceleration = 2.23517e-07:9.77631:0.812348

Các giá trị acceleration được phân tách bằng dấu hai chấm (:) là các toạ độ x, y và z cho các cảm biến ảo.

sensor set sensor-name value-x:value-y:value-z Đặt giá trị cho sensor-name. Ví dụ sau đây đặt cảm biến gia tốc cho các giá trị x, y và z được phân tách bằng dấu hai chấm.
sensor set acceleration 2.23517e-07:9.77631:0.812348
Mô phỏng tin nhắn SMS Thông tin mô tả
sms send sender-phone-number textmessage Tạo một tin nhắn SMS đến được mô phỏng. Danh sách sau đây mô tả các thông số và giá trị của các thông số đó:
  • sender-phone-number: Chứa một chuỗi số tuỳ ý.
  • textmessage: Tin nhắn SMS.

Ví dụ sau đây gửi tin nhắn "hi there" (chào bạn) đến số điện thoại 4085555555:

sms send 4085555555 hi there

Bảng điều khiển sẽ chuyển tiếp tin nhắn SMS đến khung Android. Từ đây, khung Android sẽ chuyển tin nhắn đó đến một ứng dụng trên trình mô phỏng có thể xử lý tin nhắn SMS, chẳng hạn như ứng dụng Tin nhắn. Nếu bạn chuyển 10 số, ứng dụng sẽ định dạng đó là số điện thoại. Các chuỗi số dài hơn hoặc ngắn hơn sẽ hiển thị cách bạn gửi các chuỗi này.

Mô phỏng vân tay Thông tin mô tả
finger touch fingerprint-id Mô phỏng một ngón tay đang chạm vào cảm biến.
finger remove Mô phỏng thao tác nhấc ngón tay.

Để biết hướng dẫn về cách sử dụng các lệnh này, hãy xem phần sau đây về mô phỏng và xác thực vân tay.

Mô phỏng và xác thực vân tay

Hình 1. Màn hình xác thực vân tay.

Sử dụng lệnh finger để mô phỏng và xác thực vân tay cho ứng dụng của bạn. Bạn cần có Bộ công cụ SDK 24.3 trở lên và Android 6.0 (API cấp 23) trở lên.

Để mô phỏng và xác thực vân tay, hãy làm theo các bước sau:

  1. Nếu bạn chưa có mã nhận dạng vân tay, hãy đăng ký vân tay mới trong trình mô phỏng bằng cách chọn Settings > Security > Fingerprint (Cài đặt > Bảo mật > Vân tay) và làm theo hướng dẫn đăng ký.
  2. Thiết lập sao cho ứng dụng của bạn chấp nhận xác thực vân tay. Sau khi bạn thiết lập như vậy, thiết bị của bạn sẽ hiển thị màn hình xác thực vân tay.
  3. Trong khi ứng dụng hiển thị màn hình xác thực vân tay, hãy chuyển đến bảng điều khiển rồi nhập lệnh finger touch và mã nhận dạng vân tay bạn đã tạo. Lệnh này sẽ mô phỏng thao tác nhấn ngón tay.
  4. Sau đó, nhập lệnh finger remove để mô phỏng thao tác nhấc ngón tay ra.

    Ứng dụng của bạn phải phản hồi như thể người dùng đã chạm rồi nhấc ngón tay ra khỏi cảm biến vân tay.