(1)Android手机一般以客户端的角色主动连接SPP协议设备(接上蓝牙模块的数字传感器),连接流程是:
1.使用registerReceiver注册BroadcastReceiver来获取蓝牙状态、搜索设备等消息;
2.使用BlueAdatper的搜索;
3.在BroadcastReceiver的onReceive()里取得搜索所得的蓝牙设备信息(如名称,MAC,RSSI);
4.通过设备的MAC地址来建立一个BluetoothDevice对象;
5.由BluetoothDevice衍生出BluetoothSocket,准备SOCKET来读写设备;
6.通过BluetoothSocket的createRfcommSocketToServiceRecord()方法来选择连接的协议/服务,这里用的是SPP(UUID:00001101-0000-1000-8000-00805F9B34FB);
7.Connect之后(如果还没配对则系统自动提示),使用BluetoothSocket的getInputStream()和getOutputStream()来读写蓝牙设备。
****************注意:对于UUID,必须使用Android的SSP(协议栈默认)的UUID:00001101-0000-1000-8000-00805F9B34FB才能正常和外部的,也是SSP串口的蓝牙设备去连接。
(2)添加权限:
1 <uses-permission android:name="android.permission.BLUETOOTH"></uses-permission> 2 <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission>
(3)BluetoothAdapter类:
BluetoothAdapter类简单点来说就是代表了本设备(手机、电脑等)的蓝牙适配器对象,通过它我们可以蓝牙设备进行基本开发了。
主要有如下功能:
1、开关蓝牙设备
2、扫描蓝牙设备
3、设置/获取蓝牙状态信息,例如:蓝牙状态值、蓝牙Name、蓝牙Mac地址等;
BluetoothAdapter初始化并提示打开蓝牙使用:
1 private BluetoothAdapter mBluetoothAdapter; 2 mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 3 if (!mBluetoothAdapter.isEnabled()) { 4 //弹出对话框提示用户是后打开 5 Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 6 startActivity(intent); 7 // startActivityForResult(intent, REQUEST_ENABLE); 8 //不做提示,强行打开 9 // mBluetoothAdapter.enable(); 10 }
创建监听蓝牙状态的广播:
1 BroadcastReceiver mFoundReceiver = new BroadcastReceiver() { 2 3 public void onReceive(Context context, Intent intent) { 4 String action = intent.getAction(); 5 //