Skip to main content

The problem with Android (and Apple iOS)

I have been using pure Android now since the Nexus 4. I am on a Nexus 5 now and before I was using Samsung Galaxy S3 and S both on various versions of CyanogenMod, the latest was 11.1.

So I  have quiet some experience with the platform and it evolution.

To make things very clear: pure Android on the Nexus 5 does not have a longer battery life than 3 hours!  Using your phone as a route planner with mobile data on and the GPS on makes it live barely 1 hour! These are from my real every day experiences. 

That is when you watch a video or listen to music (!). The latter I find quiet amazing because processing a video and show it on screen is for sure not the same thing than having the device screen of and listening to music only. Strangely it does. And I used Google Play. Maybe that is the reason.

If you put of WiFi and mobile data my Nexus 4 on Android 4 last for 7 days and the Nexus 5 several days only.

The reason why their performance on battery life when active is so bad is because Android (and also Apple iOS) has a big problem which the developers of Android (and Apple iOS) did not take into account when developing the system but has in fact become the reality and for now they have no answer to it. Maybe Android L or LoliPop address the problem but I doubt it because Google is in fact part of the problem. Why? Let me explain.

The nice thing about a smart phone is the fact that is has so many functions integrated into a device. It is a computer with a GPS, gyroscope, compass, camera and etc. integrated so you can e-mail, browse on internet, use it as a route planner, listen to music, watch a video, take a picture and many more functionalities.

The great thing is the wide spread of "free" applications. I put quotes around free because are they really? I will go in to that later. These applications can ask access to the hardware of your smart phone and you as the owner needs to say OK when you install the application.

From then on the developer of the application can actually do what they want with that. If they are nice they try not to use too often the access to the hardware because then the application will show up in the list of battery hungry apps and that is of cause not good but that is the only limitation.

In order to access the hardware functions an application needs to set a WAKE_LOCK telling Android not to put it to sleep when the smart phone has no longer its screen on or the application is moved to the background. Again Android does not restrict in any way these WAKE_LOCKs.

The only limitation is the user of the smart phone. He or she can turn of WiFi or mobile data or the GPS (Location Access) to save batter and that is the only possibility the user has in Android. It is a very radical one, but there is. Google does not like this very much and I will explain you later why.

So suppose you want to use a application that tracks you while working out. You download it and you accept that the application has :
- Full access to internet to store your workouts
- Access to your phone ID so they know it is your phone running (this is unique in the world)
- Access to your GPS to track your whereabouts when running

That would be the least rights required to make the application run and do its thing. In reality the applications ask much more rights. Why I explain you later.

As soon as you restart you phone applications that wanted to be start up at restart are started  and it some send that event to their owners. Then you start your workout and you start the application. Now the application asks Android access to the GPS and internet if on and the access is granted. Using your phone ID you are able to collect your workout data and store them in a dedicated phone ID profile on internet or on your phone.

From then on it is up to the developer of the application how many times he ask the GPS your location to store it and how often it uploads the data into the internet. It can do every minute, every 10 seconds or real time. The latter of cause makes the application continuously use the GPS giving a real nice exact representation of your workout on Google Maps but drains your battery like hell. If ones a minute then the representation is a bit with corners so less nice to look at.

Of cause that would not please the users so developers have to choose a middle way that pleases the user in accuracy and battery life. But it is the developers choice. There are roufly three kind of developers:
A good developer
A bad developer
A Google developer

Why a Google developer? Because they can either be a bad or a good developer but because it is Google it is not bad or good: it's Google so OK. Basically they can get away with anything and some of the applications you cannot even replace because they are part of Android. You can download an additional application but then you get this pop up every time to remind you that there is another application then the standard one. In general people give up and uninstall the second one.

Google Maps for example is known in several versions to massively drain your battery and nobody cares and keep using maps because it is the best application from a user friendly point of view. Some complain an most of the time Google never even listens because: he we are Google.

