Fix for concurrent modification exception when getting running average
RSSI
This commit is contained in:
@@ -2,8 +2,8 @@ package uk.co.alt236.bluetoothlelib.device;
|
|||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import uk.co.alt236.bluetoothlelib.device.adrecord.AdRecordStore;
|
import uk.co.alt236.bluetoothlelib.device.adrecord.AdRecordStore;
|
||||||
@@ -273,14 +273,20 @@ public class BluetoothLeDevice implements Parcelable{
|
|||||||
* @return the running average rssi
|
* @return the running average rssi
|
||||||
*/
|
*/
|
||||||
public double getRunningAverageRssi(){
|
public double getRunningAverageRssi(){
|
||||||
final Collection<Integer> values = mRssiLog.values();
|
|
||||||
int sum = 0;
|
int sum = 0;
|
||||||
|
int count = 0;
|
||||||
|
final Iterator<Long> it1 = mRssiLog.keySet().iterator();
|
||||||
|
|
||||||
for(Integer value: values){
|
while(it1.hasNext()){
|
||||||
sum += value.intValue();
|
count ++;
|
||||||
}
|
sum += mRssiLog.get(it1.next());
|
||||||
|
}
|
||||||
|
|
||||||
return sum/values.size();
|
if(count > 0){
|
||||||
|
return sum/count;
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user