• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Accidentally silencing phone - my solution

Great app. I'd like to see an option to ignore the volume key completely, but otherwise... perfect!

EDIT: I take that back, somewhat. It apparently prevents all volume changes (that you don't manually "approve"), not just those initiated by the volume rocker. For example, volume changes initiated by Locale cause the RingGuard confirmation to appear. If I don't respond, RingGuard reverses the changes made by Locale. RingGuard is still an excellent app, but not usable in my situation.
 
I installed earlier this week and am very happy. Great app and was quite needed. I was constantly altering the volume.

Much thanks!!!
 
Great app. I'd like to see an option to ignore the volume key completely, but otherwise... perfect!

EDIT: I take that back, somewhat. It apparently prevents all volume changes (that you don't manually "approve"), not just those initiated by the volume rocker. For example, volume changes initiated by Locale cause the RingGuard confirmation to appear. If I don't respond, RingGuard reverses the changes made by Locale. RingGuard is still an excellent app, but not usable in my situation.

RingGuard can't tell by itself whether the volume change was manual or programmatic. So it would need help from Locale. RingGuard may be too small to warrant attention from the Locale developer. However, it could be done through an interface that would benefit not only RingGuard, but any app that wants to find out about programmatic volume changes.
 
If you want RingGuard to be able to work cleanly with Locale, please go to

Locale Feedback

and vote for my request "Send implicit intent before changing ring volume". Thanks.

I read the feedback, as well as the developer's reply, and I can see where the developer is coming from. Even if they wanted to send an "intent" notification, they would need somewhere to send it. I can't see them designing something specifically for use with RingGuard.

The developer's response accurately describes my situation - I use Locale to silence my ringer, or return it to my normal volume (one "click" below full), so I think there is some merit to the developer's suggestion of having RingGuard ignore instantaneous drastic changes in volume, perhaps with values settable by the user.

If I were to press and hold the volume rocker until the volume reached full or silent, would RingGuard detect the intermediate volumes, or does it happen so fast that mechanism RingGuard "hooks" only reports the final volume?
 
I didn't state my requirement correctly at first, but I did clarify it in my response to Carter's first comment. Maybe a quote from the Android docs will say it better. From

Intents and Intent Filters | Android Developers

"Intent objects passed to any of the broadcast methods (such as Context.sendBroadcast(), Context.sendOrderedBroadcast(), or Context.sendStickyBroadcast()) are delivered to all interested broadcast receivers." Italics are mine. In other words, I'm not asking for something usable only by RingGuard.

RingGuard checks the ring volume 2X/second. This rate has no discernible effect on power consumption, but gives good responsiveness. It isn't fast enough, though, to catch intermediate volume steps. Carter's suggestion about the Settings Content Provider is interesting. If it can provide volume settings (I don't see them in a quick glance), I'd still have to worry about whether it might, now or someday, skip intermediate steps in the interests of efficiency. That would incorrectly make the heuristic think that the volume change was program-initiated. This would break RingGuard's one and only function, which I'm not willing to risk.
 
great app. i liked locale but i think this suits my needs better, as i like to have my phone on the lowest volume all the time, vibrate only on phone calls. i use silent mode manually when necessary.
 
..."Intent objects passed to any of the broadcast methods (such as Context.sendBroadcast(), Context.sendOrderedBroadcast(), or Context.sendStickyBroadcast()) are delivered to all interested broadcast receivers." Italics are mine. In other words, I'm not asking for something usable only by RingGuard...

Now I get it, and it sounds reasonable. The only problem I see here now is something you cannot do anything about - added functionality in Locale will require me to update from the beta, and fork over $10 for Locale. Given the comments on the released version of Locale, I'm not inclined to go that route at the moment.
 
Back
Top Bottom