Some people post even bug reports (like the one here Issue 63524) and some get resolved but this one in particular I can tell you that even on Android 4.4.4 it is not resolved. I still see my Nexus 5 sometimes switch of completely the mobile network to put it on again after minutes. 4G is cool to use when it is there and I want it so I am a bit stuck here. And that is the general thing with Android (and iOS): sometimes you are stuck and you have to wait for the next update or release. Which is of cause not good but do you have a choice?

Back to our workout application again. So this is a good developer and he or she gives you in the settings of the application 3 options:
Smooth precision - high battery usage
Medium precision - medium battery usage (recommended)
Rough precision - Low battery use (not recommended)

The developer points you already to the medium option which he sets internally to 10 seconds. Every 10 seconds the application will collect your position from the GPS and send it directly into the internet if there is a connection. If not it stores it or warns you that your internet connection is not active and you could lose your workout. Again an average user right away activates mobile data or wifi because that is not what the user want: lose data.

During the run you will check your mail and send an SMS and our workout application continues to collect data and send it over the internet to its home because it uses a WAKE_LOCK, telling Android that it has the right to stay active.

Your e-mail was important so you go home and quite your workout. But the application has not. It will collect GPS data every 10 seconds and send it over internet until you tell it to stop it. Android has no way to know that you have quit

This was an easy example. Because an application is free the cost of development can be paid by adding adds. Now Marketing comes in and they see the potential. The application becomes more and more popular and they propose to add access rights to contacts so you can share your workouts with friends.

Android makes no difference between one address book or another or what contact field or another so because you use your phone also professionally, you can share your workouts with your friends, collegues and ... boss. Ahum.
The other way around is also true. So if the application wants to collect your contacts (Like LinkedIn) it has in fact collected all your private AND professional contacts with all the data you have: their birthdays, spouse, children everyting. Android has currently no way to give selectivelu access to 

Comments

Popular posts from this blog

Privacy and the liberty to express yourself on LinkedIn

Unaware that LinkedIn has such a strong filtering policy that it does not allow me posting a completely innocent post on a Chinese extreme photography website I tried to post the following: "As an Mpx lover I was suprised to find out that the M from Million is now replaced by the B from Billion. This picture is 24 Bpx! Yes you read this well, 24 billion pixels.  Searching on the picture I stumbled on a fellow Nikon lover. If you want to search for him yourself you can find him here: http://www.bigpixel.cn/t/5834170785f26b37002af46a " In my eyes nothing is wrong with this post, but LinkedIn considers it as offending. I changed the lover words, but I could not post it.  Even taking a picture and post it will not let this pass:  Or my critical post on LinkedIn crazy posting policy: it will not pass and I cannot post it.  The technology LinkedIn shows here is an example what to expect in the near future.  Newspapers will have a unified reporting using

Windows Server 2016 with ... XBox extensions !!!

Microsoft must have been thinking that the live of a Windows administrator gets so boring that they need a distraction and they have integrated the XBox Live extensions standard in Windows Server 2016.  No kidding: take a look. I did not select it as a feature and it is there. As you can see the XBox Live service is started automatically even in mode manual (see error log).  To my opinion these 3 XBox Live services should never be available on a server. Unless the server is part of the XBox Live platform of cause but honestly I don't think that Microsoft will allow that.  Every IT manager with a serious Windows production environment would fire any administrator playing XBox Live on the production servers. So though it might be tempting don't do it Windows administrator. It is a trap! :-)

How to run SQL Server 2016 with In-Databasse R on Windows 2016 CTP5

For those who like me tried to run SQL Server 2016 with In-Database R might have run into the same problem as me: In-Database R or the LaunchPad service gives a timeout and won't start. I did several clean installations with different configuration options - for instance I like to put my data on another disk than the system disk - but in the end I tried to do the next, next, next, finish install to see if it something in the setup options is hard coded in there (yes, it happens developers!). For some reason this problem is related to Windows 2016 and not on Windows 2012R2 and I hope the SQL Server team will soon resolve these issues because they are in one word a bit sloppy.  There are 2 issues (maybe even 3 so I give this one also):  The R setup does not create the ExtensibilityLog directory in the "C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Log" directory The R setup sets the number of users in the SQL Server Launchpad service to 0 it is pos