diff options
Diffstat (limited to 'src/android/bluetooth/src/org/qtproject/qt/android/bluetooth/QtBluetoothLE.java')
-rw-r--r-- | src/android/bluetooth/src/org/qtproject/qt/android/bluetooth/QtBluetoothLE.java | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/src/android/bluetooth/src/org/qtproject/qt/android/bluetooth/QtBluetoothLE.java b/src/android/bluetooth/src/org/qtproject/qt/android/bluetooth/QtBluetoothLE.java index 8f0a0f09..9671f11a 100644 --- a/src/android/bluetooth/src/org/qtproject/qt/android/bluetooth/QtBluetoothLE.java +++ b/src/android/bluetooth/src/org/qtproject/qt/android/bluetooth/QtBluetoothLE.java @@ -11,6 +11,7 @@ import android.bluetooth.BluetoothGattCharacteristic; import android.bluetooth.BluetoothGattDescriptor; import android.bluetooth.BluetoothGattService; import android.bluetooth.BluetoothProfile; +import android.bluetooth.BluetoothManager; import android.bluetooth.le.BluetoothLeScanner; import android.bluetooth.le.ScanCallback; import android.bluetooth.le.ScanFilter; @@ -39,7 +40,7 @@ import java.util.UUID; public class QtBluetoothLE { private static final String TAG = "QtBluetoothGatt"; - private final BluetoothAdapter mBluetoothAdapter; + private BluetoothAdapter mBluetoothAdapter = null; private boolean mLeScanRunning = false; private BluetoothGatt mBluetoothGatt = null; @@ -163,14 +164,23 @@ public class QtBluetoothLE { Context qtContext = null; @SuppressWarnings("WeakerAccess") - public QtBluetoothLE() { - mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); + public QtBluetoothLE(Context context) { + qtContext = context; + + BluetoothManager manager = + (BluetoothManager)qtContext.getSystemService(Context.BLUETOOTH_SERVICE); + if (manager == null) + return; + + mBluetoothAdapter = manager.getAdapter(); + if (mBluetoothAdapter == null) + return; + mBluetoothLeScanner = mBluetoothAdapter.getBluetoothLeScanner(); } public QtBluetoothLE(final String remoteAddress, Context context) { - this(); - qtContext = context; + this(context); mRemoteGattAddress = remoteAddress; } @@ -185,6 +195,11 @@ public class QtBluetoothLE { if (isEnabled == mLeScanRunning) return true; + if (mBluetoothLeScanner == null) { + Log.w(TAG, "Cannot start LE scan, no bluetooth scanner"); + return false; + } + if (isEnabled) { Log.d(TAG, "Attempting to start BTLE scan"); ScanSettings.Builder settingsBuilder = new ScanSettings.Builder(); @@ -682,6 +697,11 @@ public class QtBluetoothLE { public synchronized boolean connect() { BluetoothDevice mRemoteGattDevice; + if (mBluetoothAdapter == null) { + Log.w(TAG, "Cannot connect, no bluetooth adapter"); + return false; + } + try { mRemoteGattDevice = mBluetoothAdapter.getRemoteDevice(mRemoteGattAddress); } catch (IllegalArgumentException ex) { |