想要蓝牙通信必须明确以下几个知识点意义:
~1,检测设备是否支持蓝牙?
BluetoothAdapter badapter = BluetoothAdapter.getDefaultAdapter();//获取蓝牙适配器
badapter == null?设备不支持蓝牙:设备支持蓝牙;
~2,检测蓝牙是否开启?开启方法?
------------------------------------------------------------------------------------------
*此打开方法为静默打开需要添加两个权限:
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permisiion android:name="android.permission.BLUETOOTH_ADMIN"/>
------------------------------------------------------------------------------------------
if(!badapter.isEnable){
badapter.enable(); //开启\关闭方法为:badapter.disable();
}
~3,如何让本设备可以被其他设备发现搜索?
Intent enable = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
//3600秒为蓝牙设备可见时间
enable.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 3600);
startActivity(enable);
~4,检测蓝牙是否正在搜索周围设备方法?开启关闭蓝牙搜索周围设备方法?
badapter.isDiscovering()?开启:关闭; //检测 方法
badapter.startDiscovery(); //开启方法
badapter.cancelDiscovery(); //关闭方法
~5,蓝牙配对、连接的方法?
public static BluetoothSocket connect(BluetoothDevice device) throws IOException {
// 固定的UUID
final String SPP_UUID = "00001101-0000-1000-8000-00805F9B34FB";
UUID uuid = UUID.fromString(SPP_UUID);
BluetoothSocket socket = device.createRfcommSocketToServiceRecord(uuid);
socket.connect();
return socket;
}
~6,服务端监控的方法?
//监听此服务的1101uuid端口获取BluetoothServerSocket
bss = ba.listenUsingRfcommWithServiceRecord(Utils.NAME, Utils.uuid);
//获取BluetoothSocket
if(serverSocket!=null){
BluetoothSocket bs = bss.accept();
{
~7,BluetoothSocket和BluetoothServerSocket的区别和意义?
BluetoothSocket 是客户端socket
BluetoothServerSocket 是服务端socket
每次发送信息,只有两个角色一个是客户端c一个是服务端s,c发送信息、
s接受信息、当s想给c发送信息时,s需要accept()获取BluetoothSocket socket,
然后通过socket.getOutputStream()获取输出流write()进行传送信息。
~1,检测设备是否支持蓝牙?
BluetoothAdapter badapter = BluetoothAdapter.getDefaultAdapter();//获取蓝牙适配器
badapter == null?设备不支持蓝牙:设备支持蓝牙;
~2,检测蓝牙是否开启?开启方法?
------------------------------------------------------------------------------------------
*此打开方法为静默打开需要添加两个权限:
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permisiion android:name="android.permission.BLUETOOTH_ADMIN"/>
------------------------------------------------------------------------------------------
if(!badapter.isEnable){
badapter.enable(); //开启\关闭方法为:badapter.disable();
}
~3,如何让本设备可以被其他设备发现搜索?
Intent enable = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
//3600秒为蓝牙设备可见时间
enable.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 3600);
startActivity(enable);
~4,检测蓝牙是否正在搜索周围设备方法?开启关闭蓝牙搜索周围设备方法?
badapter.isDiscovering()?开启:关闭; //检测 方法
badapter.startDiscovery(); //开启方法
badapter.cancelDiscovery(); //关闭方法
~5,蓝牙配对、连接的方法?
public static BluetoothSocket connect(BluetoothDevice device) throws IOException {
// 固定的UUID
final String SPP_UUID = "00001101-0000-1000-8000-00805F9B34FB";
UUID uuid = UUID.fromString(SPP_UUID);
BluetoothSocket socket = device.createRfcommSocketToServiceRecord(uuid);
socket.connect();
return socket;
}
~6,服务端监控的方法?
//监听此服务的1101uuid端口获取BluetoothServerSocket
bss = ba.listenUsingRfcommWithServiceRecord(Utils.NAME, Utils.uuid);
//获取BluetoothSocket
if(serverSocket!=null){
BluetoothSocket bs = bss.accept();
{
~7,BluetoothSocket和BluetoothServerSocket的区别和意义?
BluetoothSocket 是客户端socket
BluetoothServerSocket 是服务端socket
每次发送信息,只有两个角色一个是客户端c一个是服务端s,c发送信息、
s接受信息、当s想给c发送信息时,s需要accept()获取BluetoothSocket socket,
然后通过socket.getOutputStream()获取输出流write()进行传送信息。