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 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.btlescan.R;
|
||||
import android.app.Activity;
|
||||
@@ -96,17 +96,20 @@ public class LeDeviceListAdapter extends BaseAdapter {
|
||||
}
|
||||
|
||||
if (IBeaconUtils.isThisAnIBeacon(device)){
|
||||
final IBeaconManufacturerData data = new IBeaconManufacturerData(device);
|
||||
final double accuracy = data.getAccuracy(rssi);
|
||||
// Alternatively you can just call
|
||||
// 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.ibeaconSection.setVisibility(View.VISIBLE);
|
||||
viewHolder.ibeaconMajor.setText(String.valueOf(data.getMajor()));
|
||||
viewHolder.ibeaconMinor.setText(String.valueOf(data.getMinor()));
|
||||
viewHolder.ibeaconTxPower.setText(String.valueOf(data.getCalibratedTxPower()));
|
||||
viewHolder.ibeaconUUID.setText(data.getUUID());
|
||||
viewHolder.ibeaconMajor.setText(String.valueOf(iBeacon.getMajor()));
|
||||
viewHolder.ibeaconMinor.setText(String.valueOf(iBeacon.getMinor()));
|
||||
viewHolder.ibeaconTxPower.setText(String.valueOf(iBeacon.getCalibratedTxPower()));
|
||||
viewHolder.ibeaconUUID.setText(iBeacon.getUUID());
|
||||
viewHolder.ibeaconDistance.setText(DOUBLE_TWO_DIGIT_ACCURACY.format(accuracy) + "m");
|
||||
viewHolder.ibeaconDistanceDescriptor.setText(data.getDistanceDescriptor(accuracy));
|
||||
viewHolder.ibeaconDistanceDescriptor.setText(iBeacon.getDistanceDescriptor().toString());
|
||||
} else {
|
||||
viewHolder.deviceIcon.setImageResource(R.drawable.ic_bluetooth);
|
||||
viewHolder.ibeaconSection.setVisibility(View.GONE);
|
||||
|
||||
Reference in New Issue
Block a user