Wednesday, July 20, 2011

Smart Ring Control for Android

Smart Ring Control is setting your phone ring volume depending on its position.  You can set different ring volume levels for when the phone is horizontal with the screen up, when the phone is horizontal with the screen down (on the table), and when the phone is vertical (in your pocked, handbag, etc.).

The app uses the accelerometer sensor of the phone to recognize if the phone is horizontal or vertical. The Pro (paid) version also recognizes if the phone is horizontal with the screen up or the screen down.

This ring volume control application is similar in function to PocketMode for iPhone and the Pocket Mode option of the latest HTC phones. But it uses the accelerometer sensor instead of the proximity sensor (which PocketMode uses).

You can set the Pro version  so when ring volume is changed (via volume rocker buttons), it pops up and allows you to adjust the ring volume for each phone position. Or you can lock the ring volume and not allow the volume rocker buttons change it by accident. Please  note that some third party applications may also change the ring volume (some camera applications tend to control the shutter volume when taking pictures), hence the triggering the Smart Ring Control application popup window.

Additionally, you can set the phone to be muted for a period of time from within the application. For example, when you go to a movie, you can set the phone to be muted for 2 hours, and it will enter silent mode for 2 hours. Right after you finish watching the movie, the phone ring volume will be automatically restored to the previous settings. Or you can go to sleep and turn off the ringer until the morning when you wake up.

Below are screenshots of the application windows, and description of each of the control options it offers.

The Basic tab

1. Slider to set the volume when the phone is horizontal with the screen up.*
2. Slider to set the volume when the phone is horizontal with the screen down.*
3. Slider to set the volume when the phone is vertical.
* - The standard version has one slider only - for when the phone is horizontal, regardless of screen up or down.

4. This button mutes the phone for the time specified next to the button.
5. This clock specifies for how long the phone will be muted.
6. This button mutes the phone permanently, until you un-mute the phone.
7. This slider sets the time the phone will be muted. By dragging it left or right you increase or decrease the time the phone will be muted. The standard version can mute the phone for up to 8 hours, while the Pro version can mute the phone for up to 12 hours.
8. The "-" and "+" buttons are used for fine tuning of the time the phone will be muted.


The Advanced tab

1. This button is used to close the application.
2. Vibrate when phone is horizontal with the screen-up.*
3. Vibrate when phone is horizontal with the screen-down.*
4. Vibrate when phone is vertical.
5. Vibrate when muted. Please note that this checkbox is for only when muting the phone via this app! If you mute the phone via the volume rocker or power buttons, it will vibrate or not depending on your preference in the sound settings section (system settings>sound).
6. Show or hide the timed mute controls on the home screen.
7. Keep selected to have the the app automatically start on phone boot. This way you won't have to start the application manually when restarting your phone.
8. This drop down defines how to treat the volume rocker buttons clicks. For example, you can lock them so you won't accidentally change the ring volume when handling your phone. Or you can set the volume rocker buttons to adjust the horizontal ring volume. This way you can always use the volume rocker buttons to adjust the ring volume when your phone is on your desk and it'll still ring loud enough when in your pocket so you can hear it.

* - The standard version has one option only  - for when the phone is horizontal, regardless of screen up or down.

