我想自动化触摸事件,例如 ontouch 和双击。
long downTime = SystemClock.uptimeMillis();
long eventTime = SystemClock.uptimeMillis() + 100;
this.getWindow().getDecorView().dispatchTouchEvent(getMotionEvent(downTime, eventTime, MotionEvent.ACTION_DOWN));
.
public static MotionEvent getMotionEvent(long downTime,long eventTime,int eventType){
float x = 0.0f;
float y = 0.0f;
// List of meta states found here: developer.android.com/reference/android/view/KeyEvent.html#getMetaState()
int metaState = 0;
MotionEvent motionEvent = MotionEvent.obtain(
downTime,
eventTime,
eventType,
x,
y,
metaState
);
return motionEvent;
}
. 它工作正常,当我在后台服务中调用它时 这是我得到的
{ action=ACTION_DOWN, id[0]=0, x[0]=0.0, y[0]=0.0, toolType[0]=TOOL_TYPE_UNKNOWN, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=4827157, downTime=4827057, deviceId=0, source=0x0 }
工具类型是 TOOL_TYPE_UNKNOWN 。我想将它设置为 TOOL_TYPE_FINGER 。 我已经遍历了 widgetevent.java 文件,我找到了 getToolType 方法,但是有
没有 setToolType 方法。 我的问题是是否可以设置工具类型,如果可以的话如何设置?
删除 - 不需要的代码格式化程序
最佳答案
我自己找到了答案。 没有直接的方法来更新或更改工具类型。但是我们可以使用其中一种获取方法来获取具有所需工具类型的运动事件对象。
public static MotionEvent obtain (long downTime, long eventTime, int action, int pointerCount, PointerProperties[] pointerProperties, PointerCoords[] pointerCoords, int metaState, int buttonState, float xPrecision, float yPrecision, int deviceId, int edgeFlags, int source, int flags)
我们可以利用指针属性来改变运动事件对象的属性。 ref.
关于android - 在 motionevent 中找不到 settooltype 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35473750/