Added proximity descriptor

This commit is contained in:
Alexandros Schillings
2014-03-14 18:00:01 +00:00
parent 8c03f29c32
commit f08a561e7e
3 changed files with 136 additions and 103 deletions
@@ -66,7 +66,7 @@ public final class IBeaconManufacturerData {
mUUID = calculateUUIDString(Arrays.copyOfRange(mData, 4, 20));
mMajor = ByteUtils.getIntFrom2ByteArray(Arrays.copyOfRange(mData, 20, 22));
mMinor = ByteUtils.getIntFrom2ByteArray(Arrays.copyOfRange(mData, 22, 24));
mCalibratedTxPower = ByteUtils.getIntFromByte(data[24]);
mCalibratedTxPower = data[24];
}
@@ -87,7 +87,7 @@ public final class IBeaconManufacturerData {
return sb.toString();
}
public double getAccuracy(int rssi){
public double getAccuracy(double rssi){
return calculateAccuracy(mCalibratedTxPower, rssi);
}
@@ -99,6 +99,22 @@ public final class IBeaconManufacturerData {
return mCompanyIdentidier;
}
public String getDistanceDescriptor(double accuracy){
if(accuracy < 0){
return "WTF";
}
if(accuracy < 0.5){
return "IMMEDIATE";
}
if(accuracy < 3.0){
return "NEAR";
}
return "FAR";
}
public int getIBeaconAdvertisement(){
return mIBeaconAdvertisment;
}
@@ -116,7 +132,7 @@ public final class IBeaconManufacturerData {
}
// Code taken from: http://stackoverflow.com/questions/20416218/understanding-ibeacon-distancing
protected static double calculateAccuracy(int txPower, double rssi) {
private static double calculateAccuracy(int txPower, double rssi) {
if (rssi == 0) {
return -1.0; // if we cannot determine accuracy, return -1.
}