BLE卡在RSSI呼叫上

时间:2018-05-31 10:51:55

标签: android bluetooth-lowenergy rssi

在我的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状态的日志:

  • 状态与之前相同:12表示“开启”。
  • mBluetoothGatt不为空。
  • 扫描模式与之前相同:21表示“可连接”。
  • isDiscovering = false
  • 连接的设备不为空且具有相同的mac地址。

应用程序响应迅速而且没有卡住,只是数据停止流动并且rssi异常不断出现(应用程序不会粉碎)。

我不知道还有什么要检查:(

**************************编辑******************** ******** 我尝试将rssi调用设置为每5秒(而不是1),它没有帮助。 当我评论rssi调用问题没有发生时(我需要更长时间测试),但我想问题是rssi调用。 有什么建议吗?

0 个答案:

没有答案