New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 907191 link

Starred by 3 users

Issue metadata

Status: WontFix
Owner:
Closed: Jan 7
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Bug



Sign in to add a comment

Android Bluetooth Low Energy Advertiser returns Null on Chromebox Mini

Reported by signa...@daymoninteractions.com, Nov 20

Issue description

UserAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36
Platform: 11264.0.0 (Official Build) dev-channel veyron_fievel

Steps to reproduce the problem:
1. BluetoothLeAdvertiser advertise = BluetoothAdapter.getDefaultAdapter().getBluetoothLeAdvertiser();
2. Advertiser returns Null
3. 

What is the expected behavior?
The advertiser object should not return empty, and it allows the app the advertise the Eddystone signal.

What went wrong?
We have an Android app that is running on the Chromebox Mini. However, the BLEAdvertiser feature is not working. Through our testing, we have been unable to broadcast the Eddystone signal via our Android app on the device. We are able to broadcast the Eddystone signal through the Chrome browser on the device, thus verifying the hardware is present to broadcast the signal. We have also verified that the bluetooth is enabled when the Android app is launched.

Did this work before? No 

Does this work in other browsers? N/A

Chrome version: 70.0.3538.102  Channel: dev
OS Version: 72.0.3909.3
Flash Version: 31.0.0.148
 
Cc: sonnysasaka@chromium.org adlr@chromium.org
Components: -Blink>Bluetooth Platform>Apps>ARC
Owner: qiyuh@chromium.org
Seems like a problem with arc++
We need to make sure the following conditions are met:

1) getLeAccess() returns true
2) isMultipleAdvertisementSupported() returns true

https://cs.corp.google.com/android/frameworks/base/core/java/android/bluetooth/BluetoothAdapter.java?type=cs&q=getBluetoothLeAdvertiser&sq=package:android&g=0&l=739

AFAIK, multi advertisement is not supported at this moment.
I've tested the case on Pixelbook 2.

Chrome version 72.0.3623.3 (Official Build) dev (64-bit) 
OS version: 11307.0.0 (Official Build) dev-channel eve
Android version: 9 Pie
Hardware: Pixelbook 2

For me `BluetoothAdapter.getDefaultAdapter().getBluetoothLeAdvertiser()` returns a valid object.

1) getLeAccess() returns true
2) isMultipleAdvertisementSupported() returns false

Also, I was able to set up a proper transmission of Eddystone-UID and Eddystone-URL beacons using Altbeacon library. So the entire case works well at least on Pixelbook 2. Why it might not work for Chromebox mini?
The `BluetoothAdapter.getDefaultAdapter().getBluetoothLeAdvertiser()` returns empty in my case.

1) getLeAccess() returns false
2) isMultipleAdvertisementSupported() returns false

However, the device is able to broadcast Eddystone-UID through Chrome browser API. 
Yet to confirm, but it seems to me that Le advertising is supported on pixelbook but not on chromebox mini. 

To #4, are you using the ble api below? https://developer.chrome.com/apps/bluetoothLowEnergy#method-registerAdvertisement 
Status: WontFix (was: Unconfirmed)
Just confirmed that in Android N, we don't support LE advertisement via the Android API on chromebooks. That's a new feature for Android P in ARC++. Thus, only devices running Android P (such as Pixelbook 2 in #3) supports LE advertisement (but not multiple LE advertisement).

Thus, this is WAI on chromebox mini.

The long story here. Multiple advertisement is not supported on ARC++. In Android N, GMS core will always take the default and only advertisement slot, which is rendered as not available for other apps. In Android P, we are able to reuse that slot when GMS core is idle. Thus, LE advertisement is only available in Android P.

Sign in to add a comment