I'd like for my Android phone to automatically turn off some features overnight to save battery, and re-enable them in the morning. Among the things I'd like to turn do:
I don't need any fancy idle detection. I'd be happy with the ability to do this from, say, 12am to 6am.
What Android apps are good for this sort of thing?
If you don't mind paying for an app, then this is very similar to the sort of thing that Locale for Android does, you can set it to switch stuff on or off, or run apps on your phone when certain conditions like fine/coarse location, etc are met. There are also quite a few Locale plugins (many of them free) available on the market that give it loads of extra functionality.
I use Tasker to do exactly that, and much (much) more. Whether or not it can switch between 2G and 3G seems to depend on the handset, which you don't mention. Here is an example from the Tasker Wiki, showing how to set the phone into Airplane mode at night.
Note that the GPS only uses power if something uses it, so turning it off is highly unlikely to make any meaningful difference to your battery life.
Maybe SweetDreams can do the work for you. According to a ruleset it will turn off bluetooth, wifi and select the ringtone configuration of your choice during a determinate time range.
I use Llama to do similar things on a schedule, e.g. put my phone on silent while I'm at work during working hours, turn off Wi-Fi when I leave home, and so on.
You can set events to occur based on where you are among other conditions such as time/date, screen on/off, battery level, etc. Llama learns locations based on the cell towers that are in range rather than your Wi-Fi or GPS location, so it does not eat into your battery at all. Llama does not require root. I find it very easy to use and now that I have it configured the way I want, I don't ever look at it unless I want to change something.
I use Timeriffic (free) which will turn on/off wifi, gps, change ringer, brightness etc. based on timed schedules.
Unfortunately "Use only 2G data networks" is not in the options.
Also, if you use Juicedefender https://market.android.com/details?id=com.latedroid.juicedefender&hl=en that has an option for night mode with everything you were talking about and more, JuiceDefender is pretty awesome anyway. Lastly, if you have rooted your phone, Cyanogenmod http://www.cyanogenmod.com/ also has a night mode.
You can certainly do it based on your location: http://www.twofortyfouram.com/product.html
I have enquired of their support whether you can use time as one of the switching criteria, I would be surprised if you could not. Even if it isn't available out of the box, there is a plugin system and scripting that I am sure would do it.
I do not own the app so I cannot comment on it's efficacy, but I have seen good references.
Response from developer
Can Locale be made to switch situations based on time alone, such as going silent at night regardless of location? John
Silence can toggle your ringer, Wi-fi, Bluetooth, and airplane mode settings automatically over scheduled intervals.
- Simple, intuitive Holo-themed interface
- Schedule events that occur once, or repeat on certain days of the week
- Change your ringer to silent, vibrate, or normal mode
- Turn Wi-fi, Bluetooth, and airplane mode on and off
- Change your settings back automatically when the scheduled event ends
There is also a paid version without ads.