最近在进行Android Bluetooth 的学习,在学习的过程中参考了Mars老师关于蓝牙的视频教程,现对学习过程加以小结:
1. 获取本地蓝牙设备,即判断本机是否有蓝牙设备:
BluetoothAdapter madapter = BluetoothAdapter.getDefaultAdapter();
2.判断本机蓝牙是否打开与打开蓝牙
madapter.isEnable() true为打开,否则false
if(!madapter.isEnable())
{
Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivity(intent); //该intent启动android系统自带的activity
//或者:madapter.enable() 不用提示,直接打开
}
3.得到所有跟本机已经配对的蓝牙设备对象
set <BluetoothDevice> devices = adapter.getBondedDevices();
注:本机蓝牙设备未打开时,也可以得到跟本机已配对的蓝牙对象
4.设置本机蓝牙设备的可见性
Intent makediscoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
makediscoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION , 200); //参数二为本机蓝牙对外可见的时间, 超过300则为300
startActivity(makediscoverableIntent); //启动系统自带的activity传递intent
5.扫描周围的蓝牙设备
madapter.startDiscovery(); //每扫描到一个bluetooth设备,会发送一个广播
接收广播:
IntentFilter intentFilter = new IntentFilter (BluetoothDevice.ACTION_FOUND);
BluetoothReceiver bluetoothReceiver = new BluetoothReceiver();
registerReceiver(bluetoothReceiver , intentFilter); //注册广播接收器
class BluetoothReceiver extends BroadCastReceivfer
{
public void onReceive(Context context , Intent intent){
String action = intent.getAction();
if(BluetoothDevice.ACTION_FOUND.equals(action))
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
}
}
6.蓝牙建立连接
连接分为客户端与服务器端
服务器端:
BluetoothServerSocket serverSocket = madapter.ListenUsingRfcommWithServiceRecord(serverSocketName , UUID);
serverSocket.accept();
客户端:
BluetoothSocket clientSocket = devices.createRfcommSocketToServiceRecord(UUID);
clientSocket.connect();