Xin chào bạn, Tôi đang cố gắng gửi một tập tin từ thiết bị Android đến thiết bị bluetooth cụ thể bằng cách sử dụng api của bên thứ ba có tên là bluecove với obex. Tôi có thể kết nối thiết bị khi thiết lập tiêu đề kết nối Tôi đang gặp phải sự cố khi đặt lại kết nối ngang hàng ngang hàng.Bluetooth peer connection reset
Đây là đoạn mã dưới đây của tôi. bất kỳ giúp đỡ về điều này đánh giá cao.
Trong hoạt động của tôi Tôi đang sử dụng bên dưới mã để xử lý gửi tập tin
BlueCoveImpl.setConfigObject(
BlueCoveConfigProperties.PROPERTY_ANDROID_CONTEXT,
this);
String deviceAddress = "0007ABB6D96E";
int channel = 9;
String obexURL = "btgoep://" + deviceAddress + ":"
+ "0000110600001000800000805f9b34fb" + ";android=true";
// String obexURL = "btgoep://" + deviceAddress + ":" + channel
// + ";android=true";
String fileToSend = "sdcard/DSCN9379.jpg";
System.out.println("Connecting to " + obexURL);
FileInputStream stream = new FileInputStream(fileToSend);
File f = new File(fileToSend);
int size = (int) f.length();
byte file[] = new byte[size];
stream.read(file);
String filename = f.getName();
System.out
.println("***************Now sending file to device*****************");
SendFileTask task = new SendFileTask(MainActivity.this, obexURL,
file, filename);
Thread thread = new Thread(task);
thread.start();
================ dưới đây mà tôi đang cố gắng để kết nối kết nối bluecove lớp đối tượng với tiêu đề thiết lập như sau.
package com.example.bluecovesample;
import java.io.OutputStream;
import javax.microedition.io.Connection;
import javax.microedition.io.Connector;
import javax.obex.ClientSession;
import javax.obex.HeaderSet;
import javax.obex.Operation;
import javax.obex.ResponseCodes;
//import static write ;
import android.content.Context;
import android.widget.Toast;
public class SendFileTask implements Runnable {
private byte[] file;
private String filename;
public static final int WRITE = 2;
String logString;
int responseCode;
Context context;
String obexURL;
public SendFileTask(Context ctx, String obexUrl, byte[] file,
String filename) {
this.context = ctx;
this.obexURL = obexUrl;
this.file = file;
this.filename = filename;
}
public void run() {
Connection connection = null;
try {
System.out.println(obexURL);
// for (int i = 0; i 3; i++)
{
// connection = Connector.open("btgoep://"+btConnectionURL+
// ":6");
connection = Connector.open(obexURL);
}
// connection obtained
// now, let's create a session and a headerset objects
ClientSession cs = (ClientSession) connection;
HeaderSet hs = cs.createHeaderSet();
// toastMsg(hs.toString());
// now let's send the connect header
// cs.notifyAll();
**cs.connect(hs);**
hs.setHeader(HeaderSet.NAME, filename);
// System.out.println("sfname:"+filename);
int dotIndex = filename.lastIndexOf(".");
// System.out.println("doti:"+dotIndex);
String extension = filename.substring(dotIndex).toLowerCase();
// System.out.println("sfname:"+extension);
if (extension.equals(".txt")) {
hs.setHeader(HeaderSet.TYPE, "text/plain");
} else if (extension.equals(".jpg") || extension.equals(".jpeg")) {
hs.setHeader(HeaderSet.TYPE, "image/jpeg");
} else if (extension.equals(".mpeg") || extension.equals(".mpg")
|| extension.equals(".mp3")) {
hs.setHeader(HeaderSet.TYPE, "video/mpeg");
} else if (extension.equals(".wav")) {
hs.setHeader(HeaderSet.TYPE, "audio/x-wav");
} else if (extension.equals(".3gp")) {
hs.setHeader(HeaderSet.TYPE, "image/jpeg");
} else if (extension.equals("mid") || extension.equals("rmi")) {
hs.setHeader(HeaderSet.TYPE, "audio/mid");
}
hs.setHeader(HeaderSet.LENGTH, new Long(file.length));
Operation putOperation = cs.put(hs);
// System.out.println("response code:"+putOperation.getResponseCode());
// putOperation.getResponseCode();
// this.responseCode = putOperation.getResponseCode();
OutputStream outputStream = putOperation.openOutputStream();
outputStream.write(file);
// file push complete
outputStream.close();
responseCode = putOperation.getResponseCode();
putOperation.close();
cs.disconnect(null);
connection.close();
// file successfully sent
System.out.println("RESPONSE CODE " + responseCode);
if (responseCode == ResponseCodes.OBEX_HTTP_OK) {
System.out.println("FILE SUCCESSFULLY SENT " + filename);
}
else {
System.out.println("FILE SUCCESSFULLY NOT SENT" + filename
+ " not in exception");
}
} catch (Exception e) {
System.out.println("FILE SUCCESSFULLY NOT SENT" + filename
+ " in exception");
// System.out.println("In exception");
e.printStackTrace();
try {
connection.close();
} catch (Exception ex) {
System.out.println("error closing connection" + ex.toString());
}
}
}
private void toastMsg(String msg) {
Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
}
}
Khi thực thi mã trên, tôi nhận được hộp thoại thông báo chấp nhận kết nối trên thiết bị đích và sau đó thông báo kết nối ngang hàng trong khi thực hiện dòng * cs.connect (hs); trong logcat của tôi. Logcat stack trace:
07-11 14: 48: 07,044: W/System.err (4527): java.io.IOException: reset kết nối bởi peer 07-11 14: 48: 07,052: W /System.err(4527): tại android.bluetooth.BluetoothSocket.readNative (Phương thức gốc) 07-11 14: 48: 07.059: W/System.err (4527): tại android.bluetooth.BluetoothSocket.read (BluetoothSocket.java:336) 07-11 14: 48: 07.059: W/System.err (4527): tại android.bluetooth.BluetoothInputStream.read (BluetoothInputStream.java:96) 07-11 14: 48: 07.059 : W/System.err (4527): tại com.intel.bluetooth.BluetoothStackAndroid.connectionR fRead (BluetoothStackAndroid.java:437) 07-11 14: 48: 07.059: W/System.err (4527): tại com.intel.bluetooth.BluetoothRFCommInputStream.read (BluetoothRFCommInputStream.java:139) 07-11 14 : 48: 07.059: W/System.err (4527): tại com.intel.bluetooth.obex.OBEXUtils.readFully (OBEXUtils.java:71) 07-11 14: 48: 07.059: W/System.err (4527): tại com.intel.bluetooth.obex.OBEXSessionBase.readPacket (OBEXSessionBase.java:217) 07-11 14: 48: 07.059: W/System.err (4527): tại com.intel.bluetooth. obex.OBEXClientSessionImpl.connectImpl (OBEXClientSessionImpl.java:100) 07-11 14: 48: 07.059: W/System.err (4527): tại com.intel.bluetooth.obex.OBEXClientSessionImpl.connect (OBEXClientSessionImpl.java:85) 07-11 14: 48: 07.059: W/System.err (4527): tại com.example.bluecovesample.SendFileTask.run (SendFileTask.java:78) 07-11 14: 48: 07.059: W/System .err (4527): tại java.lang.Thread.run (Thread.java:1019)
... tôi có thể kết nối nhưng khi tôi truy cập cs.connect (hs); cố gắng thiết lập headerset cho thiết bị kết nối để gửi tập tin, nó bị ngắt kết nối.hơn khác solutin cho việc này. –
Bạn có quyền READ_EXTERNAL_STORAGE và BLUETOOTH trong tệp kê khai của mình không? – Erol
Nếu có, hãy xem mã nguồn tại đây: http://gitorious.org/android-obex và so sánh mã của bạn. – Erol