- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我试图在我的 Android 应用程序中多次调用 startLeScan 方法,它第一次扫描 BLE 设备,从第二次开始它无法扫描设备。我在我的应用程序中进行了循环扫描,每 10 秒停止一次扫描并重新开始。这里有一些日志显示了我的应用程序的行为方式。
05-20 00:45:31.146 15841-15841/XXXXX D/BluetoothAdapter﹕ stopLeScan()
05-20 00:45:31.147 15841-15841/XXXXX D/BluetoothAdapter﹕ startLeScan(): null
05-20 00:45:31.160 15841-15852/XXXXX D/BluetoothAdapter﹕ onClientRegistered() - status=133 clientIf=0
05-20 00:45:31.161 15841-15841/XXXXX D/BluetoothAdapter﹕ stopLeScan()
05-20 00:45:31.165 15841-15841/XXXXX D/BluetoothAdapter﹕ startLeScan(): null
05-20 00:45:31.169 15841-15909/XXXXX D/BluetoothAdapter﹕ onClientRegistered() - status=0 clientIf=7
05-20 00:45:31.171 15841-15841/XXXXX D/BluetoothAdapter﹕ stopLeScan()
05-20 00:45:31.175 15841-15841/XXXXX D/BluetoothAdapter﹕ startLeScan(): null
05-20 00:45:31.179 15841-15853/XXXXX D/BluetoothAdapter﹕ onClientRegistered() - status=0 clientIf=8
05-20 00:45:31.181 15841-15841/XXXXX D/BluetoothAdapter﹕ stopLeScan()
05-20 00:45:31.185 15841-15841/XXXXX D/BluetoothAdapter﹕ startLeScan(): null
05-20 00:45:31.189 15841-18615/XXXXX D/BluetoothAdapter﹕ onClientRegistered() - status=0 clientIf=6
05-20 00:45:31.191 15841-15841/XXXXX D/BluetoothAdapter﹕ stopLeScan()
05-20 00:45:31.192 15841-15841/XXXXX D/BluetoothAdapter﹕ startLeScan(): null
05-20 00:45:31.202 15841-15852/XXXXX D/BluetoothAdapter﹕ onClientRegistered() - status=133 clientIf=0
05-20 00:45:31.203 15841-15841/XXXXX D/BluetoothAdapter﹕ stopLeScan()
05-20 00:45:31.207 15841-15841/XXXXX D/BluetoothAdapter﹕ startLeScan(): null
05-20 00:45:31.211 15841-15909/XXXXX D/BluetoothAdapter﹕ onClientRegistered() - status=0 clientIf=10
我的 BluetoothLEScannerForMR2.java 中有这些函数调用,当我多次调用 startScan 方法时,我得到了上述日志。
protected void startScan() {
if (getBluetoothAdapter() != null) {
if (getBluetoothAdapter().isEnabled()) {
getBluetoothAdapter().startLeScan(mLeScanCallback);
mScanStopTime = new Date().getTime() + mScanPeriod;
mScanning = true;
handleIntervalScanning();
}
}
}
protected void stopScan() {
if (getBluetoothAdapter() != null) {
if (getBluetoothAdapter().isEnabled()) {
getBluetoothAdapter().stopLeScan(mLeScanCallback);
mScanning = false;
}
}
}
private void handleIntervalScanning() {
long msUntilNextStop = mScanStopTime - (new Date().getTime());
if (msUntilNextStop > mScanPeriod)
msUntilNextStop = mScanPeriod;
if (msUntilNextStop > 0) {
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
handleIntervalScanning();
}
}, msUntilNextStop);
} else {
if (getBluetoothAdapter() != null) {
if (getBluetoothAdapter().isEnabled()) {
if (mScanning) {
getBluetoothAdapter().stopLeScan(mLeScanCallback);
startScan();
}
}
}
}
}
最佳答案
这是一篇旧帖子,但我想我会发表评论以防其他人需要帮助。在您的代码中,您获得了 BlueToothAdapter 的一个实例并调用了 startscan 方法……但是您没有保留该适配器实例。然后在您的 stopscan 方法中,您创建一个蓝牙适配器的新实例并调用它的停止扫描。我认为您需要在“获取”适配器时将适配器保存到内存变量,然后使用适配器的相同实例(通过内存变量)停止扫描。
关于android - 多次调用 startLeScan 方法不能正确扫描 BLE 设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30335534/
现在我正在研究 BLE。我发现一个问题,它向我显示 startLeScan(): null 的日志并且扫描也不起作用我为此尝试了一切并搜索了 startLeScan(): null 但还没有得到任何解
目标是读取蓝牙 LE 心率监测器的值。 使用谷歌的示例,我得到了 private void scanLeDevice(final boolean enable) { if (enable) {
Bluetooth LE 在 Android 4.3 中引入,因此我正在使用两个 Android 设备,并且我的两个设备都支持 API 版本 4.4。 2 甚至,我已经配对了两个设备,但仍然没有在列表
我正在开发一个使用低功耗蓝牙的安卓应用程序。我使用类 BluetoothAdapter 但现在在 API-21 中类是 BluetoothLeScanner 我的旧代码正在实现接口(interface
我试图在我的 Android 应用程序中多次调用 startLeScan 方法,它第一次扫描 BLE 设备,从第二次开始它无法扫描设备。我在我的应用程序中进行了循环扫描,每 10 秒停止一次扫描并重新
我的目标是找到附近的蓝牙设备(LE 设备和“经典”),以便将当前可见的附近设备与我的应用使用它执行的某些功能相关联。 (不是一个或多个特定设备,而是所有设备!!!) 我所知道的: startLeSca
我想用 startLeScan(UUID[] serviceUuids, LeScanCallback callback) 方法扫描 BLE 设备,现在我有一个 UUID,它是一个 16 位的值,例如
我正在开发一个 BluetoothLE 传感器设备,为此我需要形成一对多的数据广播。根据规范,外围设备可能只有一个主设备,并且由于我正在设计的芯片和堆栈的限制,一个主设备只能有三个从设备。据我了解,A
我正在努力寻找阻塞我的 UI 线程的具体操作,我已经尝试了几个调度程序操作符,但我不确定如何让它工作。 我有一个带按钮的 UI,onClicked 正在启动蓝牙扫描并使用类似日志的字符串更新 text
我在使用 startLeScan( new UUID[]{ MY_DESIRED_128_BIT_SERVICE_UUID }, callback ) 时遇到问题在我的 Nexus 4 上新引入的 A
我看到 stopLeScan() 和 startLeScan() 在 Android 5.1.1 中已弃用。我在替换 stopLeScan() 和 startLeScan() 方法时遇到问题。这是我的
我是一名优秀的程序员,十分优秀!