Отправка файла на Android с Bluetooth Mate Gold

#android

#Android

Вопрос:

Я пытаюсь использовать (модифицированную версию) Android Bluetooth chat example для получения файла изображения, отправленного из модуля Bluetooth Mate Gold (http://www.sparkfun.com/products/9358 )

Я мог бы установить соединение. Я могу отправить несколько небольших команд (в обоих направлениях). Но когда я попытался отправить файл (4 КБ) с моего модуля Bluetooth на телефон, некоторые байты повреждены.

Со стороны модуля Bluetooth я отправляю токен «-str» для обозначения начала файла и «-end» для обозначения конца файла. Итак, по сути, я записываю байты между «-str» и «-end» в файл…

Вот часть примера Android, которую я изменил….

             case MESSAGE_READ:
            byte[] readBuf = (byte[]) msg.obj;
            // construct a string from the valid bytes in the buffer
            String readMessage = new String(readBuf, 0, msg.arg1);

            if(readMessage.equals("-end")){ //end of file received
                Toast.makeText(getApplicationContext(), "End of file.", Toast.LENGTH_SHORT).show();
                if (flag=false){ //file start has not received
                    Toast.makeText(getApplicationContext(), "Error in receiving data.", Toast.LENGTH_SHORT).show();
                }
                else{
                    if (end_received==false){
                        mConversationArrayAdapter.add(readMessage);
                            flag = false; //make "-str" receive flag false (get ready for the next file)
                        try {
                        bw.flush();
                        bw.close();
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }

                        i=i 1;                  
                        Toast.makeText(getApplicationContext(), "Image data received.", Toast.LENGTH_SHORT).show();
                        end_received=true;  
                    }
               }
            }

            if(flag==true){ //if we have receive "-str"
                try {
                    imagedata = imagedata.concat(new String(readBuf,0,msg.arg1));
                    bw.write(readBuf, 0, msg.arg1);
                     }

        } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
        }
            }


            if(readMessage.equals("-str")){ //make flag=true when "-str" received, start a new filename 
                mConversationArrayAdapter.add(readMessage);
                flag = true; 
                end_received=false;
            String FileName = "ring"   Integer.toString(i)   ".jpg";
                localFile1 = new File(path, FileName);
                try {
                localFile1.createNewFile();
                 bw = new BufferedOutputStream(new FileOutputStream(localFile1));
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 
 

}

Прошла неделя у кого-нибудь есть ответ на этот вопрос?