Started using the new iBeacon class
This commit is contained in:
@@ -0,0 +1,62 @@
|
|||||||
|
package uk.co.alt236.bluetoothlelib.device;
|
||||||
|
|
||||||
|
import uk.co.alt236.bluetoothlelib.device.mfdata.IBeaconManufacturerData;
|
||||||
|
import uk.co.alt236.bluetoothlelib.util.IBeaconUtils;
|
||||||
|
import uk.co.alt236.bluetoothlelib.util.IBeaconUtils.IBeaconDistanceDescriptor;
|
||||||
|
import android.bluetooth.BluetoothDevice;
|
||||||
|
import android.os.Parcel;
|
||||||
|
|
||||||
|
public class IBeaconDevice extends BluetoothLeDevice{
|
||||||
|
private final IBeaconManufacturerData mIBeaconData;
|
||||||
|
|
||||||
|
public IBeaconDevice(BluetoothDevice device, int rssi, byte[] scanRecord) {
|
||||||
|
super(device, rssi, scanRecord, 0);
|
||||||
|
mIBeaconData = new IBeaconManufacturerData(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public IBeaconDevice(BluetoothDevice device, int rssi, byte[] scanRecord, long timestamp){
|
||||||
|
super(device, rssi, scanRecord, timestamp);
|
||||||
|
mIBeaconData = new IBeaconManufacturerData(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public IBeaconDevice(BluetoothLeDevice device){
|
||||||
|
this(device.getDevice(), device.getRssi(), device.getScanRecord(), device.getTimestamp());
|
||||||
|
}
|
||||||
|
|
||||||
|
private IBeaconDevice(Parcel in) {
|
||||||
|
super(in);
|
||||||
|
mIBeaconData = new IBeaconManufacturerData(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getAccuracy(){
|
||||||
|
return IBeaconUtils.calculateAccuracy(getCalibratedTxPower(), getRssi());
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getCalibratedTxPower(){
|
||||||
|
return getIBeaconData().getCalibratedTxPower();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getCompanyIdentifier(){
|
||||||
|
return getIBeaconData().getCompanyIdentifier();
|
||||||
|
}
|
||||||
|
|
||||||
|
public IBeaconDistanceDescriptor getDistanceDescriptor(){
|
||||||
|
return IBeaconUtils.getDistanceDescriptor(getAccuracy());
|
||||||
|
}
|
||||||
|
|
||||||
|
public IBeaconManufacturerData getIBeaconData(){
|
||||||
|
return mIBeaconData;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getMajor(){
|
||||||
|
return getIBeaconData().getMajor();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getMinor(){
|
||||||
|
return getIBeaconData().getMinor();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUUID(){
|
||||||
|
return getIBeaconData().getUUID();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,7 +5,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import uk.co.alt236.bluetoothlelib.device.BluetoothLeDevice;
|
import uk.co.alt236.bluetoothlelib.device.BluetoothLeDevice;
|
||||||
import uk.co.alt236.bluetoothlelib.device.mfdata.IBeaconManufacturerData;
|
import uk.co.alt236.bluetoothlelib.device.IBeaconDevice;
|
||||||
import uk.co.alt236.bluetoothlelib.util.IBeaconUtils;
|
import uk.co.alt236.bluetoothlelib.util.IBeaconUtils;
|
||||||
import uk.co.alt236.btlescan.R;
|
import uk.co.alt236.btlescan.R;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
@@ -96,17 +96,20 @@ public class LeDeviceListAdapter extends BaseAdapter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (IBeaconUtils.isThisAnIBeacon(device)){
|
if (IBeaconUtils.isThisAnIBeacon(device)){
|
||||||
final IBeaconManufacturerData data = new IBeaconManufacturerData(device);
|
// Alternatively you can just call
|
||||||
final double accuracy = data.getAccuracy(rssi);
|
// IBeaconManufacturerData data = new IBeaconManufacturerData(device);
|
||||||
|
|
||||||
|
final IBeaconDevice iBeacon = new IBeaconDevice(device);
|
||||||
|
final double accuracy = iBeacon.getAccuracy();
|
||||||
|
|
||||||
viewHolder.deviceIcon.setImageResource(R.drawable.ic_device_ibeacon);
|
viewHolder.deviceIcon.setImageResource(R.drawable.ic_device_ibeacon);
|
||||||
viewHolder.ibeaconSection.setVisibility(View.VISIBLE);
|
viewHolder.ibeaconSection.setVisibility(View.VISIBLE);
|
||||||
viewHolder.ibeaconMajor.setText(String.valueOf(data.getMajor()));
|
viewHolder.ibeaconMajor.setText(String.valueOf(iBeacon.getMajor()));
|
||||||
viewHolder.ibeaconMinor.setText(String.valueOf(data.getMinor()));
|
viewHolder.ibeaconMinor.setText(String.valueOf(iBeacon.getMinor()));
|
||||||
viewHolder.ibeaconTxPower.setText(String.valueOf(data.getCalibratedTxPower()));
|
viewHolder.ibeaconTxPower.setText(String.valueOf(iBeacon.getCalibratedTxPower()));
|
||||||
viewHolder.ibeaconUUID.setText(data.getUUID());
|
viewHolder.ibeaconUUID.setText(iBeacon.getUUID());
|
||||||
viewHolder.ibeaconDistance.setText(DOUBLE_TWO_DIGIT_ACCURACY.format(accuracy) + "m");
|
viewHolder.ibeaconDistance.setText(DOUBLE_TWO_DIGIT_ACCURACY.format(accuracy) + "m");
|
||||||
viewHolder.ibeaconDistanceDescriptor.setText(data.getDistanceDescriptor(accuracy));
|
viewHolder.ibeaconDistanceDescriptor.setText(iBeacon.getDistanceDescriptor().toString());
|
||||||
} else {
|
} else {
|
||||||
viewHolder.deviceIcon.setImageResource(R.drawable.ic_bluetooth);
|
viewHolder.deviceIcon.setImageResource(R.drawable.ic_bluetooth);
|
||||||
viewHolder.ibeaconSection.setVisibility(View.GONE);
|
viewHolder.ibeaconSection.setVisibility(View.GONE);
|
||||||
|
|||||||
Reference in New Issue
Block a user