#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();
}
}
Прошла неделя у кого-нибудь есть ответ на этот вопрос?