Transferir arquivos USB Mass Storage OTG

Eu tenho um dispositivo de armazenamento em massa externo conectado a um dispositivo Android. Existem vários arquivos .BIN no diretório raiz que preciso ler no meu aplicativo. Consigo me conectar ao dispositivo e receber permissão usb usando UsbDeviceConnection.

private final BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {

@Override
public void onReceive(Context context, Intent intent) {
    String output = outputTV.getText().toString();
    String action = intent.getAction();
    outputTV.setText(outputTV.getText() + "\n" + " ACTION: " + action);

    if (ACTION_USB_PERMISSION.equals(action)) {
        synchronized (this) {
            UsbDevice device = (UsbDevice) intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);

            if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)) {
                if (device != null) {
                    if (device.getInterfaceCount() > 0) {
                        usbIntf = device.getInterface(0);
                        usbEndIn = usbIntf.getEndpoint(0);
                        usbEndOut = usbIntf.getEndpoint(1);

                        usbConnection = mUsbManager.openDevice(device);
                        usbConnection.claimInterface(usbIntf, true);

                        byte[] buffer = new byte[usbEndIn.getMaxPacketSize()];
                        StringBuilder str = new StringBuilder();
                        int retVal = usbConnection.bulkTransfer(usbEndIn, buffer, usbEndIn.getMaxPacketSize(), 2000);

                        for (int i = 2; i < buffer.length; i++) {
                            if (buffer[i] != 0) {
                                str.append((char) buffer[i]);
                            }}}}}}}}};

Uma vez conectado, posso ver que tenho uma interface de armazenamento em massa com 2 pontos de extremidade de transferência em massa (uma entrada, uma saída).

Ao usar usbConnection.bulkTransfer, recebo -1 de volta e um buffer vazio. Então, estou tendo problemas para receber dados. Uma vez superado esse obstáculo, como serão os dados? Como continuo retirando todos os arquivos do dispositivo? Existe uma maneira de transferir o arquivo de dados por arquivo para o meu aplicativo? Existe uma maneira melhor de abordar isso?

questionAnswers(1)

yourAnswerToTheQuestion