iBeacon app for android and IOS doubts - ibeacon

I'm trying to learn something about iBeacon and I have a question:
As far as I understood Apple provides API in order to develop iBeacons app since IOS7, but for android how does it work? The only thing I found is that It works only from version 4.3 (Is it correct?) But are there any sdk or library to use?

Yes, you can use the open source Android Beacon Library, which gives Android the same basic capabilities to detect and transmit as beacons as provided by CoreLocation on iOS devices. This library is designed to be vendor neutral, and works with a wide variety of beacons. There are also a number of proprietary Android SDKs offered by beacon manufacturers, some of which harness special features that only work with those beacons.
The main thing to understand on Android is that while 4.3+ devices can all detect Bluetooth LE transmissions, there is no native beacon framework, and working with beacons typically requires quite a bit of logic beyond reading the Bluetooth LE packets they send out. As a result, Android beacon apps typically bundle a small library like mentioned above with the app to provide beacon detection and/or transmission capability.
Full disclosure: I am the lead developer for the Android Beacon Library.

You can use as well kontakt.io Android SDK which handles Beacons with IBeacon profile. In the latest release some optimizations in terms of battery consumption were made. Additionally, it supports filtering and modes (Android Lollipop and upwards) according to which scan is performed (explanation in brief here).
To start, visit http://docs.kontakt.io/android-sdk/quickstart/ and follow the instructions.
There is a sample app demonstrating SDK functionalities here. I suggest observing the project as it is the first place where new changes are being introduced.
As #davidgyoung pointed, there is no native framework for IBeacons in Android at the moment.

Related

Is it possible to use the ML Kit SDK on Wear OS?

I am wondering if anyone knows if it is possible to use the ML Kit SDK on Wear OS devices? I know Wear OS is based on Android, and I've seen references online to Firebase notifications working on Wear OS.
I have googled combinations of the terms "ML Kit", "Firebase ML Kit" and "Wear OS" but not found any definitive answers.
I don't have code on hand, but I am wondering would it even be possible to import/use the SDK on Wear OS apps in the first place.
Expected results would be being able to instantiate and use some of the machine learning models from the ML Kit API on a Wear OS watch.
Battery usage and efficiency are secondary at the moment, I'm just wondering if it is possible at all.
I have never tied it but I think it is possible. In the end, the Andorid Wear 2.0 (WearOS) is just another regular Android and it supplies direct internet access from the device.
I was able to succesfully use RenderScript on Wear devices but on the other hand I've faced an issue that Google Awareness API was not available on Wear. THis seem not to be the expected state.
Probably in the end you will need to do feasibility study on your own.
You can try to use some android MLKit sample and simply run it on Wear device.

How to make third party SDK for Xamarin? (like Facebook SDK)

I'm making app with bluetooth device with using Xamarin.forms. (PCL Project)
It's great platform and many great developers participate it.
I love it.
I have a question, let's say, I have to do porting third party library(SDK) from each native SDK for Xamarin. (ex-facebook / Of course I know there is facebook SDK for Xamarin already. It's just for example.)
What documents should I look?
In my actual case, I have to make app that uses DFU OTA to nordic bluetooth mcu. Nordic company gave to their developer native code(iOS and Android) for that.
Now I have to convert or use it on Xamarin.forms.
I learned dependency services and it works great.
Should I use dependency services?

Installing Eddybeacon

