【问题标题】:Bluetooth indoor position use too much memory蓝牙室内定位占用内存过多
【发布时间】:2014-11-28 15:15:56
【问题描述】:

我正在尝试在 android 中使用 ble 设备(信标)做室内定位系统。它在程序开始时找到最近的信标。它会在几秒钟内检测到位置变化,但几秒钟后它对变化的反应为时已晚。

现在我只打印信标的 id(我给了这个 id)

我认为问题在于内存。可能是什么问题呢?

LeScanCallback 和 Handler 函数:

@Override
    public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {
        List<AdRecord> records = AdRecord.parseScanRecord(scanRecord);
        beaconScan = new BluetoothBeacon(records, device.getAddress(), rssi);
        mHandler.sendMessage(Message.obtain(null, 0, beaconScan));

    }

    private Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {

            beaconHandler = (BluetoothBeacon) msg.obj;
            mBeacons.put(beaconHandler.getAddress(), beaconHandler);

            rssiVal =  getRssiString(beaconHandler);
            dbHelper.insertDevice(beaconHandler.getName(), beaconHandler.getAddress(),
                    rangeValue,rssiVal,currentTime);
            rssiID = model.findNear(beaconHandler.getAddress(),beaconHandler.getSignal());
            Log.i("id", "Nearest beacon id: " + rssiID);

        }
    };

【问题讨论】:

    标签: android bluetooth indoor-positioning-system


    【解决方案1】:

    onLeScan 是一个异步回调,只有在 BluetoothAdapter 扫描完成时才会调用。如果没有启动 startLeScan 的代码,并且假设您正确执行了此操作(意味着您没有每秒调用此函数一百万次),则此 sn-p 不应该存在内存问题。 几秒的延迟正是扫描的工作原理,扫描子程序从开始运行到结束需要一些时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-19
      • 2019-06-04
      • 2011-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-14
      相关资源
      最近更新 更多