蓝牙四大必须任务:
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);
}
}
};
蓝牙的配对方式:
https://blog.csdn.net/u010783226/article/details/103162894?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161605394816780265469869%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=161605394816780265469869&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-103162894.pc_search_result_before_js&utm_term=%E8%93%9D%E7%89%99%E9%85%8D%E5%AF%B9
通过反射调用进行配对:
https://blog.csdn.net/u010783226/article/details/103162894?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161605394816780265469869%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=161605394816780265469869&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-103162894.pc_search_result_before_js&utm_term=%E8%93%9D%E7%89%99%E9%85%8D%E5%AF%B9
蓝牙配对方式:
https://blog.csdn.net/u010783226/article/details/103162894?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161605394816780265469869%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=161605394816780265469869&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-103162894.pc_search_result_before_js&utm_term=%E8%93%9D%E7%89%99%E9%85%8D%E5%AF%B9