Unity AndroidJavaObject Constructor для собственного SDK - PullRequest
0 голосов
/ 20 сентября 2019

В настоящее время разрабатывается приложение Unity для ELO Kiosk и используется их SDK (https://docs.elotouch.com/accessories/Application_Note_Android_ECM_Peripheral_SDK.pdf), чтобы попробовать и реализовать функции для своих периферийных сканеров штрих-кода и считывателя магнитных полос, но, похоже, ресурсов там немногочтобы помочь.

Основной EloPeripheralManager используется для связи между приложением и периферийными устройствами ELO, но у меня возникают некоторые проблемы при его создании. Копая код SDK (EloPeripheralManager.class), EloPeripheralManager имеет конструкторэто принимает 2 параметра.

    public EloPeripheralManager(Context context, EloPeripheralEventListener listener) {
        this.mEloManager = null;
        this.mUsbPortCtl = null;
        this.mEloManager = (ELOPeripheralManager)context.getSystemService("elo");
        this.mListener = new PeripheralListener(null);
        this.eventLister = listener;
        this.mUsbPortCtl = new UsbPort(this.mEloManager);
        Log.d("Elo", "[Peripheral Manager] Constructor");
        getVersion();
    }

Когда я вызываю конструктор из моего скрипта, я получаю сообщение об ошибке: AndroidJavaException: java.lang.NoSuchMethodError: нет нестатического метода«Lcom / elotouch / library / EloPeripheralManager;. (Landroid.app.Application; Ljava / lang / Class;) V»

    AndroidJavaClass  unityPlayer   = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
    AndroidJavaObject activity      = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
    AndroidJavaObject context       = activity.Call<AndroidJavaObject>("getApplicationContext");

    Debug.Log("Get Elo Peripheral Event Listener");
    EloPeripheralEventListener = new AndroidJavaClass("com.elotouch.library.EloPeripheralEventListener");       
    string gpio = EloPeripheralEventListener.GetStatic<string>("GPIO_IFACE_IN_1");

    Debug.Log("GPIO: " + gpio);  
    Debug.Log("Get Elo Peripheral Manager");

    EloPeripheralManager = new AndroidJavaObject("com.elotouch.library.EloPeripheralManager", new object[] { context, EloPeripheralEventListener });

Если я создаю экземпляр EloPeripheralManager без передачи контекста, а EloPeripheralEventListener аргументирует егоне будет выдавать ошибки.

EloPeripheralManager = new AndroidJavaClass("com.elotouch.library.EloPeripheralManager");

Однако мне нужен конструктор для создания экземпляров приватных переменных для mEloManager, mListener, eventListener и mUsbPortCtl.Я просто вызываю конструктор неправильно или контекст и EloPeripheralEventListener аргументируют проблему?Спасибо за помощь!

...