Bluetoothデバイスをスキャンするとき、ArrayList内の各デバイスをMACアドレスで取得しようとしています。後でリストの中で最も強い信号RSSIに接続したいと思います。何らかの理由で、RSSIは以下のコードで更新し続けます。データがArrayListに配置される唯一の時間は、MACが別のリストに含まれていないときです。Android/Java - アクセスできないArrayListでBluetooth RSSIをアップデートする
基本的に、私はリストにあるものに対してスキャンするMACアドレスをチェックし、そのリストにない場合、デバイス情報を別のArrayListに追加します。
deviceArray ArrayListでRSSIがまだ更新されているのはなぜですか?
// Device Discovery
private BluetoothAdapter.LeScanCallback leScanCallback = new BluetoothAdapter.LeScanCallback() {
@Override
public void onLeScan(final BluetoothDevice device, final int rssi, final byte[] scanRecord) {
if (device.getName() != null){
if (DEVICE_NAME.equals(device.getName())){
deviceInfo[0] = device.getName();
deviceInfo[1] = device.getAddress();
deviceInfo[2] = Integer.toString(rssi);
// Add device info if MAC address is not located
if (!MACAddresses.contains(deviceInfo[1])){
deviceArray.add(deviceInfo);
MACAddresses.add(deviceInfo[1]);
Log.e("MAC ADDRESS ADDING", "ADDING " + deviceInfo[1]);
}
// TODO remove this logging info
for(int i = 0; i < deviceArray.size(); i++){
Log.e("Bluetooth Devices",
"Array Length = " + deviceArray.size() + ", "
+ deviceArray.get(i)[0] + ", "
+ deviceArray.get(i)[1] + ", "
+ deviceArray.get(i)[2]);
}
}
}
以下の出力をご覧ください。 ArrayListのサイズは2で、MACアドレスは2つしかありませんが、RSSIは時々変更されます。 3つのRSSI値(-41、-47、および-48)があり、2つの値しかないことに注意してください。これに加えて、これらのArrayListアイテムが順番にプリントアウトされていないということは私には奇妙に思えます。 1つのMACアドレスがAで、もう1つがBの場合は、AB、AB、AB、ABのように印刷する必要がありますが、AB BA AB BAのようになり、ある時点でAAAAがあります。
E/MAC ADDRESS ADDING: ADDING 00:A0:50:CC:4B:9B
E/Bluetooth Devices: Array Length = 1, MyDeviceName, 00:A0:50:CC:4B:9B, -41
E/MAC ADDRESS ADDING: ADDING 00:A0:50:12:14:96
E/Bluetooth Devices: Array Length = 2, MyDeviceName, 00:A0:50:12:14:96, -48
E/Bluetooth Devices: Array Length = 2, MyDeviceName, 00:A0:50:12:14:96, -48
E/Bluetooth Devices: Array Length = 2, MyDeviceName, 00:A0:50:CC:4B:9B, -41
E/Bluetooth Devices: Array Length = 2, MyDeviceName, 00:A0:50:CC:4B:9B, -41
E/Bluetooth Devices: Array Length = 2, MyDeviceName, 00:A0:50:12:14:96, -48
E/Bluetooth Devices: Array Length = 2, MyDeviceName, 00:A0:50:12:14:96, -48
E/Bluetooth Devices: Array Length = 2, MyDeviceName, 00:A0:50:CC:4B:9B, -41
E/Bluetooth Devices: Array Length = 2, MyDeviceName, 00:A0:50:CC:4B:9B, -41
E/Bluetooth Devices: Array Length = 2, MyDeviceName, 00:A0:50:12:14:96, -47
E/Bluetooth Devices: Array Length = 2, MyDeviceName, 00:A0:50:12:14:96, -48
E/Bluetooth Devices: Array Length = 2, MyDeviceName, 00:A0:50:CC:4B:9B, -41
E/Bluetooth Devices: Array Length = 2, MyDeviceName, 00:A0:50:CC:4B:9B, -41
E/Bluetooth Devices: Array Length = 2, MyDeviceName, 00:A0:50:CC:4B:9B, -41
E/Bluetooth Devices: Array Length = 2, MyDeviceName, 00:A0:50:CC:4B:9B, -41
E/Bluetooth Devices: Array Length = 2, MyDeviceName, 00:A0:50:12:14:96, -47
私が貼り付けなかった出力では、さらにRSSI値(-58と-53)が実際に表示されます。私はちょうど私がMACごとに一度項目を追加していない場合、これらがどのようにArrayListにすることができます理解していない。何かご意見は?