Функция закрытия аксессуара:
Код: Выделить всё
fun closeAccessory() {
try {
mInputStream?.close()
} catch (e: IOException) {
Log.i(TAG, "Error closing inputStream", e)
logInfo(TAG, "Error closing inputStream")
} finally {
mInputStream = null
}
try {
mOutputStream?.close()
} catch (e: IOException) {
Log.i(TAG, "Error closing outputStream", e)
logInfo(TAG, "Error closing outputStream")
} finally {
mOutputStream = null
}
try {
mFileDescriptor?.close()
} catch (e: IOException) {
Log.i(TAG, "Error closing fileDescriptor", e)
logInfo(TAG, "Error closing fileDescriptor")
} finally {
mFileDescriptor = null
}
if (::readjob.isInitialized) readjob.cancel()
}
Код: Выделить всё
private fun openAccessory(accessory: UsbAccessory) {
mFileDescriptor = usbManager.openAccessory(accessory)
if (mFileDescriptor != null) {
mAccessory = accessory
val fd = mFileDescriptor!!.fileDescriptor
mInputStream = FileInputStream(fd)
mOutputStream = FileOutputStream(fd)
logInfo(Companion.TAG, "Accessory opened")
readjob = GlobalScope.launch(Dispatchers.IO){
isReading = true
while (isReading) {
try {
val buffer = ByteArray(1000)
mInputStream!!.read(buffer)
getIncomingData(buffer)
logInfo(Companion.TAG, "Read succeed")
} catch (e: IOException) {
logInfo(Companion.TAG, "Read failed: $e")
break
}
}
}
} else {
logInfo(Companion.TAG, "Accessory open fail")
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... openning-t