是否可以使用BLE实现广播接收器?

时间:2014-01-23 11:24:53

标签: android bluetooth broadcastreceiver

就像话题一样。我们是一些开发人员尝试使用蓝牙低功耗实现广播接收器,但我们找不到任何东西。

我们知道可以使用startDiscovery()注册一个接收器,但这似乎不适用于BLE。

这是我们错过了什么或者是否有解决此问题的方法?只要有可用于连接的设备,我们就想在隐藏的应用程序上祝酒。

我们不想将startLeScan与回调一起使用,但希望在Discovery上使用系统广播。

此外,由于我们正在制作API,因此服务不是一种选择,我们希望它能够轻松实现我们的代码。

这是我们尝试过的:

BroadcastReceiver br = new BroadcastReceiver() {
   @Override
   public void onReceive(Context context, Intent intent) {
      android.util.Log.i("Yeah", intent.toURI());
   }
};

getApplicationContext().registerReceiver(br, 
new IntentFilter(BluetoothDevice.ACTION_FOUND));

mBluetoothAdapter.startDiscovery();

1 个答案:

答案 0 :(得分:0)

android.bluetooth.BluetoothAdapter.StartDiscovery()用于发现蓝牙(非低能耗)设备。

android.bluetooth.BluetoothAdapter.startLeScan()用于发现蓝牙低功耗(BLE)设备。

如果您想从BroadcastReceiver接收蓝牙设备发现事件,那么您必须在android.bluetooth.BluetoothAdapter.LeScanCallback方法中使用Context.sendBroadcast。实现LeScanCallback是目前在Java Android API中接收BLE设备发现事件的唯一方法。