0

Bluetooth デバイスが iPhone に接続されたり切断されたりするタイミングを観察しようとしています。基本的に、対象の特定のデバイスが接続されたときに反応する必要があります (必ずしもフォアグラウンドである必要はありません)。ACL_CONNECTEDAndroid では、およびACL_DISCONNECTEDアクションを受け取ることができます。

iOS でのこの動作に相当するものは何ですか?

CoreBluetoothBluetooth LE 用であることを発見する前に最初に を調べ、次に を調べましたが、ピッカーExternalAccessoryに MFI デバイスしか表示されず、ユーザーがピッカーを通過する必要があるようです。私たちが見つけた唯一の有効な方法は、Apple自体を経由することです。これは、セクション 2.5 のAppStore ガイドラインに従って禁止されています。おそらく、Apple エコシステムを完全に制御できるようにするためです。BluetoothManager


同等の 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

0

iOS のようなグローバル イベントを直接リッスンすることはできません。すべてのアプリは独自のサンドボックスにあり、相互にアクセスできません。

つまり、 のretrieveConnectedPeripheralsWithServices:メソッドを使用して、CBCentralManager現在接続されているデバイスのリストを取得できます。その関数を定期的に呼び出して変更を確認することで、探しているものを実現できます。

于 2015-05-22T02:07:09.860 に答える