Устройство Sunmi V1s - обратный вызов Java не работает при печати принтера

Я использую устройство Sunmi V1s и хочу показать диалог, когда принтер закончит печать всей квитанции. Теперь я могу получить сообщение, как только запрос будет обработан, но я не могу получить сообщение в тот момент, когда принтер выполнил всю печать.

Я использовал демонстрационное приложение для создания обратного вызова, которое затем отправляю в класс AidlUtil.

TextActivity

final PrinterCallback printerCallback = new PrinterCallback() {
          @Override
          public void onReturnString(String result) {
                System.out.println("Finished: " + result); //never prints out, expecting this line to work when Sunmi printer finishes printing
          }

          @Override
          public void onRunResult(boolean success) {
                System.out.println("Success: " + success); //prints out immediately after query is sent
          }
          @Override
          public void onRaiseException(String msg) {

          }
};
AidlUtil.getInstance().printText(content, size, isBold, isUnderLine, printerCallback);

Класс AidlUtil:

public void printText(String content, float size, boolean isBold, boolean isUnderLine, PrinterCallback printerCallback) {
        if (woyouService == null) {
            Toast.makeText(context, R.string.toast_2, Toast.LENGTH_LONG).show();
            return;
        }

        try {
            if (isBold) {
                woyouService.sendRAWData(ESCUtil.boldOn(), null);
            } else {
                woyouService.sendRAWData(ESCUtil.boldOff(), null);
            }

            if (isUnderLine) {
                woyouService.sendRAWData(ESCUtil.underlineWithOneDotWidthOn(), null);
            } else {
                woyouService.sendRAWData(ESCUtil.underlineOff(), null);
            }

            woyouService.printTextWithFont(content, null, size, generateCB(printerCallback)); //generating ICallback and sending it to printTextWithFont method
            woyouService.lineWrap(3, null);
        } catch (RemoteException e) {
            e.printStackTrace();
        }
}

Метод generateCB:

public ICallback generateCB(final PrinterCallback printerCallback){
        return new ICallback.Stub(){
            @Override
            public void onRunResult(boolean isSuccess) throws RemoteException {
                printerCallback.onRunResult(isSuccess);
            }

            @Override
            public void onReturnString(String result) throws RemoteException {
                printerCallback.onReturnString(result);
            }

            @Override
            public void onRaiseException(int code, String msg) throws RemoteException {
                printerCallback.onRaiseException(msg);
            }

            @Override
            public void onPrintResult(int code, String msg) throws RemoteException {
            }
        };
}

Что может быть проблемой? Я ожидаю получить метод System.out.println onReturnString, но метод не вызывается в любое время

java,android,callback,

0

Ответов: 0

Устройство Sunmi V1s - обратный вызов Java не работает при печати принтера

Я использую устройство Sunmi V1s и хочу показать диалог, когда принтер закончит печать всей квитанции. Теперь я могу получить сообщение, как только запрос будет обработан, но я не могу получить сообщение в тот момент, когда принтер выполнил всю печать.

Я использовал демонстрационное приложение для создания обратного вызова, которое затем отправляю в класс AidlUtil.

TextActivity

final PrinterCallback printerCallback = new PrinterCallback() {
          @Override
          public void onReturnString(String result) {
                System.out.println("Finished: " + result); //never prints out, expecting this line to work when Sunmi printer finishes printing
          }

          @Override
          public void onRunResult(boolean success) {
                System.out.println("Success: " + success); //prints out immediately after query is sent
          }
          @Override
          public void onRaiseException(String msg) {

          }
};
AidlUtil.getInstance().printText(content, size, isBold, isUnderLine, printerCallback);

Класс AidlUtil:

public void printText(String content, float size, boolean isBold, boolean isUnderLine, PrinterCallback printerCallback) {
        if (woyouService == null) {
            Toast.makeText(context, R.string.toast_2, Toast.LENGTH_LONG).show();
            return;
        }

        try {
            if (isBold) {
                woyouService.sendRAWData(ESCUtil.boldOn(), null);
            } else {
                woyouService.sendRAWData(ESCUtil.boldOff(), null);
            }

            if (isUnderLine) {
                woyouService.sendRAWData(ESCUtil.underlineWithOneDotWidthOn(), null);
            } else {
                woyouService.sendRAWData(ESCUtil.underlineOff(), null);
            }

            woyouService.printTextWithFont(content, null, size, generateCB(printerCallback)); //generating ICallback and sending it to printTextWithFont method
            woyouService.lineWrap(3, null);
        } catch (RemoteException e) {
            e.printStackTrace();
        }
}

Метод generateCB:

public ICallback generateCB(final PrinterCallback printerCallback){
        return new ICallback.Stub(){
            @Override
            public void onRunResult(boolean isSuccess) throws RemoteException {
                printerCallback.onRunResult(isSuccess);
            }

            @Override
            public void onReturnString(String result) throws RemoteException {
                printerCallback.onReturnString(result);
            }

            @Override
            public void onRaiseException(int code, String msg) throws RemoteException {
                printerCallback.onRaiseException(msg);
            }

            @Override
            public void onPrintResult(int code, String msg) throws RemoteException {
            }
        };
}

Что может быть проблемой? Я ожидаю получить метод System.out.println onReturnString, но метод не вызывается в любое время

00Java, андроид, вызов,
Похожие вопросы