2

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

    @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();

回答 我阅读了许多其他帖子,并找到了其他成功使其工作的人。他用了一个小技巧救了我。我不会在这里给出答案,因为在问题页面通过蓝牙将图像从 android 发送到 PC中以更好的方式进行了解释

谢谢大家的帮助

4

1 回答 1

0

尝试使用BitmapFactory.decodeByteArray(byte[] data, int offset, int length)方法从字节数组中获取位图。

于 2012-11-21T13:40:06.220 回答