在我的Android应用程序中,它从BLE设备收集数据并将其绘制到图表中,我使用处理程序进行各种调用,其中一个是读取RSSI值。 该应用程序运行正常,但40分钟后数据停止,显然图表停止绘制,我反复得到以下异常(每次设置处理程序以调用RSSI读取:
I/HANDLER:: MSG_CHECK_RSSI
D/BluetoothGatt: readRssi() - device: 03:80:E1:55:34:XX
E/BluetoothGatt: android.os.DeadObjectException
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(Binder.java:628)
at android.bluetooth.IBluetoothGatt$Stub$Proxy.readRemoteRssi(IBluetoothGatt.java:1147)
at android.bluetooth.BluetoothGatt.readRemoteRssi(BluetoothGatt.java:1318)
at com.nanovation.senseguard_monitor.SensorPlotting.handleMessage(SensorPlotting.java:715)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:154)
at android.os.HandlerThread.run(HandlerThread.java:61)
D/BluetoothAdapter: onBluetoothStateChange: up=true
onBluetoothStateChange: Bluetooth is on
D/BluetoothGatt: onBluetoothStateChange: up=true
onBluetoothStateChange: Bluetooth is on
D/BluetoothGatt: onBluetoothStateChange: up=true
onBluetoothStateChange: Bluetooth is on
D/BluetoothGatt: onBluetoothStateChange: up=true
onBluetoothStateChange: Bluetooth is on
D/BluetoothGatt: onBluetoothStateChange: up=true
onBluetoothStateChange: Bluetooth is on
D/BluetoothGatt: onBluetoothStateChange: up=true
onBluetoothStateChange: Bluetooth is on
D/BluetoothGatt: onBluetoothStateChange: up=true
onBluetoothStateChange: Bluetooth is on
D/BluetoothGatt: onBluetoothStateChange: up=true
onBluetoothStateChange: Bluetooth is on
I/HANDLER:: MSG_CHECK_RSSI
D/BluetoothGatt: readRssi() - device: 03:80:E1:55:34:XX
E/BluetoothGatt: android.os.DeadObjectException
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(Binder.java:628)
at android.bluetooth.IBluetoothGatt$Stub$Proxy.readRemoteRssi(IBluetoothGatt.java:1147)
at android.bluetooth.BluetoothGatt.readRemoteRssi(BluetoothGatt.java:1318)
at com.nanovation.senseguard_monitor.SensorPlotting.handleMessage(SensorPlotting.java:715)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:154)
at android.os.HandlerThread.run(HandlerThread.java:61)
我在处理程序中的代码:
case MSG_CHECK_RSSI:
logger.finer("MSG_CHECK_RSSI");
Log.i(HANDLER_TAG, "MSG_CHECK_RSSI");
if (mBluetoothGatt != null)
{
try
{
mBluetoothGatt.readRemoteRssi();
}
catch (Exception e)
{
e.printStackTrace();
Log.i("read rssi", "mBluetoothGatt.readRemoteRssi() problem");
}
}
checkRssi();
break;
通话方法:
private void checkRssi()
{
//check rssi every X time
bleHandler.sendEmptyMessageDelayed(MSG_CHECK_RSSI, 1000);
}
即使它在try catch块中,catch块也永远不会被调用。 我尝试打印关于gatt状态的日志:
应用程序响应迅速而且没有卡住,只是数据停止流动并且rssi异常不断出现(应用程序不会粉碎)。
我不知道还有什么要检查:(
**************************编辑******************** ******** 我尝试将rssi调用设置为每5秒(而不是1),它没有帮助。 当我评论rssi调用问题没有发生时(我需要更长时间测试),但我想问题是rssi调用。 有什么建议吗?