please paste the logs. And what bluetooth h/w are you trying to connect to
your mobile device

Regards,
Ajith

On Mon, Feb 7, 2011 at 4:21 PM, Laurent Lugon <[email protected]>wrote:

> Hi all,
>
> I use a hardware bluetooth device and I need to connect it to my mobile
> phone. I've follow the instruction on developer.android.com to set up a
> bluetooth connection but I still have a problem. When I'm connecting to the
> Bluetooth Socket with bluetoothSocket.connect() I don't catch any exception
> so according to the docs, that mean I'm connected to my device. The problem
> is I'm not... Here is my code :
>
>     private class AcceptThread extends Thread {
>         // The local server socket
>         private final BluetoothServerSocket mmServerSocket;
>
>         public AcceptThread() {
>             BluetoothServerSocket tmp = null;
>
>             // Create a new listening server socket
>             try {
>                 tmp = mAdapter
>                         .listenUsingRfcommWithServiceRecord(NAME, MY_UUID);
>             } catch (IOException e) {
>                 Log.e(TAG, "listen() failed", e);
>             }
>             mmServerSocket = tmp;
>         }
>
>         public void run() {
>             if (D)
>                 Log.d(TAG, "BEGIN mAcceptThread" + this);
>             setName("AcceptThread");
>             BluetoothSocket socket = null;
>
>             // Listen to the server socket if we're not connected
>             while (mState != STATE_CONNECTED) {
>                 try {
>                     // This is a blocking call and will only return on a
>                     // successful connection or an exception
>                     socket = mmServerSocket.accept();
>                 } catch (IOException e) {
>                     Log.e(TAG, "accept() failed", e);
>                     break;
>                 }
>
>                 // If a connection was accepted
>                 if (socket != null) {
>                     synchronized (BluetoothConnectionService.this) {
>                         switch (mState) {
>                         case STATE_LISTEN:
>                         case STATE_CONNECTING:
>                             // Situation normal. Start the connected
> thread.
>                             connected(socket, socket.getRemoteDevice());
>                             break;
>                         case STATE_NONE:
>                         case STATE_CONNECTED:
>                             // Either not ready or already connected.
> Terminate
>                             // new socket.
>                             try {
>                                 socket.close();
>                             } catch (IOException e) {
>                                 Log.e(TAG, "Could not close unwanted
> socket", e);
>                             }
>                             break;
>                         }
>                     }
>                 }
>             }
>             if (D)
>                 Log.i(TAG, "END mAcceptThread");
>         }
>
>         public void cancel() {
>             if (D)
>                 Log.d(TAG, "cancel " + this);
>             try {
>                 if (mmServerSocket != null)
>                     mmServerSocket.close();
>             } catch (Exception e) {
>                 Log.e(TAG, "close() of server failed", e);
>             }
>         }
>     }
>
>     /**
>      * This thread runs while attempting to make an outgoing connection
> with a
>      * device. It runs straight through; the connection either succeeds or
>      * fails.
>      */
>     private class ConnectThread extends Thread {
>         private final BluetoothSocket mmSocket;
>         private final BluetoothDevice mmDevice;
>
>
>         public ConnectThread(BluetoothDevice device) {
>             mmDevice = device;
>             BluetoothSocket connection = null;
>
>             // Get a BluetoothSocket for a connection with the
>             // given BluetoothDevice
>             try {
>                 // device.createRfcommSocketToServiceRecord(MY_UUID);
>                 Method m =
> device.getClass().getMethod("createRfcommSocket",
>                         new Class[] { int.class });
>                 connection = (BluetoothSocket) m.invoke(device, 1);
>                 Utils.pause(100);
>             } catch (Exception e) {
>                 Log.e(TAG, "create() failed", e);
>             }
>             mmSocket = connection;
>         }
>
>         public void run() {
>             Log.i(TAG, "BEGIN mConnectThread");
>             setName("ConnectThread");
>
>             if (mmSocket != null) {
>                 // Always cancel discovery because it will slow down a
>                 // connection
>                     mAdapter.cancelDiscovery();
>
>                 // Make a connection to the BluetoothSocket
>                 try {
>                     // This is a blocking call and will only return on a
>                     // successful connection or an exception
>                     mmSocket.connect();
>                 } catch (Exception e1) {
>
>                     Log.e(TAG, "connect failed", e1);
>                     connectionFailed();
>
>                     // Close the socket
>                     try {
>                         mmSocket.close();
>                     } catch (IOException e2) {
>                         Log.e(TAG,
>                                 "unable to close() socket during connection
> failure",
>                                 e2);
>                     }
>                     // Start the service over to restart listening mode
>                     BluetoothConnectionService.this.start();
>                     return;
>                 }
>                 // Reset the ConnectThread because we're done
>                 synchronized (BluetoothConnectionService.this) {
>                     mConnectThread = null;
>                 }
>
>                 // Start the connected thread
>                 connected(mmSocket, mmDevice);
>             } else {
>                 connectionFailed();
>                 BluetoothConnectionService.this.start();
>             }
>         }
>
>         public void cancel() {
>             try {
>                 if (mmSocket != null) {
>                     mmSocket.close();
>                 }
>             } catch (IOException e) {
>                 Log.e(TAG, "close() of connect socket failed", e);
>             }
>         }
>     }
>
>     /**
>      * This thread runs during a connection with a remote device. It
> handles all
>      * incoming and outgoing transmissions.
>      */
>     private class ConnectedThread extends Thread {
>         private final BluetoothSocket mmSocket;
>         private final DataInputStream mmInStream;
>         private final OutputStream mmOutStream;
>
>         public ConnectedThread(BluetoothSocket socket) {
>             Log.d(TAG, "create ConnectedThread");
>             mmSocket = socket;
>             InputStream tmpIn = null;
>             OutputStream tmpOut = null;
>
>             // Get the BluetoothSocket input and output streams
>             try {
>                 tmpIn = socket.getInputStream();
>                 tmpOut = socket.getOutputStream();
>                 isConnected = true;
>             } catch (IOException e) {
>                 Log.e(TAG, "temp sockets not created", e);
>                 isConnected = false;
>             }
>
>             mmInStream = new DataInputStream(tmpIn);
>             mmOutStream = tmpOut;
>         }
>
>         public void run() {
>             Log.i(TAG, "BEGIN mConnectedThread");
>
>             while (isConnected) {
>                 Utils.pause(5);
>                 isConnected = checkConnection();
>             }
>         }
>
>         /**
>          * Check if the connection is still alive
>          *
>          * @return true or false
>          */
>         private boolean checkConnection() {
>             synchronized (mmInStream) {
>                 try {
>                     int len = mmInStream.available();
>                     if (len > 0) {// Checks the available amount
>                         byte b[] = new byte[len];
>                         mmInStream.readFully(b, 0, len);
>                         mHandler.obtainMessage(MESSAGE_READ, len, -1, b)
>                                 .sendToTarget();
>                     }
>                     return true;
>                 } catch (IOException ioe) {
>                     Log.e(TAG, "disconnected", ioe);
>                     connectionLost();
>                     return false; // Connection is lost.
>                 }
>             }
>         }
>
>
> Thank you for your help !
>
>   Best regards
>
>
> SECU4 SA
> Laurent Lugon Moulin
>
> Technical & Development Assistant
> Technopôle 5
> 3960 Sierre – Switzerland
>
> Office  :   +4127 4567 931
> Fax      :   +4127 4567
> 935
>
> Skype :   laurent.lugon.moulin
>
> www.secu4.com
>
>
>
>
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to