0

スキャナが USB Hid に設定されている USB バーコード スキャナでバーコードを読み取る必要があります。通信にはhttps://github.com/benlypan/UsbHidを使用します 読み取りは機能しますが、問題は、デバイスに接続するとアプリがブロックされることです。デバイスへの接続はスレッドで確立されますが、とにかくブロックされます。スレッドはサービスで実行されています。

私はこのような問題を解決しました

try
{
byte[] readBuffer = device.read(64, 100);
String data = new String(readBuffer, StandardCharsets.UTF_8);
//Only messages start with 0x02
if(readBuffer[0] == 0x02) {
  String barcode = data.substring(2, getZeroPosition(readBuffer) + 1);
  Log.e("TAG", barcode);
  //Read util end otherwise
  while (getZeroPosition(readBuffer) != 0) {
    try {
      readBuffer = device.read(64, 100);
      data = new String(readBuffer, StandardCharsets.UTF_8);
      barcode += data.substring(0, getZeroPosition(readBuffer) + 1);
     } catch (Exception e) {
          break;
     }
  }
}
catch (Exception e) {}

ライブラリはバックグラウンドで使用します

android.hardware.usb.UsbDeviceConnection.bulkTransfer

タイムアウトに達した場合は、1000ミリ秒待ってからもう一度読み取りますが、これをより良い方法で行う可能性があるはずです。

アプリ全体をブロックせずに読む方法はありますか?

ありがとう

4

0 に答える 0