React Native for Native Mobile Developers?
Recently, I had to start working on a project based on the React Native framework. Being a Native Android developer for quite some time and having worked on iOS too, having read few of devs talking about why not to use react native for mobile app development, I was skeptical to build anything using React Native. But since the whole team consisted of web developers, and they find it easy to develop using a JS based framework, they insisted on using React Native. I, being just a bit familiar with basics of vanilla javascript and having no idea about React or React Native, hesitated at first, but then I decided to take it as an opportunity to learn, I dived into it. It took almost a week for me to get the initial codebase running without the server disconnecting or failing to bundle and install. At the outset, I was given the mostly Android-native side of sensor data reading and bridging with React Native and emitting events. Once done, now the challenge was to use different packages for getting foreground service, location provider, permissions, alarms, and workmanager. When I was going through these packages, I saw issues like abandoned packages or no support for the latest Android versions, a lot of open issues that were not addressed etc.
BLE on Android
BLE is the Wireless communication where very less energy is consumed compared to standard Bluetooth Classic. Like other mobile platforms Android natively supports it.
I started working on BLE commnunication using healthcare devices like Weight Scale, BP Monitor, Glucose meter and Pulse oximeter. The problem I had to solve was to improve this communication where users were facing a lot of issues pairing/syncing these peripherals with Android phone running our app. Having very brief documentation about BLE low level APIs on Android, handling the asynchronous communication, resolving errors was not an easy task. We ought to have written a layer of abstraction on top of these APIs which would handle command queues, threading and managing connection. But then we found this Library Blessed which helped us solve all these issues and communicate better with BLE peripherals on Android.
Applinks on Android 12
If you are trying to access your app from web, trying to click on a link which automatically opens the app without ambiguity, you need app links to be created.
Before Android 12 (API 31), adding intent filters under the Activity
which needs to open on link clicking would open the default app, may be with some amibguity.
Accessibility on Android: make apps accessible to all the users
Screen Reader:
-
When Screen Reader is turned on, on Android devices, it automatically announces what element is in focus.
-
It is recommended to use views that Android provides which include view’s role and content required by Accessibility service. If you need a custom button, you extend the Button rather than starting from scratch with a View.
Then Joda, Now Java 8 APIs
Why Joda?
I had to implement a feature in our app which would trigger repeat alarms which will be set based on specific events. Our project minSdk was set to 23 (Yes, we support Android 6!) and I thought Java 8 Time APIs I cannot use. So Joda was the option I had.
Bluetooth Permissions on Android 12
Beginning with Android 12, new run-time permissions are added for accessing nearby Bluetooth devices. Without this permission any APIs related to Bluetooth devices access will result into Fatal Exception:
Welcome!
You will find here some debugging, some tips and tricks from my experience.