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);
}
};