Monday, March 1, 2010

RingGuard and Advanced Audio Manager play well together, via an open interface

I've gotten several comments in the Market along the lines of "Can RingGuard ask for confirmation only when the rocker switch is pushed, not when [fill in app name] changes the volume?" The answer is, RingGuard by itself can't tell whether the volume was changed by the rocker switch or by another program. It has no way to know when you're pushing the rocker switch; it can only see that the volume was somehow changed.

However, if we can arrange for the other app to tell RingGuard that it's going to change the volume, then RingGuard will know to allow the change without bothering you. Fortunately, the Android system makes it easy for different apps to cooperate like this, in a completely open way, using the "broadcast intent" mechanism.

Now, Advanced Audio Manager (AAM) sends a broadcast intent that any "volume monitoring" app, not just RingGuard, can listen for. Conversely, this broadcast intent can be sent by any "volume setting" app, not just AAM, and RingGuard will receive it. So, if you use a volume-setting app other than AAM, and you'd like it to play well with RingGuard, ask the developer to consider sending the "" broadcast intent before they change the volume (contact me for details). It won't benefit only RingGuard, it'll be for any app that wants to listen for it.

Thanks to the AAM developer for defining the specifics of the interface.