Dealing with Bluetooth differences in Android
Posted on December 21 2015
What users expect from new versions of Android are visual upgrades and more useful features. App developers, on the other hand, look forward to the technical improvements, often invisible to the user, that make our work easier and our products better.
Android’s design and features - and the way that we integrate apps with these features - are consistent across all devices. It’s up to each phone manufacturer, however, to implement the features on their specific hardware. This means that the same app can behave differently on different phones, especially when it comes to hardware features such as Bluetooth, Wi-Fi or the camera.
Safedome connects to your phone via Bluetooth Low Energy (LE). That's why we specifically focused on the differences that arise as a result of this hardware feature with our development and testing.
How we approach testing
To test, we grab as many devices as we can, covering as many popular manufacturers, screen sizes and Android versions as possible, and we run our app on all of them. Simple. Across most devices the app works the same, which is what we want. Occasionally, some devices exhibit unusual behavior. These cases are recorded and prioritized to be fixed or improved.
Given a good cross section of popular devices, we can be reasonably certain that the app will work for most of our customers. However, regardless of how many devices we test on - dozens, or even hundreds - we can never cover everything. There’s still a chance of getting a support ticket from somebody using a device (or a carrier variant of a device) that we haven’t tested and that has a mysterious bug. Unfortunately, that’s the reality of Android development.
Working vs. working well
Android aficionados will know that Bluetooth LE was introduced in 4.3 and has improved with every major update since. What our testing uncovered, however, is that supporting a feature doesn’t necessarily mean supporting it well.
Android 4.3 (Jelly Bean) proved to be too unstable for our use case and the decision was made to exclude it from the app. We would rather not offer support on this platform than offer intermittent, unreliable support.
Android 4.4 (KitKat) was better, but still inconsistent. Some phones worked well, while others were either slow or had issues that were hard to reproduce. As a result, we opened up support for KitKat, but decided to display an in-app warning notifying the user of the potential for problems and recommending that they upgrade if possible.
Android 5.0 (Lollipop) was the first version with decent Bluetooth LE support. Most devices function predictably with only minor model-specific issues, which is why it became our recommended version.
Android 6.0 (Marshmallow) only slightly improves on the stability. It’s not yet available on many devices (except for those launched with it), but that’s not a major setback, considering that 5.0 already provides the best possible Safedome experience.
We’re keen to see what the next version of Android has in store for Bluetooth LE. Rest assured that we’ll be extensively testing Safedome against it even before it launches to make sure everything works as designed.