0

我们正在尝试观察蓝牙设备何时与 iPhone 连接和断开连接。当某些感兴趣的设备连接时,我们本质上想要做出反应(不一定在前台)。在 Android 中,您可以接收ACL_CONNECTEDACL_DISCONNECTED操作。

在 iOS 上与此行为等效的是什么?

在发现它是用于蓝牙 LE 之前,我首先查看了CoreBluetooth它,然后查看了ExternalAccessory,但它仅在选择器中显示 MFI 设备,并且似乎需要用户通过选择器。我们发现唯一可行的方法是通过 AppleBluetoothManager自己,根据第 2.5 节中的AppStore 指南,这是禁止的,大概是为了让他们可以完全控制 Apple 生态系统。


等效的Android代码:

MyReceiver.java

public class MyReceiver extends BroadcastReceiver {

  @Override
  public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(BluetoothDevice.ACL_CONNECTED)) {
      //do stuff
    } else if (intent.getAction().equals(BluetoothDevice.ACL_DISCONNECTED)) {
      //do stuff
    }
  }

}

AndroidManifext.xml

<receiver
  android:name="com.myapp.MyReceiver"
  android:exported="true"
  android:enabled="true"
  android:label="MyReceiver">
  <intent-filters>
      <action android:name="android.bluetooth.device.action.ACL_CONNECTED" />
      <action android:name="android.bluetooth.device.action.ACL_CONNECTED" />
    </intent-filters>
</receiver>
4

2 回答 2

1

发布了一个名为 Beetee 的演示应用程序,它展示了蓝牙经典在 iOS 上的工作方式以及全球事件是什么。但是这个私有框架不是 AppStore 抱怨的!

于 2015-05-24T09:28:56.497 回答
0

你不能像在 iOS 中那样直接监听全局事件,所有应用程序都在自己的沙箱中,彼此无权访问。

也就是说,您可以使用 的retrieveConnectedPeripheralsWithServices:方法CBCentralManager来获取当前连接的设备列表。定期调用该函数并检查更改可以实现您正在寻找的内容。

于 2015-05-22T02:07:09.860 回答