The issue I have is really not establish connection.  It is role how android
handles role switch.  I am using Droid 2.0.1 sdk with 0.95 adt.

By turning role switch request on remote bt.  the connectioin, read and
write just good and dandy.  with role switch on, connection looks good but
read just get no data available even though I know there is data to be read.

On Fri, Feb 5, 2010 at 3:48 PM, Alexei Czeskis <[email protected]>wrote:

> Another thing to check is to make sure your UUID is correct.  If the device
> you're connecting to doesn't know about the UUID you're advertising, it'll
> make a low level connection and then fail.  The behavior I saw when this was
> happening to me is somewhat reminiscent of the original post.
>
> -Alexei
>
> On Fri, Feb 5, 2010 at 2:10 PM, Sean Liao <[email protected]> wrote:
>
>> how come I cannot see the method:
>> Method m = btdev.getClass().getMethod("createRfcommSocket", new Class[] {
>> int.class });
>>
>> Anything wrong with my dev/sdk env?  or is it a hidden API?
>>
>> On Thu, Feb 4, 2010 at 2:33 AM, 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;
>>> > >>    }
>>>
>>> --
>>> 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]<android-developers%[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]<android-developers%[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]<android-developers%[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