Я удалил ведение журнала и проверку ошибок из этого кода, чтобы отображались только соответствующие строки, но разрешения предоставлены, интерфейс правильный, имеет класс и подкласс принтера, все они были тщательно проверены.
Код: Выделить всё
val config = device.getConfiguration(configIndex)
val interfaze = config.getInterface(interfazeIndex)
val endpoint = interfaze.getEndpoint(endpointIndex)
if (endpoint.direction == DIRECTION_OUT && endpoint.type == USB_ENDPOINT_XFER_BULK) {
UsbManager.openDevice(device)?.also { connection ->
connection.claimInterface(interfaze, true)
val bytes = resource.readBytes()
Thread {
for (buffer: ByteArray in bytes.chunks(endpoint.maxPacketSize)) {
val result = connection.bulkTransfer(endpoint, buffer, buffer.size, 0)
if (result < 0) return@Thread
}
val result = connection.bulkTransfer(endpoint, byteArrayOf(0), 0, 0)
connection.releaseInterface(interfaze)
connection.close()
}.start()
}
}
Я могу найти только один подозрительный элемент в logcat — прежде чем установить соединение, я есть следующие строки:
Код: Выделить всё
usbhost system_server I usb_device_open /dev/bus/usb/002/002
usbhost system_server I usb_device_open open returned 339 writeable 1 errno 0
usbhost system_server I usb_device_new /dev/bus/usb/002/002 fd: 339
usbhost system_server I usb_device_new read returned 195 errno 0
usbhost com.example.usbproof I usb_device_new /dev/bus/usb/002/002 fd: 79
usbhost com.example.usbproof I usb_device_new read returned 195 errno 11
UsbProof com.example.usbproof D connection=android.hardware.usb.UsbDeviceConnection@2425168
UsbProof com.example.usbproof D bytes=116200
(Для справки: принтер работает, кабель в порядке, принтер правильно отвечает на запросы обнаружения USB с той же настройкой, только печать выше не работает.)
Подробнее здесь: https://stackoverflow.com/questions/792 ... hout-error
Мобильная версия