问题的主要原因是Android系统无法从不同的应用程序中获取到足够的事件数据。因此,需要在代码中采用一种特殊的实现方式。例如,在两个应用程序中使用以下代码解决跨越不同应用程序的多点触摸问题:
在应用程序1中:
@Override public boolean onTouchEvent(MotionEvent event) { int action = event.getActionMasked(); switch (action) { case MotionEvent.ACTION_DOWN: case MotionEvent.ACTION_POINTER_DOWN: case MotionEvent.ACTION_MOVE: case MotionEvent.ACTION_POINTER_UP: case MotionEvent.ACTION_UP: Application2.getInstance().forwardTouchEvent(event); break; } return super.onTouchEvent(event); }
在应用程序2中:
public void forwardTouchEvent(MotionEvent event) { int action = event.getActionMasked(); switch (action) { case MotionEvent.ACTION_DOWN: case MotionEvent.ACTION_POINTER_DOWN: case MotionEvent.ACTION_MOVE: case MotionEvent.ACTION_POINTER_UP: case MotionEvent.ACTION_UP: // do something with the event data break; } }
这个解决方法使用Application2中的forwardTouchEvent()方法来接收从另一个应用程序传递过来的触摸事件。这个方法将触摸事件的信息传递给应用程序2中的onTouchEvent()方法,以便应用程序2能够正确地处理该事件。