package org.altbeacon.beacon.distance;
import android.os.Build;
import org.altbeacon.beacon.BeaconManager;
import org.altbeacon.beacon.logging.LogManager;
/**
* Represents a specific Android device model based on the available device build information
*
* Created by dyoung on 8/28/14.
*/
public class AndroidModel {
private static final String TAG = "AndroidModel";
String mVersion;
String mBuildNumber;
String mModel;
String mManufacturer;
public AndroidModel(String version, String buildNumber,
String model,
String manufacturer) {
mVersion = version;
mBuildNumber = buildNumber;
mModel = model;
mManufacturer = manufacturer;
}
public static AndroidModel forThisDevice() {
return new AndroidModel(
Build.VERSION.RELEASE,
Build.ID,
Build.MODEL,
Build.MANUFACTURER);
}
public String getVersion() {
return mVersion;
}
public void setVersion(String mVersion) {
this.mVersion = mVersion;
}
public String getBuildNumber() {
return mBuildNumber;
}
public String getModel() {
return mModel;
}
public String getManufacturer() {
return mManufacturer;
}
public void setBuildNumber(String mBuildNumber) {
this.mBuildNumber = mBuildNumber;
}
public void setModel(String mModel) {
this.mModel = mModel;
}
public void setManufacturer(String mManufacturer) {
this.mManufacturer = mManufacturer;
}
/**
* Calculates a qualitative match score between two different Android device models for the
* purposes of how likely they are to have similar Bluetooth signal level responses
* @param otherModel
* @return match quality, higher numbers are a better match
*/
public int matchScore(AndroidModel otherModel) {
int score = 0;
if (this.mManufacturer.equalsIgnoreCase(otherModel.mManufacturer)) {
score = 1;
}
if (score ==1 && this.mModel.equals(otherModel.mModel)) {
score = 2;
}
if (score == 2 && this.mBuildNumber.equals(otherModel.mBuildNumber)) {
score = 3;
}
if (score == 3 && this.mVersion.equals(otherModel.mVersion)) {
score = 4;
}
LogManager.d(TAG, "Score is %s for %s compared to %s", score, toString(), otherModel);
return score;
}
@Override
public String toString() {
return ""+mManufacturer+";"+mModel+";"+mBuildNumber+";"+mVersion;
}
}