【发布时间】:2014-11-20 12:50:20
【问题描述】:
我现在正在android开发中使用新的BLE api。
基本思路是使用蓝牙扫描结果来膨胀recyclerview(list);
我在谷歌开发者上关注了BLE guide
现在我有两个问题:
1.onBatchScanResults监听器永远不会被触发,但是onScanResult效果很好,是不是因为扫描仪只感应到附近的1个传感器?
- 与其他应用程序相比,我的 BLE 扫描仪要慢得多。
以下是两个核心函数的代码sn-p。
private void scanBLE(boolean enable) {
final BluetoothLeScanner mBluetoothLeScanner = mBluetoothAdapter.getBluetoothLeScanner();
if (enable) {
mScanning = true;
mBluetoothLeScanner.startScan(mScanCallback);
} else {
if (mScanning) {
mScanning = false;
mBluetoothLeScanner.stopScan(mScanCallback);
}
}
Log.i(TAG, "now the scanning state is" + mScanning);
}
// Device scan callback.
private ScanCallback mScanCallback =
new ScanCallback() {
public void onScanResult(int callbackType, android.bluetooth.le.ScanResult result) {
addBeaconTolist(result, beaconsList);
mAdapter.notifyDataSetChanged();
};
public void onScanFailed(int errorCode) {
Log.i(TAG, "error code is:" + errorCode);
};
public void onBatchScanResults(java.util.List<android.bluetooth.le.ScanResult> results) {
Log.i(TAG, "event linstener is called!!!!");
Log.i(TAG, "batch result are:" + results);
beaconsList.clear();
for (int i = 0; i < results.size(); i++) {
ScanResult result = results.get(i);
addBeaconTolist(result, beaconsList);
}
mAdapter.notifyDataSetChanged();
};
};
在 MainFragment 中如下:
beaconsList = new ArrayList<BeaconsInfo>();
mAdapter = new BeaconsAdapter(beaconsList);
mRecyclerView.setAdapter(mAdapter);
scannBLE(true);
【问题讨论】:
标签: java android callback bluetooth-lowenergy ibeacon