private void executeAPDUCommands(final byte[][] commands) {
    reader.sleep();

    cordova
        .getThreadPool()
        .execute(
            new Runnable() {
              @Override
              public void run() {
                reader.setMute(false);

                reader.reset(
                    new AudioJackReader.OnResetCompleteListener() {
                      @Override
                      public void onResetComplete(AudioJackReader audioJackReader) {

                        if (!reader.piccPowerOn(5, 0x8F)) Log.w(TAG, "Error");
                        for (byte[] command : commands) {
                          reader.piccTransmit(5, command);
                        }

                        reader.piccPowerOff();
                      }
                    });
              }
            });
  }