リフレクションライブラリを使用してMotionEvent.obtainメソッドを呼び出そうとしています。しかし、これまでのところ、私はあまり成功していません。私が試したすべての結果は同じエラーになります...ボタンからの私のコード-クリック:
Dim upTime As Long
Dim ev As Object
Dim args(12) As Object
Dim types(12) As String
upTime = Obj1.RunStaticMethod("android.os.SystemClock", "uptimeMillis", Null, Null)
'public static MotionEvent obtain (Long downTime, Long eventTime, Int action, Float x, Float y, Float pressure, Float size, Int metaState, Float xPrecision, Float yPrecision, Int deviceId, Int edgeFlags)
'Since: API Level 1
'Create a new MotionEvent, filling in all of the basic values that define the motion.
'Parameters:
'downTime The time (in ms) when the user originally pressed down To start a stream of position events. This must be obtained from uptimeMillis().
args(0) = upTime
types(0) = "java.lang.long"
'eventTime The the time (in ms) when this specific event was generated. This must be obtained from uptimeMillis().
args(1) = upTime
types(1) = "java.lang.long"
'action The kind of action being performed, such As ACTION_DOWN.
args(2) = "1" 'MotionEvent.ACTION_UP
types(2) = "java.lang.int"
'x The X coordinate of this event.
args(3) = "50.0"
types(3) = "java.lang.float"
'y The Y coordinate of this event.
args(4) = "20.0"
types(4) = "java.lang.float"
'pressure The current pressure of this event. The pressure generally ranges from 0 (no pressure at all) To 1 (normal pressure), however values higher than 1 may be generated depending on the calibration of the input device.
args(5) = "1.0"
types(5) = "java.lang.float"
'size A scaled value of the approximate size of the area being pressed when touched with the finger. The actual value in pixels corresponding To the finger touch Is normalized with a device specific range of values AND scaled To a value between 0 AND 1.
args(6) = "1.0"
types(6) = "java.lang.float"
'metaState The state of any meta / modifier keys that were in effect when the event was generated.
args(7) = "0"
types(7) = "java.lang.int"
'xPrecision The precision of the X coordinate being reported.
args(8) = "1.0"
types(8) = "java.lang.float"
'yPrecision The precision of the Y coordinate being reported.
args(9) = "1.0"
types(9) = "java.lang.float"
'deviceId The id For the device that this event came from. An id of zero indicates that the event didn't come from a physical device; other numbers are arbitrary and you shouldn't depend on the values.
args(10) = "0"
types(10) = "java.lang.int"
'edgeFlags A bitfield indicating which edges, If any, were touched by this MotionEvent.
args(11) = "0"
types(11) = "java.lang.int"
'call methode
***ev = Obj2.RunStaticMethod("android.view.MotionEvent", "obtain", args, types)***
ここでエラーが発生します(java.lang.IllegalArgumentException:引数タイプの不一致):
10-09 09:02:26.951: ERROR/B4A(296): ev = Obj2.RunStaticMethod("android.view.MotionEvent", "obtain", args, types)
10-09 09:02:26.961:ERROR / B4A(296):java.lang.IllegalArgumentException:引数タイプの不一致10-00909:02:26.961:ERROR / B4A(296):java.lang.reflect.Methodで。 invokeNative(ネイティブメソッド)10-09 09:02:26.961:ERROR / B4A(296):at java.lang.reflect.Method.invoke(Method.java:521)10-09 09:02:26.961:ERROR / B4A (296):どこでもsoftware.b4a.agraham.reflection.Reflection.RunStaticMethod(Reflection.java:860)10-09 09:02:26.961:ERROR / B4A(296):どこでもsoftware.b4a.agraham.reflectiondemo.main。 _button2_click(main.java:564)10-09 09:02:26.961:ERROR / B4A(296):at java.lang.reflect.Method.invokeNative(Native Method)10-09 09:02:26.961:ERROR / B4A (296):at java.lang.reflect.Method.invoke(Method.java:521)10-09 09:02:26.961:ERROR / B4A(296):atwheresoftware.b4a.BA.raiseEvent2(BA.java: 105)10-09 09:02:26.961:ERROR / B4A(296):どこでもsoftware.b4a.BA.raiseEvent2(BA.java:93)10-09 09:02:26.961:ERROR / B4A(296):どこでもsoftware.b4a.BA.raiseEvent(BA.java:89)10-0909 :02:26.961:ERROR / B4A(296):atwheresoftware.b4a.objects.ViewWrapper $ 1.onClick(ViewWrapper.java:49)10-09 09:02:26.961:ERROR / B4A(296):at android.view .View.performClick(View.java:2408)10-09 09:02:26.961:ERROR / B4A(296):at android.view.View $ PerformClick.run(View.java:8816)10-09 09:02 :26.961:ERROR / B4A(296):android.os.Handler.handleCallback(Handler.java:587)10-09 09:02:26.961:ERROR / B4A(296):android.os.Handler.dispatchMessage( Handler.java:92)10-09 09:02:26.961:ERROR / B4A(296):android.os.Looper.loop(Looper.java:123)10-09 09:02:26.961:ERROR / B4A( 296):android.app.ActivityThread.main(ActivityThread.java:4627)10-09 09:02:26.961:ERROR / B4A(296):at java.lang.reflect.Method.invokeNative(Native Method)10-09 09:02:26.961:ERROR / B4A(296):at java.lang.reflect.Method.invoke(Method.java:521)10-09 09:02:26.961:ERROR / B4A(296):com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868)10-09 09:02:26.961:ERROR / B4A(296): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)10-09 09:02:26.961:ERROR / B4A(296):at dalvik.system.NativeStart.main(Native Method)10-09 09:02:26.961:ERROR / B4A(296):java.lang.IllegalArgumentException:引数タイプの不一致ERROR / B4A(296):com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)10-09 09:02:26.961:ERROR / B4A(296):dalvik.system.NativeStart.main (ネイティブメソッド)10-09 09:02:26.961:ERROR / B4A(296):java.lang.IllegalArgumentException:引数タイプの不一致ERROR / B4A(296):com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)10-09 09:02:26.961:ERROR / B4A(296):dalvik.system.NativeStart.main (ネイティブメソッド)10-09 09:02:26.961:ERROR / B4A(296):java.lang.IllegalArgumentException:引数タイプの不一致
Dim args1(1) As Object
Dim types1(1) As String
args1(0) = ev
types1(0) = "android.view.MotionEvent"
Obj2.Target = Activity
Obj2.RunStaticMethod("android.view.View","dispatchTouchEvent",args1,types1)
どんな助けでも素晴らしいでしょう...ありがとう、リチャード。