2012-09-05 35 views
12

Tôi đang cố gắng tìm ra định dạng đầu ra là từ lệnh getevent trong trình bao adb.Có ai biết đầu ra từ getevent có nghĩa là gì không?

Ví dụ, đầu ra trông như thế này:

adb shell getevent -t | grep event1

Lá cờ -t cung cấp một timestap và grep là để lọc các thông điệp để chỉ sự kiện màn hình cảm ứng của.

22779-197145:/dev/input/EVENT1: 0003 003a 00400001

22779-197999:/dev/input/EVENT1: 0003 0039 82c30a97

22779-218477:/dev/input/EVENT1: 0003 003a 00390001

22779-219301:/dev/input/EVENT1: 0003 0039 82c30aa4

22779-230623:/dev/input/EVENT1: 0003 003a 002f0001

012.351.

22.779-231.416:/dev/input/EVENT1: 0003 0039 82c10aae

22779-242769:/dev/input/EVENT1: 0003 003a 00190001

22779-243623:/dev/input/EVENT1: 0003 0039 82c60ac1

22779-253328:/dev/input/EVENT1: 0003 003a 00000002

22.779-254.213:/dev/input/EVENT1: 0003 0039 82da0ae4

22779-415590:/dev/input/event1: 0003 003a 00000000

22.779-416.444:/dev/input/EVENT1: 0003 0039 800b1549

Vấn đề là tôi không có ý tưởng làm thế nào để xử lý thông tin này. Trong khi giây cuối cùng trường thay đổi giữa hai mã (được đề xuất tương ứng với giá trị X và Y), trường cuối cùng có vẻ chứa số lớn hoặc rất nhỏ.

Ngoài ra, dấu thời gian cũng là ngoại lệ đối với tôi. Tôi tự hỏi nếu phần sau dấu gạch ngang là nano giây?

Có ai biết nơi tôi có thể tìm hiểu về định dạng của những thứ này không?

+2

Không có nhiều thông tin về GetEvent đáng buồn ... Bạn đã đọc http://source.android.com/tech/input/getevent.html chưa? – shkschneider

+0

Vâng tôi đã làm, cảm ơn. Tôi đã phải thay đổi mã nguồn của Android để có được thông tin tôi cần theo một định dạng mà tôi đã hiểu. – pypmannetjies

Trả lời

11

/dev/input/eventX được sử dụng bởi evdev hệ thống con hạt nhân Linux là sự kiện xử lý sự kiện đầu vào chung chung và chuyển nó theo thời gian cho các ứng dụng. Bạn có thể thử này để có được đầu ra có thể đọc được con người hơn về những gì đang xảy ra trên Android với getevent công cụ, như thế này:

$ adb shell getevent -lp /dev/input/event1 

Để có được lựa chọn tất cả getevent 's, làm:

$ adb shell getevent --help 

Bạn có thể đọc thêm về công cụ geteventhere và khoảng evdevon Wiki.

Theo nguồn hạt nhân, evdev sử dụng định dạng thời gian phân giải nano giây (ktime) và các nguồn nằm trong số linux/next/include/linux/ktime.h hoặc here, nếu bạn muốn xem trực tuyến.

+0

cảm ơn tôi sẽ có một cái nhìn – pypmannetjies

+3

[nguồn getevent] (http://code.metager.de/source/xref/android/4.0.4/system/core/toolbox/getevent.c#645) có thể hữu ích quá. –

+0

[Liên kết của bạn] (https://source.android.com/tech/input/getevent) dường như đã chết. Có tài liệu mới ở đâu không? –

0

Nó không giống như chạm màn hình cảm ứng đã được thực hiện trong đoạn mã của bạn hoặc có thể x và y không được ghi lại.

Thông thường, X tọa độ cho màn hình cảm ứng đang được 0003 0035Y là dưới 0003 0036 khi 0003 0039 thường là dành cho các ngón tay xuống (với trường cuối cùng nhìn giống như 00000000) và cho ngón tay lên (với trường cuối cùng cũng tìm hơn như ffffffff).

Không chính xác chắc chắn những gì 0003 003a là nhưng có vẻ ít quan trọng và nó chắc chắn không phải là X hoặc Y hệ thập lục phân.

Ngoài ra, dấu thời gian được tính bằng giây. Phần trước dấu gạch ngang trong dấu thời gian biểu thị Unix Epox vào ngày 1 tháng 1 năm 1970 tại UTC và dấu thời gian sau dấu gạch ngang sẽ trở thành ngày dựa trên giây kể từ thời gian và ngày kể trên.

Hy vọng bổ sung thêm sự rõ ràng hơn.

Các vấn đề liên quan