Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Delphi中使用第三方Android API_Java_Android_Delphi - Fatal编程技术网

Java 在Delphi中使用第三方Android API

Java 在Delphi中使用第三方Android API,java,android,delphi,Java,Android,Delphi,我正在尝试使用德尔福西雅图的霍尼韦尔SDK来控制Android设备上的扫描仪 霍尼韦尔为我提供了一个名为DataCollection.jar的SDK jar。我使用Java2OP实用程序来创建我的JNI桥,但是我遇到了问题。老实说,我是这方面的新手,不知道去哪里看,也不知道如何实现这一点。我也搜索过类似的例子 我知道我必须创建TJAidmanager类型的对象才能访问条形码阅读器功能,它的定义如下: JAidcManagerClass = interface(JObjectClass) ['{E

我正在尝试使用德尔福西雅图的霍尼韦尔SDK来控制Android设备上的扫描仪

霍尼韦尔为我提供了一个名为DataCollection.jar的SDK jar。我使用Java2OP实用程序来创建我的JNI桥,但是我遇到了问题。老实说,我是这方面的新手,不知道去哪里看,也不知道如何实现这一点。我也搜索过类似的例子

我知道我必须创建TJAidmanager类型的对象才能访问条形码阅读器功能,它的定义如下:

JAidcManagerClass = interface(JObjectClass)
['{EE70EF80-4CA8-4FE0-B912-6453CA0336CD}']
{class} function _GetBARCODE_DEVICE_CONNECTED: Integer; cdecl;
{class} function _GetBARCODE_DEVICE_DISCONNECTED: Integer; cdecl;
{class} procedure addBarcodeDeviceListener(P1:      JAidcManager_BarcodeDeviceListener); cdecl;
{class} procedure close; cdecl;
{class} procedure create(P1: JContext; P2: JAidcManager_CreatedCallback);    cdecl;
{class} function createBarcodeReader: JBarcodeReader; cdecl; overload;
{class} function createBarcodeReader(P1: JString): JBarcodeReader; cdecl;     overload;
{class} function listBarcodeDevices: JList; cdecl;
{class} function listConnectedBarcodeDevices: JList; cdecl;
{class} procedure removeBarcodeDeviceListener(P1:    JAidcManager_BarcodeDeviceListener); cdecl;
{class} property BARCODE_DEVICE_CONNECTED: Integer read     _GetBARCODE_DEVICE_CONNECTED;
{class} property BARCODE_DEVICE_DISCONNECTED: Integer read   _GetBARCODE_DEVICE_DISCONNECTED;
end;

[JavaSignature('com/honeywell/aidc/AidcManager')]
JAidcManager = interface(JObject)
['{98A668C5-9204-4F0C-98B0-A8E1F1124738}']
end;
TJAidcManager = class(TJavaGenericImport<JAidcManagerClass, JAidcManager>)    end;
 JAidcManager_CreatedCallbackClass = interface(IJavaClass)
    ['{E27EF6BB-C642-42B6-98CA-6C270A1AD5D1}']
    {class} procedure onCreated(P1: JAidcManager); cdecl;//Deprecated
  end;

  [JavaSignature('com/honeywell/aidc/AidcManager$CreatedCallback')]
  JAidcManager_CreatedCallback = interface(IJavaInstance)
    ['{E2713D70-1CE6-43AA-9181-7054BD787F1B}']
  end;
  TJAidcManager_CreatedCallback =   class(TJavaGenericImport<JAidcManager_CreatedCallbackClass,   JAidcManager_CreatedCallback>) end;
现在,当我尝试在delphi中使用此功能时,我尝试过此功能,但遇到了一个分段错误:

var cb : JAidcManager_CreatedCallback;
begin
      TJAidcManager.JavaClass.create(SharedActivity,TJAidcManager_CreatedCallback.Wrap((cb as ILocalObject).getobjectID));
JAidcManager_CreatedCallback定义为:

JAidcManagerClass = interface(JObjectClass)
['{EE70EF80-4CA8-4FE0-B912-6453CA0336CD}']
{class} function _GetBARCODE_DEVICE_CONNECTED: Integer; cdecl;
{class} function _GetBARCODE_DEVICE_DISCONNECTED: Integer; cdecl;
{class} procedure addBarcodeDeviceListener(P1:      JAidcManager_BarcodeDeviceListener); cdecl;
{class} procedure close; cdecl;
{class} procedure create(P1: JContext; P2: JAidcManager_CreatedCallback);    cdecl;
{class} function createBarcodeReader: JBarcodeReader; cdecl; overload;
{class} function createBarcodeReader(P1: JString): JBarcodeReader; cdecl;     overload;
{class} function listBarcodeDevices: JList; cdecl;
{class} function listConnectedBarcodeDevices: JList; cdecl;
{class} procedure removeBarcodeDeviceListener(P1:    JAidcManager_BarcodeDeviceListener); cdecl;
{class} property BARCODE_DEVICE_CONNECTED: Integer read     _GetBARCODE_DEVICE_CONNECTED;
{class} property BARCODE_DEVICE_DISCONNECTED: Integer read   _GetBARCODE_DEVICE_DISCONNECTED;
end;

[JavaSignature('com/honeywell/aidc/AidcManager')]
JAidcManager = interface(JObject)
['{98A668C5-9204-4F0C-98B0-A8E1F1124738}']
end;
TJAidcManager = class(TJavaGenericImport<JAidcManagerClass, JAidcManager>)    end;
 JAidcManager_CreatedCallbackClass = interface(IJavaClass)
    ['{E27EF6BB-C642-42B6-98CA-6C270A1AD5D1}']
    {class} procedure onCreated(P1: JAidcManager); cdecl;//Deprecated
  end;

  [JavaSignature('com/honeywell/aidc/AidcManager$CreatedCallback')]
  JAidcManager_CreatedCallback = interface(IJavaInstance)
    ['{E2713D70-1CE6-43AA-9181-7054BD787F1B}']
  end;
  TJAidcManager_CreatedCallback =   class(TJavaGenericImport<JAidcManager_CreatedCallbackClass,   JAidcManager_CreatedCallback>) end;
我还在实现部分的JNIBridge单元中添加了以下内容:

procedure onCreated(P1: JAidcManager); cdecl;//Deprecated
begin
   Form2.manager := P1;
end;
运行此操作时,我得到一个java.lang.SecurityException:不允许绑定到服务意图{acct=com.honeywell.decode.DecodeService cmp=com.intermec.datacollectionservice/.datacollectionservice}错误。我尝试将Bind RemoteView添加到权限,但没有帮助


如果有人能就如何在Delphi中创建AidcManager向我提供建议或指出正确的方向,我将不胜感激

这个问题已经解决了。我需要扩展com.embarcadero.firemankey.FMXNativeActivity


完整解决方案的详细信息可在此处找到

您已将答案链接到一个已关闭2周的站点。如果您更新您的答案以包含详细信息,我将删除否决票:-