studio programacion móviles dispositivos detectar desarrollo curso connectedthread conectar buscar aplicaciones android bluetooth

android - programacion - Reinicio de la conexión de pares Bluetooth



detectar dispositivos bluetooth android studio (2)

Por alguna razón, el cliente está cortando la conexión. Esto podría deberse a varias razones, como el envío de datos incorrectos o el emparejamiento incorrecto. ¿Te aseguraste de estar emparejando los dispositivos correctamente?

El código de emparejamiento no ingresado podría ser un problema. Esto hace que el emparejamiento sea incorrecto.

La solución es ingresar a Ajustes -> Conexiones inalámbricas y redes -> Configuración de Bluetooth, presionar prolongadamente en el dispositivo "emparejado" y seleccionar ''Desvincular'', luego presionar solo en el dispositivo que produjo una ventana de ''solicitud de emparejamiento Bluetooth'' con campo de texto, Escribí el PIN (código de vinculación). Una vez hecho esto, el emparejamiento será exitoso.

También puede usar un programa llamado Wireshark para analizar los mensajes enviados a través del protocolo.

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 que estoy enfrentando un problema que restablece la conexión entre pares.

Aquí mi fragmento de código a continuación. cualquier ayuda en esto apreciada.

En mi actividad estoy usando el código a continuación para procesar el envío de archivos

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

=====================================================================

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 ejecutaba el código anterior, recibí el cuadro de diálogo de notificación de aceptación de conexión en el dispositivo de destino y luego notifiqué que el resto de la conexión de igual a la vez que ejecutaba la línea * cs.connect (hs); en mi logcat. Trazado de la pila de Logcat:

07-11 14: 48: 07.044: W / System.err (4527): java.io.IOException: restablecimiento de la conexión por el par 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 .connectionRfRead (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.co nnectImpl (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)


import javax.obex.ClientSession;

Usas esta clase "ClientSession".

hasta donde yo sé, createHeaderSet no es un método de ClientSession

Me pregunto cómo compilas tu aplicación con éxito.