Hola amigos, Estoy tratando de enviar un archivo desde un dispositivo Android a un dispositivo Bluetooth específico mediante el uso de una API llamada bluecove con obex. Puedo conectar el dispositivo cuando el encabezado de conexión establece Estoy enfrentando un problema que restablecimiento de conexión de igual.Bluetooth conexión de conexión de grupo
Aquí mi fragmento de código a continuación. cualquier ayuda en esto apreciada.
En mi actividad Estoy mediante el siguiente código para procesar enviar el archivo
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();
================ a continuación que estoy intentando conectar conexión Bluecove objeto de clase con encabezado establecido de la siguiente manera.
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();
}
}
Mientras se ejecuta el código anterior llegué conexión aceptar diálogo de notificación en el dispositivo de destino y luego notificado de que la conexión entre pares en el resto durante la ejecución de la línea * cs.connect (hs); en mi logcat. Logcat Seguimiento de la pila:
07-11 14: 48: 07,044: W/System.err (4527): java.io.IOException: restablecimiento conexión por pares 07-11 14: 48: 07,052: W /System.err(4527): en android.bluetooth.BluetoothSocket.readNative (método nativo) 07-11 14: 48: 07.059: W/System.err (4527): en android.bluetooth.BluetoothSocket.read (BluetoothSocket.java:336) 07-11 14: 48: 07.059: W/System.err (4527): en android.bluetooth.BluetoothInputStream.read (BluetoothInputStream.java:96) 07-11 14: 48: 07.059 : W/System.err (4527): en com.intel.bluetooth.BluetoothStackAndroid.connectionR fRead (BluetoothStackAndroid.java:437) 07-11 14: 48: 07.059: W/System.err (4527): en com.intel.bluetooth.BluetoothRFCommInputStream.read (BluetoothRFCommInputStream.java:139) 07-11 14 : 48: 07.059: W/System.err (4527): en com.intel.bluetooth.obex.OBEXUtils.readFully (OBEXUtils.java:71) 07-11 14: 48: 07.059: W/System.err (4527): en com.intel.bluetooth.obex.OBEXSessionBase.readPacket (OBEXSessionBase.java:217) 07-11 14: 48: 07.059: W/System.err (4527): en com.intel.bluetooth. obex.OBEXClientSessionImpl.connectImpl (OBEXClientSessionImpl.java:100) 07-11 14: 48: 07.059: W/System.err (4527): en com.intel.bluetooth.obex.OBEXClientSessionImpl.connect (OBEXClientSessionImpl.java:85) 07-11 14: 48: 07.059: W/System.err (4527): en com.example.bluecovesample.SendFileTask.run (SendFileTask.java:78) 07-11 14: 48: 07.059: W/System .err (4527): en java.lang.Thread.run (Thread.java:1019)
... puedo conectarme pero cuando llego a cs.connect (hs); tratando de establecer el conjunto de encabezado para que el dispositivo conectado envíe el archivo, se desconecta. Cualquier otra solución para esto. –
¿Tiene los permisos READ_EXTERNAL_STORAGE y BLUETOOTH en su manifiesto? – Erol
En caso afirmativo, eche un vistazo a los códigos fuente aquí: http://gitorious.org/android-obex y compare su código. – Erol