gpt4 book ai didi

android - 如何从蓝牙接收字节数组并将字节数组作为图像文件保存到SD卡

转载 作者:行者123 更新时间:2023-11-29 21:52:29 25 4
gpt4 key购买 nike

我正在开发一个需要实现 Bluetooth 功能的 Android 应用程序。它需要从外部硬件设备接收图像,然后将该字节数组作为图像文件保存到 SD 卡。

这是我的代码:

public void run(){
Log.i(TAG, "BEGIN mConnectedThread");
byte[] buffer = new byte[4096];

//CREATE IMAGE FILE
File test=new File(Environment.getExternalStorageDirectory(), "test.jpg");

if (test.exists()) {
test.delete();
}

try {
fos = new FileOutputStream(test.getPath());
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}


// Keep listening to the InputStream while connected
while (true) {
try {
// Read from the InputStream
bytes = mmInStream.read(buffer);

/*mEmulatorView.write(buffer, bytes);
// Send the obtained bytes to the UI Activity
mHandler.obtainMessage(BlueTerm.MESSAGE_READ, bytes, -1, buffer).sendToTarget();*/
//receivedData = new String(buffer);

receivedData=new String(buffer)

//WRITE BYTES TO FILE
try {

fos.write(buffer);

}
catch (java.io.IOException e) {
Log.e("PictureDemo", "Exception in photoCallback", e);
}

/*
Bitmap bitmap = null;
try {
bitmap = BitmapFactory.decodeByteArray(buffer , 0, buffer.length);
} catch (OutOfMemoryError e) {
e.printStackTrace();
}catch (Exception e) {
e.printStackTrace();
}
if(bitmap != null)

testModeOnScreen.saveBitmapToSdcardAndEmail(bytes, bitmap);
*/}

} catch (IOException e) {
Log.e(TAG, "disconnected", e);
connectionLost();
break;
}
}
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

我的问题是我没有遇到任何异常或崩溃,但我得到的是损坏的图像文件。

最佳答案

这里似乎有多个问题。对于初学者,缓冲区尾部的垃圾,“令 k 为实际读取的字节数;这些字节将存储在元素 b[0] 到 b[k-1] 中,留下元素 b[k] 到 b[b。 length-1]不受影响”:

http://docs.oracle.com/javase/6/docs/api/java/io/InputStream.html#read()

此外,您可能碰巧需要使用 Android 的位图功能。

看看他们如何在这里交换位图:

http://kamrana.wordpress.com/2012/05/12/sending-images-over-bluetooth-in-android/

以及它们如何保存到文件:

Save bitmap to file function

http://developer.android.com/reference/android/graphics/Bitmap.html#compress(android.graphics.Bitmap.CompressFormat, int, java.io.OutputStream)

您会发现将这些构建 block 组合在一起比重新发明它们更容易。

关于android - 如何从蓝牙接收字节数组并将字节数组作为图像文件保存到SD卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14080142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com