android的蓝牙操作无非就几种:打开蓝牙、关闭蓝牙、提示用户打开关闭蓝牙、扫描已配对过的蓝牙设备、扫描周围可见的蓝牙设备、设置蓝牙的可见性。
主要的类:BluetoothAdapter(代表本地蓝牙设备)、BluetoothDevice(代表远程蓝牙设备)
使用蓝牙需要的权限:
<!-- 必须 -->
<uses-permission
android:name="android.permission.BLUETOOTH"/>
<!-- 设置可见性必须 -->
<uses-permission
android:name="android.permission.BLUETOOTH_ADMIN"/>
1、打开蓝牙:
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
adapter.enable();
2、关闭蓝牙:
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
adapter.disable();
3、提示用户打开关闭蓝牙:
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
//如果Intent传参为BluetoothAdapter.ACTION_REQUEST_DISABLE,则提示关闭
Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivity(intent);
4、扫描已配对过的蓝牙设备:
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
//要扫描已配对的设备,必须先打开蓝牙
if(!adapter.isEnabled()) adapter.enable();
Set<BluetoothDevice> set = adapter.getBondedDevices();
//可通过配对过的蓝牙设备对象,进行一些操作,如果获得他们的max地址
Iterator<BluetoothDevice> it = set.iterator();
String addresses = "";
while(it.hasNext()) {
BluetoothDevice device = (BluetoothDevice)it.next();
addresses += device.getAddress() + "\n";
}
5、扫描周围可见的蓝牙设备:
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
adapter.startDiscovery ();
实际上,每次扫描时系统都会发出广播,有三种,分别表示开始扫描、扫描到可见设备、结束扫描。Action为有BluetoothDevice.ACTION_FOUND表示扫描到可见设备
这里,我写一个广播接收器去接收该广播,并打印出扫描到的可见的蓝牙设备信息(以下是onReceive方法里的代码块):
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
System.out.println(device.getAddress());
6、设置蓝牙可见性时长:
Intent i = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
i.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 400);
startActivity(i);
以下是判断蓝牙是否打开(经常会用到):
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
adapter.isEnabled()