I am currently working on an Android project that requires Bluetooth Low Energy Peripheral mode. As of now, just targeting the Galaxy S4 with 4.2.2 on it Samsung BLE SDK at http://developer.samsung.com/ble
I followed their API docs and programming guide very closely, however broadcasting characteristics or services over Bluetooth Low Energy just doesn't seem to work. Has anyone else had any luck with getting this to work yet? If so, any help would be greatly appreciated!
Thanks a lot.
Because Samsung BLE SDK only supports the central role, “advertising” a service as a central server means sitting their quietly, only revealing (or “advertising”) its service characteristics to another device in peripheral mode after a connection is already established. This connection establishment requires another device to do the actual radio advertising first. Samsung’s SDK isn’t going to do it.
What we need is an Android BLE API that allows creation of a peripheral server. Lots of folks were hoping that peripheral role support would be added in 4.4, but it wasn’t. Maybe we can hope for its addition in Android 4.5 or 5.0. There is a feature request asking for this. Add your name to the list!
Source
I am having the exact same issue. I can discover BLE devices and get their rssi values, but when I try to discover services or connect, I never receive a callback. I am using a Verizon Galaxy S4 running 4.2.2. I am using the Samsung BLE SDK 2.0. Apparently some heart rate monitors are working, but I get nothing using my ez430-rf256x TI development kit. I've tried the Keyfob demo and Heart Rate Profile demo in the Bluetopia v1.3 sdk.
Phones/tablets/pc's support(usually) Bluetooth dual mode chip. According to Bluetooth specification dual mode devices can't be a peripheral, but single mode devices do.
Related
I'm currently looking into an issue where my companys app have some trouble establishing searches and connection to a cadence BLE peripheral.
We're developing using nativescript#6.1.2 {N}6 and for the past long while we've used the nativescript-bluetooth#1.3.1 plugin with no issue. It's been used primarily on tablets with bluetooth 4.x.
Problem started when we tried our app on Samsung Galaxy tab A7 with bluetooth v5.0. The app wouldn't start a search or connect with the usual peripheral Wahoo cadence sensor.
What I can do is see the Wahoo sensor in the Android Bluetooth Manager as well as nRF connect and Wahoo's Fitness app. But using the usual plugin doesn't seem to be able to do anything.
I'm still fairly new to the BLE programming game, so if anybody have any advice as to why the Samsung Galaxy tab A7 with bluetooth 5.0 won't connect, I'd be happy to receive some.
So nativescript-bluetooth 1.3.1 is no longer valid in Android versions 10+. I have to migrate my app to nativescript 7 as well. I'm having trouble with migrating, and if you have any suggestions for some of my questions, I would greatly appreciate it!
Has anybody used Samsung's Bluetooth LE APIs to make a Samsung Android device advertise as an iBeacon? This should be possible, but I do not have access to a device to try it.
If anybody has used it to make a Samsung Android device advertise as any other Bluetooth LE peripheral, I would like to know that, too.
EDIT: This is now possible on Android L. See here.
EDIT: this answer is about older Samsung phones with Android 4.2. Samsung devices with Android 5.0+ can advertise beacons successfully.
Unfortunately, #reTs and #duncan-c are right (+1 for each of them). The Samsung BLE SDK cannot send out real BLE advertisements as is required for iBeacons.
I was holding out hope because their documentation says "allowing applications to create and advertise Bluetooth smart services and characteristics". I wrote an app to prove whether this actually worked, and learned that their documentation is simply misleading. The Samsung BLE SDK will not make Samsung devices transmit advertisements over the radio.
See full details in this blog post.
http://developer.samsung.com/ble
You can view the official "Samsung BLE SDK Guide and Hints" on the above link.
On page 12, point 10, it said :
"The current version of the SDK supports only the GATT central role. Peripheral roles may
be supported in future releases."
I'm told that with the current firmware it's not possible. (I'm not an Android developer so I haven't confirmed this first-hand.)
Problem definition:
I've been trying to use BLE proximity profile for Bluetooth LE on Android. Some of the devices like new generation Google Nexus tablet with 4.3 Android support BLE and can act as a central device.
I read the Android official documentation of the Bluetooth LE but their doesn't seems any support for that. Is their any workaround to implement our own proximity profile?
Questions which talk about proximity profile on Android but are of no help
Reading Bluetooth RSSI for BLE proximity profile in Android.
How to use the profile of PROXIMITY PROFILE,IMMEDIATE ALERT SERVICE and Find Me Profile in android 4.3 BLE?
BTLE (Bluetooth Low energy) development kit - must have proximity profile
Any help is appreciated. Thanks.
June 2014:
Thanks everyone for the answers. Just to update, as of June 2014, BLE Peripheral mode is offered in the Android L Developer preview. So now Android devices can act both in peripheral and central role. Hope to see it in the Android L official release. Quoting from their blog New in Android: L Developer Preview and Google Play Services 5.0:
The L Developer Preview, lets you explore many of the new features and capabilities of the next version of Android, and offers everything you need to get started developing and testing on the new platform. Here are a few of the highlights for developers:
BLE Peripheral Mode — Android devices can now function in Bluetooth Low Energy (BLE) peripheral mode. Apps can use this capability to broadcast their presence to nearby devices — for example, you can now build apps that let a device to function as a pedometer or health monitor and transmit data to another BLE device.
Update 16th October 2014:
Its out now! Checkout Android 5.0 wireless changes page.
Update 8th December 2014:
The bad new is that BLE Peripheral mode will only work on the newer Android devices (as per the date), viz Nexus 6 and Nexus 9. It won't work on Nexus 4/ Nexus 5/nexus 7/ nexus 10 even if you update it to Android 5.0. You can read the comment by one of the Android Project manager on BLE advertise mode not working ticket. He says:
We introduced BLE peripheral mode in Android 5.0 Lollipop. Nexus 6 and Nexus 9 are the first two production Nexus devices that support BLE peripheral mode. Due to hardware chipset dependency, older Nexus devices (4/5/7) will not have access to the feature on Lollipop.
Thanks to Rob Anderson for informing.
To elaborate on shubhams's answer:
Unfortunately there is no way for Android devices to act as a peripheral. He can creates GATT servers, services and charachteristics but there is no way to make the advertising.
(https://stackoverflow.com/a/18020153/3061383)
Since Android does not (yet) support advertising no other BLE device is able to initiate a connection to an Android device. As of now the Android device must initiate the connection.
Unfortunately, the android can only act as central not peripheral. So custom profiling is not possible at this point of time. Rather you can use the profile which are being provided by gatt.
For example: Temperature Monitor profile. Instead you can make the custom service and characteristics on iPhone and make it work as beacon.
Also if you are using hardware device of Estimote and other companies, you can reply back the data from android device i.e Services and characteristics have the properties such as Read, Write and Notify. But when you are making iPhone as Beacon, then you won't be able to receive the value from android device.
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.
I'm trying to develop a bluetooth 4.0 app for S3. The problem is, the phone behaves like it doesn't even have bluetooth 4.0. It doesn't discover 4.0 devices, and isn't discoverable with 4.0 devices. I tried both in the settings of the phone and in an app, using the Broadcom-ble API. The Broadcom API doesn't have any extra functionality for finding/discovering 4.0 devices, rather it uses the regular BluetoothAdapter functionality and claims that it will be augmented in 4.0 phones to also discover 4.0 devices.
Has anybody tried using bluetooth 4.0 on the S3? Has anyone succeeded in using the Broadcom API?
Thanks in advance.
This is now a confirmed bug, that will be fixed "in future releases".
See this forum thread at Samsung.
A beta for Samsung BLE SDK has been released here. I am going to study this SDK and hopefully it solves some of my problems.
It has been reported by Andrew Dodd, a senior XDA developer, that the Galaxy S3 doesn't actually support Bluetooth Low Energy
The Galaxy S3 has been marketed as Bluetooth 4.0 Low Energy (aka Bluetooth Smart) since its release - but it is not actually BTLE capable -http://developer.samsung.com/forum/board/thread/view.do?boardName=GeneralB&messageId=157757 - Samsung is STILL advertising the device as BTLE capable when it is NOT, despite the fact that they have been aware of this false advertising for months.
Samsung have a page at:
http://developer.samsung.com/ble
where you can download a Bluetooth LE SDK and sample code (registration is required, but otherwise it's automatic).
For what it's worth, there's an HTC page at:
http://www.htcdev.com/devcenter/opensense-sdk/partner-apis/bluetooth-low-energy/
where you can request access to their 'Partner APIs'. This needs license agreements to be signed (which for me means lots of lawyering) so I've not actually got code from them yet..
Ian
Refer this link
http://e2e.ti.com/support/low_power_rf/f/538/p/240097/879328.aspx
http://e2e.ti.com/cfs-file.ashx/__key/communityserver-discussions-components-files/538/8880.S3-BLE.zip,
attachment package can run on Samsung S3, now it limit with discover BLE devices and pairing. Some recent days, i try to find out how to send/receive data. But still not any luck.
I hope it can help.
Update your phone to Jelly Bean, then download nRf Utility from the Play Store, it can scan BLE devices around you!