I recently purchased a new Android phone, the Samsung Epic 4G from Sprint, and I love almost everything about it. However, when I first started using the phone battery life was absolutely horrendous. Even with light usage I was unable to make it through a full day on a single charge and I often had to plug the phone in and charge it several times per day. Now, though, I've done some research and experimentation and am happy to report that not only does my phone make it through the whole day on a single charge, but I also have upwards of 40% battery remaining when I go to bed at night. Now I can let the kids play Angry Birds without fear of my phone dying.
This post will explain how you too can achieve good battery life for your Samsung Epic or other Android phone, and do so without sacrificing the functionality you've come to depend on. (Note: while much of the advice in this blog post is specific to the Samsung Epic, there are some general strategies that apply to any Android phone, so you may find something of interest even if you do not own an Epic.)
A Note About Task Killers and Other Ineffective PracticesIf you read a typical forum post from a poor user suffering from battery life problems, the post will usually start out with frustrated pleadings like
I've tried everything! I turn off Wi-Fi, live wallpaper, and use Advanced Task Killer to kill all running apps and services, but nothing works! Help!Usually the helpful people trying to answer such pleadings offer further advice about turning off GPS and Bluetooth, or reducing screen brightness and timeout. While these techniques can provide incremental improvements to battery life, they do so at the cost of functionality of your phone. I do personally keep Bluetooth disabled when I'm not using it, but always leave wifi and GPS enabled (GPS does not consume any power just by being enabled, only when an app is actively using it). And of course, 4G data connections are known to be a serious battery hog so you probably don't want to leave that on all the time.
Automatic task killers, though, are most likely doing more harm than good and I do not recommend using them. Android manages tasks and processes quite well on its own and automatic task killers interfere with Android's normal mode of operation. Any time a process is killed, it means that it will consume more power next time it needs to be started. Furthermore, many of the tasks that are killed by these auto task killers are important components of your phone's functionality and having them killed in the background is only crippling your phone. I do keep a task killer app on my phone, but only use it when I suspect that an application is misbehaving, and can then individually kill the suspect app. Never let an automatic task killer indiscriminately kill apps or services in the background; doing so is just shooting yourself in the foot.
With that little lecture out of the way, let's look at some practices that are effective at enhancing battery life.
Disable the DRM ServiceThe Samsung Epic (and presumably other Samsung Galaxy S class phones) come with the Media Hub application for viewing movies and television programs. While this may some day address a gap in the Android platform, as it stands today the Media Hub application offers only a very limited set of programs for rent or purchase. Worse yet, though, the DRM service that comes with the application is a severe power hog. The biggest battery boosting technique you can perform for the Epic is to disable this service altogether.
To disable the DRM service, start from your Android home screen and then go to:
Once there you should see an entry for the Samsung DRM service. Click on this entry to disable the service, and voilà, you instantly have better battery life.
Menu → Settings → Applications → Running services
(Note: while you are there, take a look around and see if there are other services running that you do not need. I disabled a couple of other services on my phone, namely the Aloqa widget update service, and the SportsTap widget service since I don't use either of these widgets.)You may come to find that this service spontaneously springs back to life. You could occasionally repeat this process and stop the service whenever you notice it is running, but why would you want to do that when your phone can do it for you? To permanently kill this service you can use a startup auditing application to make sure that it doesn't reincarnate. I installed the Startup Auditor app, which is a paid application but there are free apps that offer similar functionality. With Startup Auditor I was able make sure that the DRM service did not start automatically at boot time, and furthermore would never spontaneously start itself at all.
|Startup Auditor Free |
A boot monitor and startup monitor tool which displays a list of applications you may disable. Free version supported by ads.
|Startup Auditor |
A boot monitor and startup monitor tool which displays a list of applications you may disable. Full version eliminates ads and can disable unlimited.
The Airplane Mode Toggle TrickOne of the biggest drains on a mobile phone battery is when there is a weak signal and the cellular radio frequently scans for a signal. Not much can be done about this when reception truly is weak or there is no signal whatsoever. However, there is an insidious bug in the current Epic firmware that "tricks" the phone into thinking it does not have a signal, and causing the power drain while the phone is scanning for a good signal&emdash;even though it already has one!
You can tell if you are affected by this bug by checking your battery usage:
(Menu) → Settings → About phone → Battery use → Cell standbyOn this screen you will see a line that reads "Time without a signal". If you've been in a good coverage area but the percentage on this line is high (say 50% or so) then you are suffering from the bug described previously.
Now, how to fix it? Until Samsung or Sprint provides us with an update, there is a simple trick that works around this bug. All you have to do is put your phone in airplane mode. Hold down the power button on your phone until the pop-up menu appears and then select Airplane mode. Wait approximately 15 seconds, then repeat the process to take your phone back out of airplane mode. For reasons that are not clear to anyone, this airplane mode toggle will prevent the false weak signal bug and the battery drain that goes along with it.
One important thing to note is that this workaround does not survive a power cycle. You will need to repeat this process every time you restart your phone.
Prevent Wi-Fi SleepAn oft-cited bit of advice is to disable wi-fi to preserve battery power. While this may be true for who are not frequently connected to wi-fi or who spend most of their time on the road, it is actually counter productive if you are usually within range of a wi-fi access point. This is because an active 3G connection consumes more power than an active wi-fi connection. To make matters worse, though, Android's default settings for wi-fi sleep policy are suboptimal. The default setting is to disconnect from wi-fi whenever the screen timeout has been reached, and this in turn causes a 3G data connection to activate. When you turn your phone screen back on your phone will then reconnect to wi-fi. This cycle of wi-fi off → 3G on → 3G off → wi-fi on consumes significant amounts of power. It would be better to leave the wi-fi connection active regardless of the state of the screen. You can do this by changing the wi-fi sleep policy:
(Menu) → Settings → Wireless & networks → Wi-Fi settings → (Menu) → Advanced → Wi-Fi sleep policy
Change the setting to Never. I work from home and am therefore usually in range of my wireless router. I speak from experience when I say that this change can make a significant difference in battery life.
What about the road warriors among you, though? If you are typically out and about and not always connected to a wi-fi access point, changing the global Wi-Fi sleep policy will probably prove detrimental, as your phone will constantly keep scanning for wi-fi connections even when it is otherwise sleeping. Fear not, there is a solution for you too, at least if you don't mind paying for the overall excellent Locale app and installing a couple of very useful plugins. Here is what you will need:
A powerful app allowing you to create situations and apply settings and other actions when the situation is active
|KeepWiFi Locale |
A Locale plugin that keeps wi-fi enabled when active
|Locale Wifi Connection Plugin |
A Locale Plug-in that allows you to set a condition based on what wifi network you're connected to, instead of within range of
- Open Locale.
- Create a Defaults situation if you do not already have one.
- Go into the Defaults situation.
- Push Add Setting.
- Push Keep WiFi.
- Leave the value for KeepWiFi Service as Off, then use the back button on your phone to go back.
- Save the Defaults situation (Menu → Save).
- Push Add Situation.
- Enter a name for the situation (I named mine after my home wi-fi network).
- Push Add Condition.
- Choose Wifi Connection.
- Enter the SSID of your wi-fi network, the use the back button on your phone to go back.
- Push Add Setting.
- Choose Keep WiFi.
- This time change the KeepWiFi Service value to On, then use the back button on your phone to go back.
- Finally, save the new situation (Menu → Save).
Other Miscellaneous TipsThe following are more well-known tips for extending battery life and since most people are probably already aware of them I don't feel I need to expound upon them very much, but I include them here for reference.
- Disable 4G data connections whenever not actually in use.
- Uninstall any apps that you do not use and do not plan to use.
- Limit the frequency of background sync for things like Facebook, Twitter, email, etc.