Android: I've been known to just set my phone to vibrate because I don't want the ringer going off in a silent room, and then I wind up missing a call if the phone is on my desk and I'm watching a movie. RingDimmer for Android is a new app that uses your phone's microphone to automatically detect the noise level where you are, and sets the ringer appropriately so you never miss a call.
RingDimmer is is $0.99 at Google Play, but the app works as advertised. The app controls both ringer volume and vibrate, and will automatically adjust notification volume as well if you have it paired to your phone's volume (the app doesn't manage notification volume directly, so you have to do this if you want both settings to match.) If the ambient noise level in your environment goes up, like you enter a bar full of people, for example, the app will turn your ringer all the way up so you hear it, and even turn the vibrate on so you'll feel it in your pocket. As soon as you leave the bar and settle in at home, the app notices that the volume level around you has gone back down, and will turn the ringer back down so an incoming call won't startle you if you're relaxing or going to sleep.
The app does have to run in the background all the time to work, but when I tried it out I didn't notice that much change in my battery life. That said, your mileage may vary on that front, especially after prolonged use. Still, if you hate being rattled awake during a nap because your phone rang, or hate missing a dozen calls when you're out to dinner because the ringer was set too low, RingDimmer can help.
RingDimmer [Google Play]