Is it possible to use an Android Wear device as a Bluetooth Low Energy beacon, separately from its connection to the phone?
I'm working with iBeacons that connect to both iOS and Android devices, and the iBeacon (Bluetooth Low Energy) capabilities of various mobile devices vary widely.
Most of Apple's devices (iPhones, recent iPads, and laptop/desktop devices) can transmit as an iBeacon. Only certain recent Android devices can do so, e.g. the Nexus 6 and Nexus 9.
I just purchased a Moto 360 to play around with and it does use BLE to transmit to the paired device, but I'm curious if I can write an app that will cause it to transmit arbitrary packets and an arbitrary UUID. Has anyone done that? It seems as though it should be possible. I've gone through the Android Wear developer's site but have not found any discussion of this topic.
Thanks for any ideas, links to web sites, etc.
UPDATE:
I just test my answer below and it seems like the Android.Bluetooth.LE namespace is not available for Android Wear. I'm afraid I have to say that (currently) it is not possible for an Android Wear device to broadcast as a beacon using native java Android.
EXPLANATION:
You can perform that test yourself. You mentioned you have a Moto 360. Just deploy a test app to it that gets the Bluetooth system service as BluetoothManager and test wether the adapters BluetoothLeAdvertiser property is not null.
((BluetoothManager) this.getSystemService(Context.BLUETOOTH_SERVICE))
.getAdapter().getBluetoothLeAdvertiser() == null
((BluetoothManager) this.getSystemService(Context.BLUETOOTH_SERVICE))
.getAdapter().isMultipleAdvertisementSupported() == null
You can use Android's native beacon broadcasting libraries or use a 3rd party library like AltBeacon to broadcast arbitrary beacon data.
Related
I want to develop two Android applications out of which one application should act as a Beacon. That is, one of my application installed in one device should listen certain events from the other app installed in other device and should broadcast some information on listening those events.
I read many articles and I found that the Android device must have Bluetooth LE hardware and it must have peripheral mode enabled by the device manufacturer. But most of the manufacturer as well as Google itself has disabled peripheral mode.
So my question is there a way (a Beacon library available?), so that I can make my application to act as Beacon.
Thanks in Advance.
You can use the Android Beacon Library to make a device both transmit as a beacon and detect/decode beacon transmissions.
It is true that devices must have BLE hardware for this to work, Android 4.3+ to detect beacons and Android 5.x+ to transmit as beacons. While not all devices with 5.x+ support peripheral mode needed to transmit, most popular devices do. Google has not disabled this, and their newer Nexus and Pixel devices support transmission as well.
The library linked above has a list of devices known to support transmission, and includes example code showing how to determine this at runtime on a specific device.
If a device does not support peripheral mode, there is nothing you can do short of rooting the device and trying to write a new Bluetooth driver yourself.
I'm trying to communicate two smartphones with Android 5.x through BLE.
First of all, I've installed the sample app from Google (https://github.com/googlesamples/android-BluetoothLeGatt) to test if the devices are correctly y scanned, but tablets and smartphones are not detected (the bluetooth is visible and enabled in both cases).
In the list only appears bracelets like Xiaomi MiBand, Fitbit... and some Macbooks, but nothing else.
I've read this report: https://code.google.com/p/android/issues/detail?id=82293
and this post (with Android 6.0 must be enable the location): Bluetooth Low Energy startScan on Android 6.0 does not find devices
I've tested with multiple scan apps from the Play Store, but all of them show the same result... I'm going crazy.
Scanning from Settings -> Bluetooth the result is correct (smartphones and tablets are detected).
Any idea about this problem? Why this devices are not appearing on the BLE scan?
Smartphones and tablets used to test:
Samsung Galaxy S5
Xiaomi Redmi Note 2
BQ Edison 2
iPhone 5
If device has BLE it does not mean that it will be visible (broadcast) any data by default. In order to achieve communication between two smart phones you need to have (install or write your own) application that uses BLE to create proper BLE service that will be exposed to other devices.
Some BLE capable devices such is iPhone for example broadcasts BAS (Battery Service) or similar, but I don't think that Android does.
So, don't expect to find any device on scan that you have described, and if you still need
to communicate two smartphones with Android 5.x through BLE
try to read Bluetooth Low Energy documentation and be ready to understand UUID, GATT, Characteristic...
I want to know how iBeacon works actually. I found the sample code of AirLocate, but couldn't figure out how it works. iBeacon is works on BLE, so it may be possible for do data communication with other BLE supported devices via bluetooth?
As it possible to make data transfer between iOS - android device via bluetooth using BLE or beacon?
iOS had already announced iBeacon technology, but didn't find out any technical specification document regarding this. I also want to know how it works on android?
Can some one please describe about this technology and is it possible to make data-communication via bluetooth between iOS-iOS device, and iOS-Android Device?
No, you cannot communicate between devices using iBeacons because an iBeacons are transmit only. Mobile devices, both iOS and Android can both hear iBeacons, but they cannot talk back.
iBeacons work by transmitting a 3-part identifier and a transmitter power reference value every second (or more often.) That's it. They do nothing more. SDKs in iOS and Android listen for these signals and report them to your app, but the rest is up to the app developer.
What you suggest may be possible with a custom Bluetooth LE beacon, but it would need to be significantly more complex than an iBeacon, and you would have to build your own.
Here are a couple of links to give you more info:
How iBeacons work on Android from Radius Networks
iBeacon overview by Dave Addey
Full disclosure: I work for Radius Networks.
I'm working on a BLE proximity sensing feature based on Android and need some information.
Currently I see there are no BLE beacons manufacturers for android. I found 2 so far for iPhone.
1) http://www.estimote.com
2) http://www.gimbal.com
Estimote claims that their devices are generic but mainly they are publicized for iBeacons. So I'm not sure whether I should order them for a feature on Android.
Secondly gimbal explicitly mentions that their devices won't be enabled for android for proximity sensing.
So if any of you know where can I order BLE beacons compatible with Android please let me know.
Another thing, for prototype testing I was wondering whether I could use a Android BLE capable tablet or smartphone as a beacon to emit BLE signals?
Till now the documentation for android only suggests how to detect a beacon, But I'm not sure whether an Android device can be used as a beacon.
Any insights?
There is a BLE Beacon manufacturer for Android: Radius Networks
You can detect any standard iBeacon on Android using our Android iBeacon Library.
You can try it out yourself with our free iBeacon Locate app, which is based on this library. My company also sells both software and hardware iBeacons that I guarantee work with Android. But again, any standard iBeacon will work, too. Don't take my word for it -- just download our free app and use it to see one of our iBeacons. (We even have a free virtual machine you can use!)
It is currently not possible to make an iBeacon out of a stock Android device because the Bluetooth LE APIs, introduced in Android 4.3, do not support the peripheral mode needed to transmit advertisements like an iBeacon.
EDIT: It is now possible to make rooted Android 4.4.3 devices transmit as an iBeacon. See here.
I tried simple BLE scan app on Android, but the callback for LeDevices always returned null for UUID[]. Also, finding based on know UUID didnot work.
To add to David's reply. I have tried Radius Networks SDK, pretty clean. I like it.
Also, Estimotes has released their Android SDK today(1/7), which is good. The sample App shows notification, Distance, Major-Minor. I tested with 3 Estimotes & also with iPhone's app (making the iPhone as iBeacon). It works well, give it a try.
Note that you have to modify the code
change the ESTIMOTE_PROXIMITY_UUID value to the UUID that you are watching for.
Hope it helps.
I need to develop an Android application handling the data from a custom built Bluetooth Low Energy client device.
After researching it seems that the best option is to use the API's developed by Motorola for their Android smartphones, but it looks like the Motorola Bluetooth Low Energy API is made to connect only with Motorola bluetooth devices, from the link:
applications can use [the Motorola Bluetooth Low Energy API] to interface with Bluetooth LE (Low
Energy) profiles implemented by certain Motorola Mobility devices
Besides the above mentioned API, there is the Motorola Bluetooth Low Energy GATT Framework API, but it is unclear to me whether it is applicable for my needs.
Can anyone here tell me how these API's can be used to achieve my goal or whether there are other options that I haven't realized yet?
Android options for BLE are limited, and this answer may be different at any given point in the future.
Motorola API will only work for Motorola phones. The GATT API will allow you to push data to the GATT and transmit it via ble. HOWEVER Motorola has ONLY extended the HRM profile. Additionally the API stopped working on devices that were updated to ICS (as of 10 days ago this is still the case). They are working to update the API as well as possibly extend the profiles beyond HRM. There have been people that have simply leveraged the HRM profile to shuttle data, but there is currently a 2 octet limit.
There are additional bugs that have been reported as well, that are also supposed to be fixed in the post ICS updates. However since it took them a year to get ICS out to their headsets and all of the Motorola apps are still working, who knows when they'll update the API's.