2010-09-21 33 views
5

Tôi muốn viết một ứng dụng Android sẽ là một dịch vụ nền mà sẽ lắng nghe cho một cử chỉ cụ thể hoặc bấm phím trong và sau đó kích hoạt một hành động. Thậm chí có thể làm điều đó với dịch vụ không? Nếu có ai đó có thể hướng dẫn tôi đúng hướng. Tôi có tìm kiếm cao và thấp có thể dường như tìm thấy một câu trả lời.android đọc người dùng nhập vào một dịch vụ

+0

Nói chung bạn không nên có thể nắm bắt những cử chỉ hoặc ép chính từ một dịch vụ. Hãy xem thanh Tìm kiếm bằng cử chỉ của Google. Họ sử dụng một báo chí dài trên nút tìm kiếm để mở ra một hoạt động mà sau đó nắm bắt được cử chỉ. Nhưng tôi không biết ý định hoặc tín hiệu họ sử dụng để nhận được thông báo về báo chí tìm kiếm dài. – Janusz

Trả lời

0

Làm điều này (ngoại trừ trên đầu ứng dụng hợp tác bằng cách gửi cho bạn đầu vào của họ) sẽ là một lỗ hổng bảo mật lớn thuộc loại kiến ​​trúc android được thiết kế để cấm. Để làm điều đó, bạn sẽ cần phải sửa đổi nền tảng và có xem được thực hiện bởi một cái gì đó đang chạy với quyền truy cập vào các liên lạc nguyên và nút đầu vào, có thể là một phần của trình điều khiển cho điều đó.

Nói cách khác, bạn có thể gặp khó khăn khi thực hiện nó trên điện thoại gốc của bạn hoặc trên thiết bị bạn sản xuất, nhưng nó không thể sử dụng được cho hầu hết mọi người.

1

không khó để đọc nơi chúng chạm vào, nhưng các điểm chạm theo cách này chỉ cung cấp vị trí chứ không phải thời gian, không phải về thăng trầm.

trong dịch vụ của bạn

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    if (layout != null) { 
     ((WindowManager) getSystemService(WINDOW_SERVICE)).removeView(layout); 
     layout = null; 
    } 
} 
@Override 
public void onCreate() { 
    super.onCreate(); 
    layout = new RelativeLayout(this); 
    WindowManager.LayoutParams params = new WindowManager.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, 
         WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, 
       PixelFormat.TRANSLUCENT); 
    params.setTitle("test"); 
    WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE); 
    wm.addView(layout, params); 
} 

và xử lý liên lạc của bạn, nó sẽ phải như

public boolean gestureHandler(MotionEvent event, boolean eat) { 
     if(event.getAction() == MotionEvent.ACTION_OUTSIDE) 
+0

Trình quản lý cửa sổ sẽ không cho phép bạn thêm chế độ xem từ một dịch vụ ... Mã này làm tăng ngoại lệ. – FoamyGuy

+1

bản cập nhật có thể đã bị hỏng. –

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