Android 将字节数组转换为位图

Android 将字节数组转换为位图,android,bytearray,inputstream,image,bitmapfactory,Android,Bytearray,Inputstream,Image,Bitmapfactory,我将Android BluetoothChat示例项目更改为通过蓝牙传输文件。我成功地传输了文本文件,并将它们打印到ListActivity上。我想对图像做同样的事情,但无法让它工作。有一个Handler对象,它将在InputStream接收的字节数组发送到UserInterface。我需要把这个bytearray转换成一个图像。我尝试了以下方法,但无效: @Override public void handleMessage(Message msg) { swi

我将Android BluetoothChat示例项目更改为通过蓝牙传输文件。我成功地传输了文本文件,并将它们打印到ListActivity上。我想对图像做同样的事情,但无法让它工作。有一个Handler对象,它将在InputStream接收的字节数组发送到UserInterface。我需要把这个bytearray转换成一个图像。我尝试了以下方法,但无效:

    @Override
    public void handleMessage(Message msg) {
        switch (msg.what) {
        case MESSAGE_STATE_CHANGE:
            if(D) Log.i(TAG, "MESSAGE_STATE_CHANGE: " + msg.arg1);
            switch (msg.arg1) {
        case MESSAGE_READ:
            byte[] readBuf = (byte[]) msg.obj;
            // construct a string from the valid bytes in the buffer
            myImg.setImageBitmap(BitmapFactory.decodeByteArray(readBuf, 0, readBuf.length));
            //the following lines would actually display the text of the file in the ListActivity
            //String readMessage = new String(readBuf, 0, msg.arg1);
            //mConversationArrayAdapter.add(mConnectedDeviceName+":  " + readMessage);
            break;
        }
    }
};
将消息发送到UI的处理程序代码如下所示:

mHandler.obtainMessage(BluetoothChat.MESSAGE_READ, bytes, -1,buffer).sendToTarget();
回答 我读了很多其他的帖子,我发现其他人成功地使它工作。他用了一个小把戏救了我。我不会在这里给出答案,因为在问题页面中有更好的解释


感谢大家的帮助。

尝试使用
位图工厂。decodeByteArray(byte[]数据,int offset,int length)
方法从字节数组获取位图。

myImg引用了我在UI上使用的图像。在我点击send后,图像消失了。我想没有正确的位图可以替换。有错误或异常吗?你确定这是图像吗?您是否尝试将其保存在某个位置并使用常规图像查看器打开?这是我在日志文件中得到的。在我在另一台设备中点击“发送图像”20次之后。tag skia---skipagedecoder::Factory返回null。我读了很多关于我面临的问题的帖子,可能是我在将输入流发送到UI之前没有在字节数组中读取整个输入流。希望我能带着一个解决方案回来。