2015-02-15 16 views
5

Tôi đang viết AccessibilityService và tôi muốn tạo lớp phủ chế độ xem trên các chế độ xem từ hoạt động hiện tại mà dịch vụ trợ năng có thể truy xuất. Tôi không có vấn đề gì để truy xuất tất cả các đối tượng AccessibilityNodeInfo từ hoạt động hiện tại, nhưng tôi không biết cách lấy các chế độ xem từ các đối tượng này để tạo lớp phủ. Rất tiếc, chỉ có một vài ví dụ về dịch vụ trợ năng. Có thể một số bạn đã có kinh nghiệm với chủ đề này. Tôi hy vọng bạn có thể giúp tôi! Cảm ơn!Nhận chế độ xem của AccessibilityNodeInfo để tạo lớp phủ

EDIT: Một bài báo cho thấy lớp phủ trên xem nội dung của một hoạt động có thể xảy ra:

Lớp phủ màn hình có khả năng thực hiện các nhiệm vụ nhờ sự Android Khả năng tiếp cận khung [10]. Sử dụng API năng tiếp cận, nó có thể truy cập và kiểm tra việc bố trí giao diện của các ứng dụng trên màn hình, mà không cần sửa đổi hoặc thiết bị đo đạc của mã ứng dụng "*

Link:. http://www.onarlioglu.com/publications/fc2015babelcrypt.pdf

trang 6 và 8. Cảm ơn!

+1

Truy lục các giới hạn trên màn hình từ 'AccessibilityNodeInfo'. Chuyển đổi thành tọa độ có liên quan đến giới hạn trên màn hình của lớp phủ của bạn. Vẽ lên lớp phủ của bạn. – alanv

Trả lời

3

Bạn không thể nhận được View các đối tượng từ các ứng dụng khác, như View đối tượng đang ở trong một quá trình riêng biệt từ bạn.

+0

Cảm ơn bạn đã trả lời nhanh! Nhưng họ làm cách nào để tạo lớp phủ chế độ xem trên các đối tượng chế độ xem? Tôi biết rằng điều này là có thể, bởi vì tôi đọc một bài báo về nó. GUI của hoạt động đã được duyệt qua Dịch vụ trợ năng và sau đó xem lớp phủ đã được tạo. – zuuurek

+0

@zuuurek: "Nhưng họ làm cách nào để tạo lớp phủ chế độ xem trên các đối tượng chế độ xem?" - Tôi không biết ý bạn là gì. "Tôi biết rằng điều này là có thể, bởi vì tôi đọc một bài báo về nó" - bạn có một liên kết? – CommonsWare

+0

Xem chỉnh sửa của tôi. Cảm ơn! – zuuurek

0

Vẽ các lớp phủ trên cửa sổ bằng các dịch vụ trợ năng dễ dàng. Tôi biết đây là một câu hỏi cũ, nhưng tôi nghĩ tôi vẫn còn thêm câu trả lời.

RelativeLayout relativeLayout = new RelativeLayout(getContext()); 

WindowManager.LayoutParams topButtonParams = new WindowManager.LayoutParams(
    width, //The width of the screen 
    height, //The height of the screen 
    WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, 
    WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, 
    PixelFormat.TRANSLUCENT); 

//Just trust me, this alpha thing is important. I know it's weird on a "translucent" view. 
topButtonParams.alpha = 100; 

relativeLayout.setLayoutParams(topButtonParams); 

mWindowManager.addView(relativeLayout, topButtonParams); 

Ngoài ra, bạn cần sự cho phép này trong manifest

bạn
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> 

Một khi bạn có một lớp phủ bố trí tương đối vô hình trên đầu trang của toàn bộ màn hình, thêm quan điểm cho nó rất dễ dàng!

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