如何在android studio应用程序启动时连接配对的蓝牙设备?

wgmfuz8q  于 2021-07-05  发布在  Java
关注(0)|答案(2)|浏览(414)

有没有办法在应用程序启动时通过蓝牙le自动连接特定设备?
在过去的几个小时里,我一直在浏览stack overflow,看到了许多类似的问题,尽管大多数问题都已经过时了,并且涉及到反射或其他我不太理解的复杂方法(这些方法我已经尝试过实现,但没有成功,因为我不太了解到底发生了什么)。
到目前为止,我已经成功地找到了设备的友好名称,尽管我不知道该在if语句中执行什么。这是我的主要活动:

protected void onCreate(Bundle savedInstanceState) {
    ...
    if (bluetoothAdapter == null) {
        Toast.makeText(getApplicationContext(),"Bluetooth not supported",Toast.LENGTH_SHORT).show();

    } else {
        Set<BluetoothDevice> pairedDevices = bluetoothAdapter.getBondedDevices();
        if(pairedDevices.size()>0){
            for(BluetoothDevice device: pairedDevices){

                if (deviceName.equals(device.getName())) {

                    //Device found!
                    //Now how do I pair it?

                    break;
                }
    ...
kqlmhetl

kqlmhetl1#

最后浏览了这个应用程序的源代码,特别是serialsocket、serialservice和seriallistener文件,这些文件彻底解决了我的问题。

ve7v8dk2

ve7v8dk22#

假设你已经成功识别了 BlueToothDevice ,您现在需要连接到gatt(generic attribute profile),它允许您传输数据。
使用 BlueToothDevice.connectGatt 方法。使用第一个重载,该方法接受 Context ,布尔值(false=直接连接,true=连接(如果可用),以及 BlueToothGhattCallback . 回调从设备接收信息。

BlueToothGatt blueToothGatt = device.connectGatt(this, false, blueToothGattCallback);

实现回调的示例:

BluetoothGattCallback blueToothGattCallback =
   new BluetoothGattCallback() 
   {
       @Override
       public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
          if(newState == BlueToothProfile.STATE_CONNECTED){ 
              /* do stuff */
          }
       }

   }

更多关于回调的细节。

相关问题