Android 如何使服务侦听onTouchEvent
我正在尝试使用以下代码从服务收听触控事件Android 如何使服务侦听onTouchEvent,android,android-service,android-view,Android,Android Service,Android View,我正在尝试使用以下代码从服务收听触控事件 public void onCreate() { super.onCreate(); // Toast.makeText(getBaseContext(),"onCreate", Toast.LENGTH_LONG).show(); mView = new HUDView(this); WindowManager.LayoutParams params = new WindowManage
public void onCreate() {
super.onCreate();
// Toast.makeText(getBaseContext(),"onCreate", Toast.LENGTH_LONG).show();
mView = new HUDView(this);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.RIGHT | Gravity.TOP;
params.setTitle("Load Average");
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
wm.addView(mView, params);
}
这段代码在Android 2.3版上运行良好,但在4.0版和4.1版中没有调用onTouchEvent。有什么问题吗 我正在尝试聆听来自服务的点击,服务与活动相连。该活动照常使用,但服务部门会不断记录水龙头。当使用TYPE_SYSTEM_OVERLAY时,它在Android2.3上工作得非常好,但在4.1上不会调用onTouchEvent。当使用类型_SYSTEM _alertontouchEvent时,会调用该触控事件,但该触控事件不会传递给该活动,并且会变得无响应。请尝试以下操作:
findViewById(R.id.someView).setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent ev) {
final int action = ev.getAction();
final float x = ev.getX();
final float y = ev.getY();
Points p = new Points();
p.setPoints(x,y);
list.add(p);
return true;
}
});
服务不应处理UITry,这可能需要1pxX1px窗口覆盖。我试过了,但没用。它必须与Oncreate()中的LayoutParams有关。
findViewById(R.id.someView).setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent ev) {
final int action = ev.getAction();
final float x = ev.getX();
final float y = ev.getY();
Points p = new Points();
p.setPoints(x,y);
list.add(p);
return true;
}
});