Android 蓝牙编程

android蓝牙编程中一个典型discover/connect 操作有以下几步:

1 扫描可发现的设备

  这一步使用BluetoothAdapter类,首先获得系统BluetoothAdapter对象,然后调用该对象的startDiscovery()方法来启动扫描,系统每扫描到一个蓝牙设备就会发送一个Action为“BluetoothDevice.ACTION_FOUND”的intent,所以要注册一个BroadcastReceiver来接收该intent

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
mBluetoothAdapter.startDiscovery();
 1 final BroadcastReceiver mReceiver = new BroadcastReceiver() {
 2 
 3             @Override
 4             public void onReceive(Context arg0, Intent intent) {
 5                                 // TODO Auto-generated method stub
 6                  
 7                 String action = intent.getAction();
 8                // When discovery finds a device
 9                if (BluetoothDevice.ACTION_FOUND.equals(action)) {
10                  // Get the BluetoothDevice object from the Intent
11                  BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
12                   mDevice = device;
13 } 14 } 15 };

2 使用SDP协议来获得被发现设备的Service UUID

 

public boolean fetchUuidsWithSdp ()

 

该方法是异步的,当获得一个设备的UUID列表(一个设备可以有多个SERVICE)后就会发送一个intent,因此,同样需要注册一个BroadcastReceiver,在OnReceive中获得UUID列表,当然通常一个设备只提供一个SERVICE。ps:一般的Bluetooth serial board的UUID为“00001101-0000-1000-8000-00805F9B34FB”,可以直接使用。

private final BroadcastReceiver mReceiveruuid = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                   BluetoothDevice deviceExtra = intent.getParcelableExtra("android.bluetooth.device.extra.DEVICE");
                Parcelable[] uuidExtra = intent.getParcelableArrayExtra("android.bluetooth.device.extra.UUID");
                Log.d(TAG,"uuidExtra.length="+uuidExtra.length);
                Log.d(TAG,"uuid = "+uuidExtra[0].toString());
                //Parse the UUIDs and get the one you are interested in
            }
        }; 

 

3 使用获得的UUID与设备建立连接

 

public BluetoothSocket createRfcommSocketToServiceRecord (UUID uuid)

 

posted on 2012-08-11 20:41  acrux2  阅读(1017)  评论(0)    收藏  举报

导航