[英]Android - Send images via Bluetooth
我想通过蓝牙在具有相同应用程序的两部Android手机之间发送图像。 两部手机都应该能够发送和接收图像。
我尝试发送文本,并且可以正常工作。 但是这是图像的问题:程序在while循环中保持阻塞状态:
while(len != -1){
outputStream.write(buffer, 0, len)
len = bis.read(buffer)
}
我知道read正在阻塞,它应该意味着bis为空,但是我不明白为什么它为空。
这是发送代码:
//sending bitmap
private var socket = device.createRfcommSocketToServiceRecord(uuid)
override fun run() {
this.socket.connect()
var outputStream = this.socket.outputStream
var bos = ByteArrayOutputStream()
bitmapImage.compress(Bitmap.CompressFormat.JPEG, 100, bos)
var bitmapData = bos.toByteArray()
var bais = ByteArrayInputStream(bitmapData)
var bis = BufferedInputStream(bais, 8*1024)
val buffer = ByteArray(8192)
var len : Int = bis.read(buffer)
while(len != -1){
outputStream.write(buffer, 0, len)
len = bis.read(buffer)
}
outputStream.flush()
outputStream.close()
}
在这里接收:
//receive bitmap
private var inputStream = this.socket.inputStream
override fun run() {
val buffer = ByteArray(8192)
var current = 0
try {
var bytesRead = 0
current = bytesRead
do {
bytesRead = inputStream.read(buffer, current, buffer.size - current)
if (bytesRead >= 0) {
current += bytesRead
Log.v("server", current.toString())
}
} while (bytesRead > -1)
} catch (e : IOException){
e.printStackTrace()
} finally {
inputStream.close()
// outputStream.close()
socket.close()
}
Log.v("server", "over")
bitmapTemp = BitmapFactory.decodeByteArray(buffer, 0, current)
pic_image?.setImageBitmap(bitmapTemp)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.