蓝牙四大必须任务:
1.设置蓝牙
2.查找局部区域内的配对设备,或可用设备
3.连接设备
4.再设备之间传输数据
蓝牙权限:
BLUETOOTH,
ACCESS_FINE_LOCATION //android 9, API 28
ACCESS_COARSE_LOCATION // < android9
借助远程设备的已知 MAC 地址,您可以随时向其发起连接,而无需执行发现操作
是先看了别人写的测试apk,蓝牙wifi测试这些,然后发现别人写的思路完全就是套路。哈哈。
程序基本步骤就是google开发者这个网站上写的。
https://developer.android.google.cn/guide/topics/connectivity/bluetooth
然后自己也敲了一遍代码,然后提取一些记录一下。
步骤:
/*********************************
*
* 开启蓝牙的两种方式
*
* *********************************/
1.
if (!mBluetoothAdapter.isEnabled()) {
mBluetoothAdapter.enable();
}
2.
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
/*********************************
*
* step 1, 开启蓝牙,获得适配器
*
* *********************************/
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (bluetoothAdapter == null) {
Log.d("QYC", "Device doesn't support Bluetooth");
}
if (!bluetoothAdapter.isEnabled()) {
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivity(enableBtIntent);
}
/*********************************
*
* step2,检查已连接过的设备
*
* *********************************/
Set<BluetoothDevice> pairedDevices = bluetoothAdapter.getBondedDevices();
if (pairedDevices.size() > 0) {
// There are paired devices. Get the name and address of each paired device.
for (BluetoothDevice device : pairedDevices) {
String deviceName = device.getName();
String deviceHardwareAddress = device.getAddress(); // MAC address
Log.d("QYC", "qyc1, deviceName == " + deviceName);
Log.d("QYC", "qyc1, deviceHardwareAddress == " + deviceHardwareAddress);
}
}
/*********************************
*
* step3,注册广播接收者,发现新设备
*
* *********************************/
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(receiver, filter);
if (bluetoothAdapter.isDiscovering()) {
bluetoothAdapter.cancelDiscovery();
}
bluetoothAdapter.startDiscovery();
}//end onCreate
private final BroadcastReceiver receiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.d("QYC", "qyc, action == " + action);
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
// Discovery has found a device. Get the BluetoothDevice
// object and its info from the Intent.
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
String deviceName = device.getName();
String deviceHardwareAddress = device.getAddress(); // MAC address
Log.d("QYC", "qyc, deviceName == " + deviceName);
Log.d("QYC", "qyc, deviceHardwareAddress == " + deviceHardwareAddress);
}
}
};
Bluetooth pairing method:
Pairing via reflection call:
Bluetooth pairing method: