diff --git a/src/main/java/org/altbeacon/beacon/BeaconManager.java b/src/main/java/org/altbeacon/beacon/BeaconManager.java index 4cd455bdf..c6e8044e9 100644 --- a/src/main/java/org/altbeacon/beacon/BeaconManager.java +++ b/src/main/java/org/altbeacon/beacon/BeaconManager.java @@ -407,6 +407,7 @@ public boolean checkAvailability() throws BleNotAvailableException { * @param consumer the Activity or Service that will receive the callback when the service is ready. */ public void bind(@NonNull BeaconConsumer consumer) { + /* if (!isBleAvailable()) { LogManager.w(TAG, "Method invocation will be ignored."); return; @@ -415,6 +416,7 @@ public void bind(@NonNull BeaconConsumer consumer) { LogManager.w(TAG, "This device does not support bluetooth LE. Will not start beacon scanning."); return; } + */ synchronized (consumers) { ConsumerInfo newConsumerInfo = new ConsumerInfo(); ConsumerInfo alreadyBoundConsumerInfo = consumers.putIfAbsent(consumer, newConsumerInfo); @@ -430,7 +432,13 @@ public void bind(@NonNull BeaconConsumer consumer) { else { LogManager.d(TAG, "Binding to service"); Intent intent = new Intent(consumer.getApplicationContext(), BeaconService.class); - consumer.bindService(intent, newConsumerInfo.beaconServiceConnection, Context.BIND_AUTO_CREATE); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && + this.getForegroundServiceNotification() != null) { + mContext.startForegroundService(intent); + } + else { + consumer.bindService(intent, newConsumerInfo.beaconServiceConnection, Context.BIND_AUTO_CREATE); + } } LogManager.d(TAG, "consumer count is now: %s", consumers.size()); }