Работа с библиотекой com.github.mik3y:usb-serial-for-android из Delphi

С помощью Java2Op сделал обертку библиотеки получил модуль с интерфейсами.

В JavaInterfaces.pas есть описание:

  JUsbManagerClass = interface(JObjectClass)
    ['{1048A6E9-E1B5-4DA5-A168-ED91E8DE5284}']
    {class} function _GetACTION_USB_ACCESSORY_ATTACHED: JString; cdecl;
    {class} function _GetACTION_USB_ACCESSORY_DETACHED: JString; cdecl;
    {class} function _GetACTION_USB_DEVICE_ATTACHED: JString; cdecl;
    {class} function _GetACTION_USB_DEVICE_DETACHED: JString; cdecl;
    {class} function _GetEXTRA_ACCESSORY: JString; cdecl;
    {class} function _GetEXTRA_DEVICE: JString; cdecl;
    {class} function _GetEXTRA_PERMISSION_GRANTED: JString; cdecl;
    {class} function getAccessoryList: TJavaObjectArray<JUsbAccessory>; cdecl;//Deprecated
    {class} function openAccessory(accessory: JUsbAccessory): JParcelFileDescriptor; cdecl;//Deprecated
    {class} function openDevice(device: JUsbDevice): JUsbDeviceConnection; cdecl;//Deprecated
    {class} procedure requestPermission(device: JUsbDevice; pi: JPendingIntent); cdecl; overload;//Deprecated
    {class} property ACTION_USB_ACCESSORY_ATTACHED: JString read _GetACTION_USB_ACCESSORY_ATTACHED;
    {class} property ACTION_USB_ACCESSORY_DETACHED: JString read _GetACTION_USB_ACCESSORY_DETACHED;
    {class} property ACTION_USB_DEVICE_ATTACHED: JString read _GetACTION_USB_DEVICE_ATTACHED;
    {class} property ACTION_USB_DEVICE_DETACHED: JString read _GetACTION_USB_DEVICE_DETACHED;
    {class} property EXTRA_ACCESSORY: JString read _GetEXTRA_ACCESSORY;
    {class} property EXTRA_DEVICE: JString read _GetEXTRA_DEVICE;
    {class} property EXTRA_PERMISSION_GRANTED: JString read _GetEXTRA_PERMISSION_GRANTED;
  end;

  [JavaSignature('android/hardware/usb/UsbManager')]
  JUsbManager = interface(JObject)
    ['{6F603A25-E816-4012-9B23-054B428A4A75}']
    function getDeviceList: JHashMap; cdecl;//Deprecated
    function hasPermission(device: JUsbDevice): Boolean; cdecl; overload;//Deprecated
    function hasPermission(accessory: JUsbAccessory): Boolean; cdecl; overload;//Deprecated
    procedure requestPermission(accessory: JUsbAccessory; pi: JPendingIntent); cdecl; overload;//Deprecated
  end;
  TJUsbManager = class(TJavaGenericImport<JUsbManagerClass, JUsbManager>) end;

Что бы получить доступ к методам интерфейса используется следующая конструкция:

  JavaObject := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.USB_SERVICE);
  FUsbManager := TJUsbManager.Wrap((JavaObject as ILocalObject).GetObjectID);

теперь я могу получить доступ к методам JUsbManager, а как получить доступ к методам JUsbManagerClass?

Вот пример кода на Java, который хочу реализовать в Delphi

UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);

List<UsbSerialDriver> availableDrivers = UsbSerialProber.getDefaultProber().findAllDrivers(manager);
if (availableDrivers.isEmpty()) {
    return;
}

// Open a connection to the first available driver.
UsbSerialDriver driver = availableDrivers.get(0);

//Вот тут мы видим что из экземпляра класса мы вызываем openDriver, как это сделать в Delphi
UsbDeviceConnection connection = manager.openDevice(driver.getDevice());

Как мы можем заметить этого метода в описании интерфейса нет, но есть в классе, как получить доступ к экземпляру класса?


Ответы (3 шт):

Автор решения: destroyer86

Второй вариант решения к теме с использованием библиотек не относится. Можно взять готовые android обертки на https://github.com/FMXExpress/android-object-pascal-wrapper

И использовать подключение устройства с их помощью, как например это сделал уважаемый ashumkin: https://github.com/ashumkin/Delphi-Android-API

→ Ссылка
Автор решения: destroyer86

Вот ссылка: http://fire-monkey.ru/topic/2085-serial-port/?do=findComment&comment=40392

тут лежит jar библиотека и обертка к ней + примеры как использовать

→ Ссылка