スキャナが 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ミリ秒待ってからもう一度読み取りますが、これをより良い方法で行う可能性があるはずです。
アプリ全体をブロックせずに読む方法はありますか?
ありがとう