- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
该应用程序面向 22 位用户,最低版本为 18,并且可以在 Lollipop 上正常运行。启动 Marshmallow 应用程序需要 BLE 的“精细”和“粗略”权限。我已经添加了它们,但没有触发回调。
安卓 list :
...
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>
<!-- ble -->
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<!-- for Android M BLE requires the following permissions too -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
发现是通过 UUID 过滤完成的:
this.adapter.startLeScan(new UUID[]{this.serviceUUID}, this.discoveryListener);
回调:
@Override
public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {
Log.d(TAG, "Bluetooth device found: " + device);
foundBluetoothDevices.add(device);
}
我可以看到找到了设备,但没有触发回调:
12-03 12:34:19.266 9003-9003/com.company.project D/FindCamerasTask﹕ Discovery started
12-03 12:34:19.266 9003-9003/com.company.project D/BluetoothAdapter﹕ startLeScan(): [Ljava.util.UUID;@dd832eb
12-03 12:34:19.268 9003-9003/com.company.project D/BluetoothAdapter﹕ STATE_ON
12-03 12:34:19.270 4362-4375/? D/BtGatt.GattService﹕ registerClient() - UUID=92d098d2-0da1-4908-8194-14c504680fae
12-03 12:34:19.271 4362-4382/? D/BtGatt.GattService﹕ onClientRegistered() - UUID=92d098d2-0da1-4908-8194-14c504680fae, clientIf=5
12-03 12:34:19.271 9003-9064/com.company.project D/BluetoothLeScanner﹕ onClientRegistered() - status=0 clientIf=5
12-03 12:34:19.271 4362-4401/? D/BtGatt.GattService﹕ start scan with filters
12-03 12:34:19.273 4362-4385/? D/BtGatt.ScanManager﹕ handling starting scan
12-03 12:34:19.288 4362-4382/? D/BtGatt.GattService﹕ onScanFilterEnableDisabled() - clientIf=5, status=0, action=1
12-03 12:34:19.288 4362-4382/? D/BtGatt.ScanManager﹕ callback done for clientIf - 5 status - 0
12-03 12:34:19.288 4362-4385/? D/BtGatt.ScanManager﹕ addFilterToController: 2
12-03 12:34:19.302 4362-4382/? D/BtGatt.GattService﹕ onScanFilterConfig() - clientIf=5, action = 0 status = 0, filterType=2, availableSpace=47
12-03 12:34:19.302 4362-4382/? D/BtGatt.ScanManager﹕ callback done for clientIf - 5 status - 0
12-03 12:34:19.302 4362-4385/? D/BtGatt.ScanManager﹕ configureFilterParamter 500 10000 1 0
12-03 12:34:19.316 4362-4382/? D/BtGatt.GattService﹕ onScanFilterParamsConfigured() - clientIf=5, status=0, action=0, availableSpace=15
12-03 12:34:19.316 4362-4382/? D/BtGatt.ScanManager﹕ callback done for clientIf - 5 status - 0
12-03 12:34:19.316 4362-4385/? D/BtGatt.ScanManager﹕ configureRegularScanParams() - queue=1
12-03 12:34:19.317 4362-4385/? D/BtGatt.ScanManager﹕ configureRegularScanParams() - ScanSetting Scan mode=2 mLastConfiguredScanSetting=-2147483648
12-03 12:34:19.317 4362-4385/? D/BtGatt.ScanManager﹕ configureRegularScanParams - scanInterval = 8000configureRegularScanParams - scanWindow = 8000
12-03 12:34:19.318 4362-4382/? D/BtGatt.GattService﹕ onScanParamSetupCompleted : 0
12-03 12:34:19.466 4362-4382/? D/bt_btif_gattc﹕ btif_gattc_update_properties BLE device name=Device-00W15380138 len=17 dev_type=2
12-03 12:34:19.701 4362-4382/? D/bt_btif_gattc﹕ btif_gattc_update_properties BLE device name=Device-20154300041 len=17 dev_type=2
12-03 12:34:21.021 4362-4382/? D/bt_btif_gattc﹕ btif_gattc_update_properties BLE device name=Device-20154300015 len=17 dev_type=2
12-03 12:34:39.278 9003-9003/com.company.project W/BleRpcConnectionFactory﹕ Discovery timeout fired (20000)
12-03 12:34:39.279 9003-9003/com.company.project D/BluetoothAdapter﹕ stopLeScan()
12-03 12:34:39.324 4362-4382/? D/BtGatt.GattService﹕ onScanFilterParamsConfigured() - clientIf=5, status=0, action=1, availableSpace=16
12-03 12:34:39.324 4362-4382/? D/BtGatt.ScanManager﹕ callback done for clientIf - 5 status - 0
12-03 12:34:39.324 4362-4385/? D/BtGatt.ScanManager﹕ configureRegularScanParams() - queue=0
12-03 12:34:39.324 4362-4385/? D/BtGatt.ScanManager﹕ configureRegularScanParams() - ScanSetting Scan mode=-2147483648 mLastConfiguredScanSetting=2
12-03 12:34:39.324 4362-4385/? D/BtGatt.ScanManager﹕ configureRegularScanParams() - queue emtpy, scan stopped
我已经检查了在 Android > 设置 > 应用 > 权限中授予的“位置”权限。在 Nexus 9 上测试。有什么想法吗?
附言。我试过 API 21 adapter.getBluetoothLeScanner().startScan(filters, scanSettings, internalScanCallbackAPI21);
仍然没有运气 - 类似的日志但没有触发回调。
PPS。如果设置报告延迟,我让它工作:
ScanSettings scanSettings = new ScanSettings.Builder()
.setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
.setReportDelay(discoveryDelay) // 0 for immediate callback (not working for me), > 0 for batch mode
.build();
如果为立即回调设置 0
仍然没有触发监听器。
最佳答案
我必须设置 report delay = 1,因为没有为 0 触发回调(立即回调):
ScanSettings scanSettings = new ScanSettings.Builder()
.setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
.setReportDelay(1) // '0' or not setting any value will lead to callback not fired!
.build();
请随意提出更好的解决方案,而不是这个“肮脏的小技巧”。
关于即使具有位置权限,也不会触发 Android BLE startDiscovery() 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34060622/
import android.app.Service; import android.bluetooth.BluetoothAdapter; import android.bluetooth.Blue
目标:构建一个 Android 应用程序,用于发现范围内的 BT 设备的名称和地址,并将它们的值提交给网络服务。 BT 设备以前没有绑定(bind)到主机设备,我只是想边走边轮询所有内容。 我做了什么
我试图发现附近的蓝牙设备,但 startDiscovery() 总是返回 false,就好像它不工作一样。因此它无法找到设备。 我看到除了蓝牙和 Bluetooth_Admin 之外,我必须包含 Co
我正在开发一款搜索可发现设备并将其显示为按钮的应用。当调用 startDiscovery() 时,根据我目前使用 BroadcastReceiver 和 ACTION_DISCOVERY_FINISH
我是 android 新手,我正在制作一个具有蓝牙功能的应用程序。我可以设置蓝牙适配器,获取我自己的设备信息,但我无法使用 startdiscovery 来发现蓝牙设备。当我开始扫描时,它什么也不做。
我遇到了一个问题。我尝试了 Stack Overflow 和其他网站的一些提示。 我想编写一个应用程序,它搜索周围的所有蓝牙设备,如果找到匹配的设备(MAC地址作为引用),应用程序将开始连接。 因此,
我正在尝试使用 dbus-send 与 Bluez 5.44 进行交互命令行工具。我似乎无法让它正确地开始发现,尽管当我使用 bluetoothctl 的 scan on 和 scan off 命令时
我正在尝试使用 dbus-send 与 Bluez 5.44 进行交互命令行工具。我似乎无法让它正确地开始发现,尽管当我使用 bluetoothctl 的 scan on 和 scan off 命令时
我正在尝试编写一些代码,可以扫描附近的蓝牙设备。我觉得理解起来有点复杂,所以我寻求帮助。 首先,我将解释我的场景。我从 bluez 适配器 API (https://git.kernel.org/pu
该应用程序面向 22 位用户,最低版本为 18,并且可以在 Lollipop 上正常运行。启动 Marshmallow 应用程序需要 BLE 的“精细”和“粗略”权限。我已经添加了它们,但没有触发回调
我在bluez-5.36 库 中搜索了StartDiscovery() 方法,但找不到。 有人能告诉我这个方法是在哪里实现的吗? 它在“bluez-5.36/doc/”目录的“adapter-api.
我在使用 startDiscovery() 时遇到问题。这是问题所在,我已经像这样向我的 BroadcastReceiver 注册了以下 Intents: IntentFilter filterFou
我有一个使用蓝牙并连接到设备的应用程序,找不到任何使用 BluetoothAdapter.getDefaultAdapter().startDiscovery() 的设备;它在发现之前运行良好。也试过
本文整理了Java中com.zsmartsystems.zigbee.app.discovery.ZigBeeDiscoveryExtension.startDiscovery()方法的一些代码示例,
本文整理了Java中com.zsmartsystems.zigbee.app.discovery.ZigBeeNodeServiceDiscoverer.startDiscovery()方法的一些代码
我是一名优秀的程序员,十分优秀!