Hi,

i have created the socket with
mSppClient =
device.createRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));
mSppClient, is created.

but when i call mSppClient.connect(), i will get the exception of
"Service discovery failed", becaause the SDP query happening in the
connect api failed.

But on the remote phone SDP is registered fine with Ox1101/19, which i
got from doing Browse Serice from other phone.

So why my device is not able to start the connection? please help.
------------------------------------------------------------------------------------------------

On Feb 4, 3:34 pm, Bwd <[email protected]> wrote:
> Good day.
> I was able to create a stable connection to the BT device.
> To do this, I changed your code:
> BluetoothSocket btsocket =
> btdev.createRfcommSocketToServiceRecord(uuid);btsocket.connect();
>
> Upon:
> int RFCOMM_CHANEL = 1; //SPP chanel
> Method m = btdev.getClass().getMethod("createRfcommSocket", new
> Class[] { int.class });
> BluetoothSocket connection = (BluetoothSocket) m.invoke(btdev,
> RFCOMM_CHANEL);
> connection.connect();
>
> And now the connection has been stable and not broken and you can read
> and receive data by input and output streams.
>
> On 16 янв, 02:48, Sean Liao <[email protected]> wrote:
>
>
>
> > Anyone look into or experienced the same problem using the role switch
> > feature?  I think this may be a bug on the android sdk:
>
> > If android bt advertise it support role switch and it should fullfil the
> > request from remote device.  Or, it should simply advertise that it doesn't
> > support role switch so the remote device would not request role switch?
>
> > is that how it suppose to work?  comments?
>
> > On Mon, Nov 30, 2009 at 11:36 AM, Sean Liao <[email protected]> wrote:
> > > We hooked up a BT protocol analyzer to monitor why connection getting
> > > dropped right after connection.  We are certain it is due to "Role 
> > > Switch".
> > >  By disable role switch, I have successfully established connection, read
> > > and write.
>
> > > The behavior seems not right, and I think there may be a problem on my
> > > Android phones.  The following is what I observed from the protocol
> > > analyzer:
>
> > > 1.  Android makes a connection to remote device. It is succesful.
> > > 2.  Remote device requests "Role Switch".
> > >      =>  Android "must"  response yes (I believe, otherwise, connection
> > > would just stay and no further steps shall take place)
>
> > > 3.  Android immediately disconnects the above connection.
> > > 4.  The remote device attempts to establish a connection to my Android
> > > phone, it fails.  I can see the remote device trying to negotiate 
> > > connection
> > > rate but eventually giving up.
>
> > > The above I believe 3 and 4 are the steps when role switch taken place.  I
> > > could be wrong but by disable role switch on remote device, the connection
> > > is fairly robust.
>
> > > May I request "role switch" feature for next release?
>
> > > Best regards,
> > > Sean
>
> > > On Tue, Nov 24, 2009 at 12:45 PM, Sean Liao <[email protected]>wrote:
>
> > >> Hi, I wrote a simple test driver to test the bluetooth apis.  Anyone can
> > >> verify whether I am using the API correctly?  Everything seems good but 
> > >> no
> > >> data read :-(
>
> > >> ===========================================================================
> > >> // before calling the following, inquiry scan successfully returned, and
> > >> the remote device is pre-paired.
>
> > >>    private boolean doTestConnection() {
>
> > >>       Log.d("SwxBtCommImpl", "doTestConnection");
>
> > >>       String btAddr = "00:08:1B:CA:C7:29";
>
> > >>       BluetoothDevice btdev =
> > >> BluetoothAdapterImpl.getInstance().getRemoteDevice(btAddr);
>
> > >>       // widcom using the following GUID
> > >>       // 00001101-0000-1000-8000-00805F9B34FB
> > >>       UUID uuid = 
> > >> UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
>
> > >>       try {
> > >>          BluetoothSocket btsocket =
> > >> btdev.createRfcommSocketToServiceRecord(uuid);
>
> > >>          btsocket.connect();
> > >>          Log.d("SwxBtCommImpl", "connected");
>
> > >>          try {
> > >>             Thread.sleep(1000);
> > >>          } catch (InterruptedException e1) {
> > >>             // TODO Auto-generated catch block
> > >>             e1.printStackTrace();
> > >>          }
>
> > >>          InputStream instream = btsocket.getInputStream();
> > >>          Log.d("", "getInputStream");
>
> > >>          byte[] data = new byte[512];
> > >>          for (int i = 0; i < 20; i++) {
> > >>             int numOfAvailable = instream.available();
>
> > >>             Log.d("SwxBtCommImpl", "read " + i + ": " + numOfAvailable + 
> > >> "
> > >> bytes");
> > >>             if(numOfAvailable > 0) {
> > >>                int numOfRead = instream.read(data);
> > >>                Log.d("SwxBtCommImpl", new String(data) + "-" + 
> > >> numOfRead);
> > >>             } else {
>
> > >>                try {
> > >>                   Thread.sleep(500);
> > >>                } catch (InterruptedException e) {
> > >>                   // TODO Auto-generated catch block
> > >>                   e.printStackTrace();
> > >>                }
> > >>             }
> > >>          }
>
> > >>          instream.close();
> > >>          instream = null;
>
> > >>          btsocket.close();
>
> > >>       } catch (IOException e) {
> > >>          // TODO Auto-generated catch block
> > >>          Log.e("", "bt connection failed", e);
> > >>       }
>
> > >>       return true;
> > >>    }- Hide quoted text -
>
> - Show quoted text -

-- 
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