Saturday, September 6, 2014

Schedule-ALL (PRO) - A Unique way to schedule you connections!

As you probably know, I am a software engineer at heart. After a looooooog time I took to designing and coding. This time on Android. Last weekend I sat down and started to dabble with Java programming (which I have never done in my life, because I was a core Microsoft guy) and Android app development.

What started off as an Android learning session turned into a full-fledged app! 

For a long time, I have had an idea of having an app to automate all my data connections such as WiFi, 2G/3G, Bluetooth and Sync based on my usage. I needed this app to manage my connections and my Sync so that its optimized based on my usage.  I searched on Google play store and elsewhere for something which matched my requirement, I found quite a few and tried them. Many of them were good, some of them were crappy, some were too complex and some were way too expensive for what I needed.

So I thought about creating a simple app which would automate WiFi, 2G/3G, Bluetooth and Sync based on my need. That idea gave birth to this app called Schedule-ALL.

You can buy this app here at Google Play Store

UPDATE: After sharing this app with family and friends - I had one consistent question from most of them. WHY ON EARTH WOULD I NEED THIS APP IN THE FIRST PLACE??
I thought I had answered that in my FAQs section, but apparently that's not enough. So let me try it one more time
About Data Connections and Sync In Your Phone
Firstly - Depending on the model of your phone, it may have upto 4 types of data connections

  • WiFi
  • 2G/3G
  • Bluetooth
  • NFC (Near Field Communication)
Most have have at least the first 3 types above. Important thing to know about these data connections is that they all generate radio waves when they are on. So when something "generating" something, it needs energy. In your phone that source of energy is the battery. So if your phone has any of these connections ON then it means your phone is expending battery to just by keeping these on, whether you use them or not. 

Secondly - There is something called a Sync service which runs in the background. This service is used by your phone to sync things like Emails, Contacts updates, Newsfeeds, RSS feeds, Regular photo uploads, Google+ updates, Facebook Timeline updates and so on. So Sync takes up a lot of data. Since Sync requires either WiFI or 2g/3g it also takes up your battery.

NOTE - Sync is not used to send/receive Whatsapps, hangouts, Facebook or other notifications . So putting Sync off doesn't affect these messengers.

Most manufacturers, by default, keep WiFi, 2/3G, NFC and Sync to be always on. There are 2 adverse effects of this.

  1. Your battery drains unnecessarily
  2. Your phone consumes a lot of data in the background without your knowledge

What this app does is the following

  1. Lets you schedule which connections (WiFi, 2g/3g and Bluetooth) is ON at what time of the day. Let's say, if you are in office from 9 AM to 6 PM, then you dont need the WiFi to be ON at that time. But you would need your 2g/3g Data and Bluetooth (for phone call) to be ON
  2. Lets you schedule at what intervals your sync service runs. Lets say you are OK to check your mails every 2 hours, then can schedule Sync to run every 2 hours
  3. Apart from this it lets you choose WIFi as a priority data connection over 2G/3G (by using those check boxes). This ensures you are not unnecessarily on 2g/3g data connection when you can as well be on WiFi. This reduces your 2g/3g data consumption.
Benefits of this kind of scheduling is 2 folds
  1. Only the RIGHT data connection (2g/3g or WiFI) is kept ON - There by reducing battery drain
  2. Sync is not always ON - Reducing battery drain and reducing 2g/3g data usage when on 2G/3G network

App is based on the following Design Philosophy
  • It should be simple and intuitive to use
  • It should not take you through too many screens
  • It should let you schedule connections toggles and sync toggles in less that 10 seconds
You try it and see for yourself I met my own design philosophy

I will now let you enjoy some of the screen shots and the App FAQs

1. What does the app do?
App allows you to perform following actions

a. Manually Toggle WiFi, Bluetooth, Data and NFC connections.

b. Manually start Sycn and set the duration for the sync to run.

c. Schedule Sync to start every X minutes and run for Y minutes once it has started.

d. Schedule Wifi, Bluetooth, Data and Sync to start and stop at specific time of the day everyday.

e. Cancel All the previous schedules (so you can start a fresh).

2. Once I have set the schedules, how long will these schedules run?
All schedules will run as long as you don’t cancel your schedules (Using 'Cancel All Schedules' button) or un-install the app. The app will re-schedule all your previously set schedules on reboot. So you dont need to worry about setting them again. Schedules will also be intact even if you update the app (without un-installing) from the play store.

3. Will the app drain my battery?
No, app itself is not in the memory after you have set your schedules. App uses Android's AlarmManager APIs to delegate the schedules to Android OS. It behaves in exactly the same way your android alarm clock does, except everything is in the background, so you wont even notice it.
4. Why would I need this app?
If, like me, you have set times when you want Data/Bluetooth/WiFi/Sync to be enabled or disabled everyday and you dont want to manually go into settings to do all this, this app will do it for you. Ensuring right connections are enabled at the right time. Controlling sync will help you to not only ease your life but it will also save your device's battery life.

My Settings are:

Sync: Run every 2 hours for 5 mins (this is more than enough for downloading emails over 3G or Wifi. On 2G you may increase the duration to run to maybe 10 mins)

Wifi: Start time-17:00 AND Stop time-10:00 (this is the time I am at home, I start wifi an hour earlier than I reach home)

Data: Start time-8:00 AND Stop time-18:00 (this is the time when I am out)

Bluetooth: Start time-8:00 AND Stop time-18:00 (this is the time when I am out)

5. Why does manual toggle of NFC take me to settings? and why cant I schedule NFC?
Answer to first question: Google Android APIs doesnt provide any direct control over NFC connections to programatically stop or start it. Apps can only use the NFC connection, if it has alreayd been started. I have given the next best option to let the user go to the system settings screen and toggle it manually.

Answer to second question: Since Android APIs do not allow to manually start/stop NFC, its pointless to provide a scheduling mechnism, unfortunately! :-(

6. Will Schedule-ALL help me save my battery?
Although I dont explicitly claim that Schedule-ALL will save battery juice, it has been proven that using connections that you only need and stopping all other connections does improve battery life. Most battery saver apps use controlling connections as one of the foremost weapon to protect battery juice from draining. Also Sycn is huge drainer of battery and it uses a lot of data if its on continuously. So yes, it will definitely help your device battery perform better also saving you data usage.
7. How to use settings 'Stop Wifi only if Wifi is Disconnected', 'Start Data Only if Wifi is NOT Connected' and 'Stop Data Only if Wifi Is Connected' ?

Stop Wifi only if Wifi is Disconnected - If you have scheduled your wifi to be stopped at a certain time say at 1:00PM everyday if you check this box then the app will check if you are still connected to any WiFi network. If you are connected to any Wifi Network then it will not disable the WiFi and rechedule itself to check back to see if the Wifi can be disconnected in 30 minutes.

Start Data Only if Wifi is NOT Connected - This will prevent your scheduled data from starting if you are connected to WiFi.

Stop Data Only if Wifi is Connected - This will start the data only if you are disconnected from WiFi.

There 2 Purpose these settings server

1. They ensure that Data (2G/3G) is not enabled unnecessarily if you are already connected to WiFi.

2. They ensure that you always connected to one network or the other.

These settings only affect your scheduled connection controls. As usual, you can always override these with manual settings.
8. What is 'Sync ONLY when connected to WiFi?

If you have scheduled your sync to start at specific times, then checking this setting will start the sync only if the device is connected to WiFi network. If you are n 2G or 3G then the Sync will not start. This doesn’t affect the manual Sync.