The iBeaconDevice constructors will now throw an exception if the passed
device is not an iBeacon
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
package uk.co.alt236.bluetoothlelib.device;
|
package uk.co.alt236.bluetoothlelib.device;
|
||||||
|
|
||||||
|
import java.security.InvalidParameterException;
|
||||||
|
|
||||||
import uk.co.alt236.bluetoothlelib.device.mfdata.IBeaconManufacturerData;
|
import uk.co.alt236.bluetoothlelib.device.mfdata.IBeaconManufacturerData;
|
||||||
import uk.co.alt236.bluetoothlelib.util.IBeaconUtils;
|
import uk.co.alt236.bluetoothlelib.util.IBeaconUtils;
|
||||||
import uk.co.alt236.bluetoothlelib.util.IBeaconUtils.IBeaconDistanceDescriptor;
|
import uk.co.alt236.bluetoothlelib.util.IBeaconUtils.IBeaconDistanceDescriptor;
|
||||||
@@ -17,9 +19,11 @@ public class IBeaconDevice extends BluetoothLeDevice{
|
|||||||
* @param device the device
|
* @param device the device
|
||||||
* @param rssi the RSSI value
|
* @param rssi the RSSI value
|
||||||
* @param scanRecord the scanRecord
|
* @param scanRecord the scanRecord
|
||||||
|
* @throws IllegalArguementException if the passed device is not an iBecon
|
||||||
*/
|
*/
|
||||||
public IBeaconDevice(BluetoothDevice device, int rssi, byte[] scanRecord) {
|
public IBeaconDevice(BluetoothDevice device, int rssi, byte[] scanRecord) {
|
||||||
super(device, rssi, scanRecord, 0);
|
super(device, rssi, scanRecord, 0);
|
||||||
|
validate();
|
||||||
mIBeaconData = new IBeaconManufacturerData(this);
|
mIBeaconData = new IBeaconManufacturerData(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -30,26 +34,30 @@ public class IBeaconDevice extends BluetoothLeDevice{
|
|||||||
* @param rssi the RSSI value of the RSSI measurement
|
* @param rssi the RSSI value of the RSSI measurement
|
||||||
* @param scanRecord the scan record
|
* @param scanRecord the scan record
|
||||||
* @param timestamp the timestamp of the RSSI measurement
|
* @param timestamp the timestamp of the RSSI measurement
|
||||||
|
* @throws IllegalArguementException if the passed device is not an iBecon
|
||||||
*/
|
*/
|
||||||
public IBeaconDevice(BluetoothDevice device, int rssi, byte[] scanRecord, long timestamp){
|
public IBeaconDevice(BluetoothDevice device, int rssi, byte[] scanRecord, long timestamp){
|
||||||
super(device, rssi, scanRecord, timestamp);
|
super(device, rssi, scanRecord, timestamp);
|
||||||
|
validate();
|
||||||
mIBeaconData = new IBeaconManufacturerData(this);
|
mIBeaconData = new IBeaconManufacturerData(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Will try to convert a {@link BluetoothLeDevice} into an
|
* Will try to convert a {@link BluetoothLeDevice} into an
|
||||||
* iBeacon Device.
|
* iBeacon Device.
|
||||||
*
|
*
|
||||||
* @param device the device
|
* @param device the device
|
||||||
|
* @throws IllegalArguementException if the passed device is not an iBecon
|
||||||
*/
|
*/
|
||||||
public IBeaconDevice(BluetoothLeDevice device){
|
public IBeaconDevice(BluetoothLeDevice device){
|
||||||
super(device);
|
super(device);
|
||||||
|
validate();
|
||||||
mIBeaconData = new IBeaconManufacturerData(this);
|
mIBeaconData = new IBeaconManufacturerData(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private IBeaconDevice(Parcel in) {
|
private IBeaconDevice(Parcel in) {
|
||||||
super(in);
|
super(in);
|
||||||
|
validate();
|
||||||
mIBeaconData = new IBeaconManufacturerData(this);
|
mIBeaconData = new IBeaconManufacturerData(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -128,4 +136,10 @@ public class IBeaconDevice extends BluetoothLeDevice{
|
|||||||
public String getUUID(){
|
public String getUUID(){
|
||||||
return getIBeaconData().getUUID();
|
return getIBeaconData().getUUID();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void validate(){
|
||||||
|
if(!IBeaconUtils.isThisAnIBeacon(this)){
|
||||||
|
throw new IllegalArgumentException("Device " + getDevice() + " is not an iBeacon.");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user