退出应用并重新启动后,我停止获取<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="SumoSelect" tabindex="0">
<select style="display: none;" class="popupShowOnAll" id="ddlFee" multiple="Multiple" name="ddlFee3923"></select>
<p class="CaptionCont SlectBox">
<span>Lender Discount Fee</span>
</p>
</div>
。
以下是我与ble设备配对的步骤。
onCharacteristicChanged
obj,我在应用启动时执行bluetoothGatth
。blueToothGatt.connect
onConnectionStateChange
后,我致电STATE_CONNECTED
blueToothGatt.discover
回调中,我将获取并保留我关心的服务和特征。然后我将调用onServicesDiscovered
并写入描述符以启用通知。blueToothGatt.setCharacteristicNotification
了。onCharacteristicChange
,我的设备服务无法绑定...我将在onDestroy
回调中执行关闭并致电unbind
以停止服务。现在,如果我重新启动应用程序。我将执行相同的步骤1-4,但这次selfstop
周围没有接到电话,我也尝试在关闭前断开连接......但这没有帮助(我注意到的一件事是,如果设备在重新启动时未配对/断开连接,则会出现问题,但是如果关闭BLE设备电源并在重新启动应用程序之前将其重新打开,那么我会得到回调onCharacteristicChange
就好了。这似乎设备正在保留一些阻止onCharacteristicChanged
来电的设置。)
对此的任何见解将不胜感激。谢谢!
答案 0 :(得分:0)
我找到了解决方法。基本上bluettooth缓存最后一个句柄,因此发现服务永远不会被触发。连接后,您需要清除设备缓存。
How to programmatically force bluetooth low energy service discovery on Android without using cache