Below options are available in the Pro (paid) version only:
9. Detect Phone Position - this defines when the phone position should be detected. Options are on incoming call/message, or on every 5 seconds or 1/5/15 minutes. Checking the position on regular intervals may help with some phones that cannot determine the position instantly. They usually change the ring volume after the phone started ringing, which is annoying. By setting to check the position on regular intervals, you will ensure that when the phone starts ringing, there are no surprises.
10. Quiet ring on pickup - as the name suggests, this option lowers the ring volume once the phone is picked up from a table or desk. Or in other words, when the phone starts ringing, it monitors if the orientation is changed from horizontal to vertical and if there is such change - lowers the ring volume.
11. Use this option to detect when the phone is in your bag or pocket and force the phone to ring using the vertical ring volume level. Sometimes the phone is horizontal when in your bag, so you may not hear it. Use this option to make it ring louder even if it's horizontal in your bag. This option overrides option #14, as they are contradictory. This option also means that your phone will always detect proximity when your phone is with the screen down. So do not use this option if you  want to have different ring volume for when the phone is with the screen down.
12. Select this option if you want the SMS notifications volume to behave like the ring volume. I.e. - to change the SMS notifications volume depending on the phone position.
13. Run the service in the foreground. This will ensure the service is not killed by Android. This is available for Android version 2.0 and above. If a service is not running in foreground mode, Anbdroid may kill it if other applications consume too much of the phone memory. By running the Smart Ring Control service in foreground, you ensure your phone will always control its volume based on its position. Additionally, if the application is not running in foreground, Android would suspend it more when the phone is on standby, and as result there will be slight delay from the moment the phone starts ringing, till the moment the volume is adjusted. The application may even not function properly on some phones if it's not running in foreground. So whenever you have problems - try running the application in foreground. There is a slight drawback for this however - you will always see the Smart Ring Control icon in your notification bar. Some may not like this, and if they are sure their phone is never low on memory, they can use this option to disable the foreground mode.
14. Set volume to lowest when the phone is unlocked. Some may find it useless to ring loud the phone when its unlocked. If the phone is unlocked it usually means that you hold it in your hands and can hear it pretty well.
15. Lower volume immediately when set horizontal while ringing. This option allows you to lower the ring volume by setting your phone horizontal within 5 seconds since it started ringing. For example you are holding the phone in your hand, and it starts ringing unexpectedly. You can lower the volume immediately by positioning the phone horizontal.
16. Lock application orientation to portrait mode.
17. Open this application with volume rocker buttons. Be aware that some applications change the phone  volume (like camera applications turning off the phone sound so the shutter sound is not heard). These applications will trigger the Smart Ring Control application, and bring it into focus. This is because the only way Smart Ring Control can determine if the volume rocker buttons are pressed is by monitoring the volume changes. Unfortunately, Android does not provide a way for developers to determine if the volume rocker buttons are pressed.

WARNING:  You should disable any setting/application that changes the ring volume. For example some phones have an option/application that gradually increases the ringer volume. If this option is not turned off, you'll experience for example high ring volume, then lowered by the option, and then gradually increasing the ringer volume.  

FAQ

Q: Can you make an option for turning off the icon on running apps from the status bar?
A: Unfortunately, the app just won't work if the icon is not there. Read on to see why. The nature of the Smart Ring Control application is that it must monitor the incoming calls at all times, so it can adjust the ring volume properly. To ensure that Android won't kill the application when low on resources, Google requires that icon and notification to be visible to the user. I guess it's made this way for security reasons - to have the user know when an app is always running.

Q: Why does SmartRingControl want access to my PHONE CALLS  and MESSAGES?
A: In order for the application to preserve the battery, the accelerometer sensor is activated only when there is incoming call or SMS is received. It determines the phone position in a fraction of the second, and adjusts the ringer volume according to the settings, and turns off the accelerometer sensor.

Q: Why does SmartRingControl want to PREVENT DEVICE FROM SLEEPING?
A: Some phones do not allow using the accelerometer sensor when the device is sleeping. Therefore SmartRingControl wakes the device while the accelerometer sensor is used, and releases the wake lock after it finishes with the readings. It usually takes less than a second, so it should not affect your battery.

Q: Why does SmartRingControl want to modify/delete USB storage content?
A: The application only uses this permission to store configuration data.

Q: Why does the phone start ringing with lower volume, and then increases the volume after a fraction of the second?
A: Since the application is designed not to drain your battery, it takes some milliseconds before the accelerometer sensor can be activated and the phone position detected. The application is designed to always set the phone ring volume to the lowest possible value when not ringing, so there is no chance that when the phone rings, the first couple of milliseconds it rings at the loudest possible level.

Q: Why there is around 3 seconds delay between my phone receiving a call and starting to ring?
A: This is related to the way Android handle services, and happens only if one of the volume sliders is set to 0. If you run the application service in the foreground, there will be no delay. But apparently if a service is not in the foreground, Android suspends it more than the other services, and it takes some time before it can be activated and the ring volume adjusted according to the phone position.

Q: How can I save the settings I make?
A: You don't need to save the settings. They are automatically saved each time you make a change.

Q: My phone starts ringing loud, and then lowers the ring volume. Why does it do that?
A: Some phones have an option/application that gradually increases the ringer volume. If this option is not turned off, you'll experience for high ring volume, then lowered by the option, and then gradually increasing the ringer volume. You should disable any setting/application that changes the ring volume.