Android Delphi JNI事件处理程序

Android Delphi JNI事件处理程序,android,delphi,java-native-interface,firemonkey,Android,Delphi,Java Native Interface,Firemonkey,我有一个Android SDK,它定义了一个用于接收事件的抽象接口和一个传递给事件的类: package com.imagpay; 公共类SwipeEvent { 公共静态int TYPE_DISCONNECTED=1; 公共静态int TYPE_CONNECTED=2; 公共静态int TYPE_start=3; 公共静态int TYPE_STOPPED=4; 公共静态int TYPE_READDATA=5; 公共静态int TYPE_PARSEDATA=6; 公共静态int类型_IC_INS

我有一个Android SDK,它定义了一个用于接收事件的抽象接口和一个传递给事件的类:

package com.imagpay;
公共类SwipeEvent
{
公共静态int TYPE_DISCONNECTED=1;
公共静态int TYPE_CONNECTED=2;
公共静态int TYPE_start=3;
公共静态int TYPE_STOPPED=4;
公共静态int TYPE_READDATA=5;
公共静态int TYPE_PARSEDATA=6;
公共静态int类型_IC_INSERTED=7;
公共静态int TYPE_IC_REMOVED=8;
私人INTA;
私有字符串b;
私有对象c;
公共SwipeEvent(对象paramObject、int paramInt、String paramString)
{
this.c=参数对象;
this.a=参数;
this.b=paramString;
}
公共对象getSource()
{
把这个还给我;
}
公共int getType()
{
归还这个;
}
公共字符串getValue()
{
把这个还给我;
}
}

package com.imagpay;
公共抽象接口SwipeListener
{
已断开连接的公共摘要无效(SwipeEvent参数SwipeEvent);
未连接的公共摘要无效(SwipeEvent参数SwipeEvent);
开始时公共摘要无效(SwipeEvent参数SwipeEvent);
公共摘要无效(SwipeEvent参数SwipeEvent);
公共摘要void onReadData(SwipeEvent参数SwipeEvent);
公共抽象void onParseData(SwipeEvent参数SwipeEvent);
检测到公共摘要无效(SwipeEvent参数SwipeEvent);
}
我使用Java2Pas将它们转换为Delphi:

unit com.imagpay.SwipeEvent;
接口
使用
AndroidAPI.JNIBridge,
Androidapi.JNI.JavaTypes;
类型
{类转发声明}
JSwipeEvent=接口;{com/imagpay/SwipeEvent}
JSwipeEventClass=接口(JObjectClass)
[{6C6C07D9-F191-47A5-AFF0-E0EEE9CD8903}]
{属性方法}
函数_GetTYPE_CONNECTED:Integer;
程序_SetTYPE_CONNECTED(值:整数);
函数_GetTYPE_DISCONNECTED:Integer;
程序_SetTYPE_已断开连接(值:整数);
函数_GetTYPE_IC_INSERTED:Integer;
程序_SetTYPE_IC_插入(值:整数);
函数\u GetTYPE\u IC\u已删除:整数;
程序_SetTYPE_IC_已删除(值:整数);
函数GetTYPE_PARSEDATA:Integer;
过程_SetTYPE_PARSEDATA(值:整数);
函数_GetTYPE_READDATA:Integer;
过程_SetTYPE_READDATA(值:整数);
函数_GetTYPE_已启动:整数;
程序_SetTYPE_已启动(值:整数);
函数_GetTYPE_STOPPED:Integer;
过程_SetTYPE_已停止(值:整数);
{Methods}
函数init(Param0:JObject;Param1:Integer;Param2:JString):JSwipeEvent;cdecl;
{Properties}
属性类型\连接:整数读取\获取类型\连接写入\设置类型\连接;
属性类型\断开连接:整数读取\获取类型\断开连接写入\设置类型\断开连接;
属性类型_IC_INSERTED:Integer read_GetTYPE_IC_INSERTED write_SetTYPE_IC_INSERTED;
属性类型\u IC\u移除:整数读取\u GetTYPE\u IC\u移除写入\u SetTYPE\u IC\u移除;
属性类型_PARSEDATA:Integer read_GetTYPE_PARSEDATA write_SetTYPE_PARSEDATA;
属性类型\读取数据:整数读取\获取类型\读取数据写入\设置类型\读取数据;
属性类型\u已启动:整数读取\u GetTYPE\u已启动写入\u SetTYPE\u已启动;
属性类型\u已停止:整数读取\u GetTYPE\u已停止写入\u SetTYPE\u已停止;
结束;
[JavaSignature('com/imagpay/SwipeEvent')]
JSwipeEvent=接口(JObject)
[{BD54986A-FE87-416E-9ED2-468DBE5B2827}]
{Methods}
函数getSource:JObject;cdecl;
函数getType:Integer;cdecl;
函数getValue:JString;cdecl;
结束;
TJSwipeEvent=class(TJavaGenericImport)
结束;
实施
常数
类型_=1;
类型_连接=2;
类型_=3;
类型_=4;
类型_READDATA=5;
类型_PARSEDATA=6;
插入的类型=7;
移除的类型=8;
结束。

unit com.imagpay.SwipeListener;
接口
使用
AndroidAPI.JNIBridge,
Androidapi.JNI.JavaTypes,
com.imagpay.SwipeEvent;
类型
{类转发声明}
JSwipeListener=接口;{com/imagpay/SwipeListener}
JSwipeListenerClass=接口(IJavaClass)
[{E528660F-D406-406F-8655-FFB76A64B3EA}]
结束;
[JavaSignature('com/imagpay/SwipeListener')]
JSwipeListener=接口(IJavaInstance)
[{51112FBC-8B83-46DC-9C9E-F97837120D06}]
{Methods}
连接的过程(参数0:JSwipeEvent);cdecl;
过程onDisconnected(参数0:JSwipeEvent);cdecl;
检测到程序错误(Param0:JSwipeEvent);cdecl;
过程onParseData(Param0:JSwipeEvent);cdecl;
过程onReadData(Param0:JSwipeEvent);cdecl;
启动过程(参数0:JSwipeEvent);cdecl;
程序停止(参数0:JSwipeEvent);cdecl;
结束;
TJSwipeListener=class(TJavaGenericImport)
结束;
实施
结束。

如何在Delphi代码中使用这些事件?这些事件用于与SDK的连接,对于获取数据至关重要。

您导入了侦听器接口,但实际向侦听器触发事件的其他SDK类的代码在哪里?在Delphi端,您将派生一个实现侦听器接口的类,但随后您需要将该类的实例传递给SDK端的某个对象,而这个问题中缺少了某个对象?您显示的代码中没有
addSwipeListener()
。请在Embarcadero论坛上查看,因为此处没有空间在此处编写代码。您导入了侦听器接口,但实际向侦听器触发事件的其他SDK类的代码在哪里?在Delphi端,您将派生一个实现侦听器接口的类,但随后您需要将该类的实例传递给SDK端的某个对象,而这个问题中缺少了某个对象