November 5th, 2018, 8:01 pm
Hi all, and thanks for your feedback.
Indeed there seems to be an extra state with android apps that I was also not aware of: swiped up in the app switcher, but not terminated. Our android team is on it.
That said, both the app and the Firmware is designed in such a way that it adapts to each use case and uses as few resources as possible in every case.
This means:
1) ACTIVE: while the app is in the foreground (ie your phone's screen is on, you're seeing the app), and you are actively using it, camera communication (settings) is on, and we're using the highest amount of energy.
2) FOREGROUND: after about 2 minutes, if you're not actively using the app (even if it's still in the foreground), the firmware will stop fetching settings from the camera, to allow the camera meter to go off. The meter of the camera is actually what's using most of the energy, not the communication itself.
3) BACKGROUND: if you switch to a different app, or turn off your phone's screen, the app goes into background mode.
4) DISCONNECTED: if you kill the app, the bluetooth connection is terminated, and the Unleashed knows nothing more of the app.
(it looks like there's a 3.5) in Android, which I also did not know about.)
If GPS is off, and the app is in foreground or background mode, there is virtually no communication between Unleashed and app, but Bluetooth remains connected all the time. Bluetooth Low Energy is designed in such a way that this draws as good as no power, certainly much less than if the App/Phone keeps searching for an Unleashed to connect to.
If GPS is on, and the app goes to background mode, we switch from the app actively sending GPS data every [GPS Interval] seconds to the Unleashed, to the Unleashed requesting it at this interval, but only while the Camera is being actively used. So if you turn off your camera or simply stop using it, after a certain timeout, the Unleashed will also stop requesting GPS data from the phone, and go into a low power sleep mode, to conserve energy. Again, Bluetooth stays connected, so that when you start using your camera the app knows immediately that it should send GPS data, or if you open the app, the Unleashed would start communicating with the Camera again, and you're instantly ready to use it.
iOS as well as Android are designed to leave Apps running in the background, Apple actually even recommends not "killing" apps, as in most cases, the apps use more resources if you kill and reopen them, than if you leave them running in the background. And if that's not the case, Apple will "kill" the app for you! In fact, if your app uses significant energy while in the background, it won't even be allowed in the App store. I suppose this is a big difference to Android - pretty much anything is allowed in the Play store, which means many App developers won't put too much thought into energy use. (This becomes obvious when you look at the Top charts in the Play store and seemingly half of the apps are "Cleaner" apps to help get rid of energy- and resource-wasting apps). And maybe this makes Android users use their phones very differently than iOS users.
But of course we did put a lot of effort into low energy and resource use, so that the app can be left running in the background. And if you want GPS data, it's a requirement (where else should the Unleashed get it's data from).
I hope this clarifies the issue a little, but we'll definitely still look into that 3.5 state between Background and disconnected.
Founder & CEO of Foolography, Hardware & Firmware developer.