As far as I understand eddybeacon (just released by Google) is effectively a new 'operating system' for Bluetooth 4.0 Low energy devices (iBeacons). I have been experimenting with iBeacons for sometime now and want to try out a few things with eddybeacon. Has anyone had a go with it yet? I've read a few sites and they say it can be installed to some devices... Can anyone share how to do this?
If you want to start out by playing with Eddystone, you have a couple of options:
You can use a software transmitter. Just download my free Locate App in the Google Play store which will both act as an Eddystone transmitter and decode other Eddystone-compatible beacons in the vicinity. Google also has posted an Android app that can transmit the Eddystone-UID frame here, but you have to compile it yourself.
You can get a few hardware beacons for testing with a Developer Kit from Radius Networks (my company) here.
Once you have a transmitter, you can try writing some software to work with it. Here's a tutorial I wrote on how to build a basic Eddystone-capable Android app.
One other thing that might be useful is an Eddystone detector tool. You can use the free Android Locate app to detect and decode all of the frames transmitted by Eddystone.
So:
Eddystone is a specification for Bluetooth Smart (usually just called BLE) devices to behave like beacons — it defines the Bluetooth frames and content they need to broadcast to be seen as beacons.
iBeacon is not a generic term. iBeacon is actually Apple's specification for Bluetooth beacons. Eddystone and iBeacon are both examples of beacon specifications for BLE devices.
There are a few ways to get started with Eddystone beacons.
a. A number of hardware manufacturers sell developer kits that will let you get started with Eddystone beacons right away, and there is plenty of example software out, either from those vendors, or from the google pages on GitHub — github.com/google/eddystone and github.com/google/beacon-platform.
b. Some people have had good luck with Arduinos and Raspberry Pis. You can see an Arduino example here (Note: I have no idea how well that project works, I've just seen it used a few times.)

AltBeacon: Start a beacon on android

Is it possible to create an AltBeacon (so start advertising) on Android with the official Android AltBeacon library?
https://github.com/AltBeacon/android-beacon-library
Much like we can create an AltBeacon using the iOS libray and start advertising (https://github.com/CharruaLab/AltBeacon) can advertising be achieved on Android 4.3+ ?
Yes, you can use the Android Beacon Library to transmit, but it requires Android L and is not possible with Android 4.3. See the sample transmitter app here:
https://github.com/AltBeacon/altbeacon-transmitter-android
This sample app is based on a branch of the library that targets the new Android L operating system and provides a BeaconTransmitter class. Once Android L is released, this branch will be merged into the official release of the library.
The reason transmitting requires Android L is because Android 4.3 does not support BLE Peripheral mode needed to transmit as a beacon.
It is also important to note that the iOS AltBeacon project from CharruaLabs Lab mentioned above is completely independent and uses a different incompatible transmission format.

Is Serial Port Profile (SPP) supported on iOS 7 over Bluetooth Low Energy (v4.0)?

Can I use Serial Port Profile (SPP) to communicate with iOS devices over Bluetooth Low Energy (v4.0) without the need for MFi Chip?
If you're designing something from scratch (rather than trying to interface to an existing SPP-enabled device), there is a possible solution.
Laird Technologies make a Bluetooth Low Energy Module (BL600), which can be loaded with a virtual serial port application. This creates a service which is similar to the SPP; at the remote end it can just be treated as a plain serial port (albeit rather low speed). You could roll your own service to do something similar on other devices.
It's not the most elegant solution, but seems to work okay, and far easier than trying to get MFi certification.
If you cannot control the peripheral's protocol choice:
The Serial Port Profile (SPP) is still supported by Bluetooth 4.0. However, Bluetooth 4.0 Low Energy uses different pysical and link layer protocols that are not backwards compatible with older Bluetooth standards. Current iOS and Android devices use "dual mode" interfaces that support the backward compatible part of BT 4.0 and the Low Energy standard.
Bluetooth 4.0 Low Energy does not support SPP whereas regular Bluetooth 4.0 does!
I found a Cordova/Phonegap Plugin on GitHub that might serve as a source of inspiration for you. They advertise to support SPP on iOS and Android alike.
If you are in control of the peripheral, i.e. you implement the peripheral's software:
Bluetooth 4.0 Low Energy communication makes use of the Generic ATTribute Protocol. Based on GATT there exist a number of profiles but no serial port profile.
The good news is that implementing your own proprietary serial port profile on iOS, Android and your device is fairly simple. The API instructions for your BTLE module/SoC should provide some examples for existing profiles.
As soon as you see how simple implementing your own profile is, you will probably choose to go for a more use case specific profile which will save you lots of power on your (battery powered?) peripheral.
Just to clear up John Parsons comment from Feb 16th - the BL600 is definitely not discontinued whatsoever.
vSP works well for a low level, low throughput data connectivity using BLE for iOS devices, as well as Android. Video showing the solution working to an iPad are at this link and full source code is available for the iOS application as well http://www.lairdtech.com/Support-Center/Technical-Library/Videos/VSP-Bridge-Command/#.UwYvzGJ_s1w
There are no MFi requirements for BLE connectivity on iOS.
MFi is only relevant to Classic Bluetooth data connections to / from iOS devices, where you need to use Apple's iAP protocol, be a MFi licensee, use an external Apple Authentication IC and pay a royalty to Apple.
NO,you can't. BLE not support SPP.
No, you can't. In general, it's important to remember that any Bluetooth Classic profile isn't necessarily applicable for Bluetooth Low Energy. With BLE however, you can easily create your own custom service/profile, specially tailored towards your particular application. As far as I know, all BLE communication with iOS is currently allowed without participating in the MFi. You can also take a look at this page for further information on SPP and BLE.
I'm searching for SPP for iOS myself and found a German supplier, lintech.de, that has products for "Bluetooth meets Apple" claiming to support/emulate SSP, apparently using their own embedded software layer combined with iAP. "BlueMFI software communicate with APPLE devices using the iAP (iPod Accessory Protocol) and manage the data communication with the Apple authentication chip...BlueMFI software is designed to run on a variety of hardware platforms (Bluetooth modules), and interested users can obtain the relevant evaluation kits. LinTech’s Bluetooth modules with BlueMFI software not only support the APPLE iAP protocol via Bluetooth, but they are also able to communicate with standard Bluetooth devices." Haven't tried this yet, just exploring and sharing.
I won't say SPP is directly supported under iOS 7, Apple says no. Won't argue :)
But...
I use connectblue modules OBS421 and OBS425 on a data collection project.
BLE modules have SPP profile enabled and I transmit data from my sensors to the iOS devices using BTLE module in SPP mode.
Works pretty fine under iOS 6 and 7
That said, I was having trouble with MFi bluetooth devices under iPhone 5S, that's why I moved to BTLE.
Drawback with BTLE, it's limited to 20 bytes at a time.
I had to adjust hardware and software, but was easy.
You have programmable chips such as Bluegiga BL112 that are doing the job. It is the cable replacement code.
I'm integrating it actually for both iOS and Android 4.3. It works at least on the demo board.

Resources