Android蓝牙开发SPP协议通信

  最近项目中使用到蓝牙SPP协议通信,然后在网上看了很多资料,进行学习使用,为了加深印象,做个简单的整理。

1、使用蓝牙权限
< uses-permission android:name="android.permission.BLUETOOTH" /> 
< uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> 

2、蓝牙核心类BluetoothAdapter


     代表本地的蓝牙适配器设备。BluetoothAdapter类让用户能执行基本的蓝牙任务。例如:初始化设备的搜索,查询可匹配的设备集,使用一个已知的MAC地址来初始化一个BluetoothDevice类,创建一个 BluetoothServerSocket类以监听其它设备对本机的连接请求等。

  为了得到这个代表本地蓝牙适配器的 BluetoothAdapter类,调用getDefaultAdapter()这一静态方法。这是所有蓝牙动作使用的第一步。当拥有本地适配器以后,用户可以获得一系列的BluetoothDevice对象,这些对象代表所有拥有getBondedDevice()方法的已经匹配的设备;用 startDiscovery()方法来开始设备的搜寻;或者创建一个BluetoothServerSocket类,通过 listenUsingRfcommWithServiceRecord(String, UUID)方法来监听新来的连接请求。


打开系统的蓝牙设置面板

Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);

startActivity(intent);

开启蓝牙

adapter.enable();

关闭蓝牙

adapter.disable();

设置对别的设备可见

Intent discoveryIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE); 

discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);//设置持续时间(最多300秒)

搜索蓝牙

adapter.startDiacovery(),当在代码中调用了该方法时,系统会发送广播ACTION_FOUND:找到设备,我们可以在代码中注册一个广播,用来接受系统发送的广播。

// 注册BroadcastReceiver 
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND); 
registerReceiver(mReceiver, filter); // 不要忘了之后解除绑定 


// 创建一个接收ACTION_FOUND广播的BroadcastReceiver 
private final BroadcastReceiver mReceiver = new BroadcastReceiver() { 
    public void onReceive(Context context, Intent intent) { 
        String action = intent.getAction(); 
        // 发现设备 
        if (BluetoothDevice.ACTION_FOUND.equals(action)) { 
            // 从Intent中获取设备对象 
            BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); 
            // 将设备名称和地址放入array adapter,以便在ListView中显示 
            mArrayAdapter.add(device.getName() + "\n" + device.getAddress()); 
        } 
    } 
}; 





你可能感兴趣的:(Android蓝牙)