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 "org.openintents.audio.action_volume_update" 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.

15 comments:

  1. I can't find ringguard on the Android Market on 3/15/2010.

    ReplyDelete
  2. RingGuard is for Android 2.0 and above. So if you're searching the Market from a phone with earlier version of Android, that's the reason, sorry.

    ReplyDelete
  3. Hi,
    I want to suggest support of your broadcast intent to the "Locale" application, but I need clear specification of the "protocol" for this.
    I've tried to find "org.openintents.audio.action_volume_update" broadcast intent that you mentioned in the "Registry of intents protocols", and didn't find it :-(
    (see e.g.
    http://www.openintents.org/en/intentsbigtable
    )

    Did you register (documented) your protocol their or you just "borrowed" their URI or what?

    If NO - please register, if YES - where can I find documentation? BTW, I may help you to create one.

    ReplyDelete
  4. Please see my comment in the Locale Feedback Forum:
    http://locale.uservoice.com/forums/5655-locale-feedback/suggestions/450629-send-implicit-intent-before-changing-ring-volume?ref=title

    ReplyDelete
  5. Continuing the discussion in the Locale Feedback Forum. Re registering the intent at openintents.org, I'll follow up with the AAM developer about that.

    ReplyDelete
  6. I'll just add that this is spreading; I'm making our SmartVolume product integrate.

    One of my users who is also a RingGuard user pointed me at this. I'd already thought about the problem and solution, so it pleased me no end to see people actually willing to tackle it.

    I think there's a few small improvements needed -- continuing the discussion over on the locale site.

    ReplyDelete
  7. This comment has been removed by the author.

    ReplyDelete
  8. This comment has been removed by the author.

    ReplyDelete
  9. Ringguard is a lovely app but please fix the camera bug. The volume confirm dialog pops up everytime the camera focuses.

    Also, are you using a constant loop or some kind of light resource listener for this app? Pretty sure the app uses minimum battery time but my curiosity asked me to ask you :)

    ReplyDelete
  10. Are you seeing the camera bug on the HTC Incredible? That's the only place I've heard of it. What exactly do you do to trigger it? I got my hands on my daughter's Incredible and saw the bug. Next time I got her phone for a slightly more extended period, I couldn't get it to happen.

    RingGuard loops 2X/second. During development, I left it running all night with my Moto Droid set to airplane mode for minimum power draw. Next morning, RingGuard didn't show up in battery usage at all.

    ReplyDelete
  11. Oops, on HTC Desire also. Same question applies.

    ReplyDelete
  12. I have a HTC Desire and it also messes with the camera. To take a picture, it does teh camera sound, but then the volume confirmation pops up. In Video mode the same, there you can't start teh video at all.

    ReplyDelete
  13. RingGuard version 1.08 has a fix for camera problems.

    ReplyDelete
  14. Excellent App, does everything it says and I would recommend it to just about everyone...With one caveat..........
    Unlike my old Nokia phone, it seems my HTC Desire HD does not come with a "silence for a period of time" feature.
    There are plenty of Apps available that will allow you to do this, but they seem to get into a fight with Ring Guard.
    I have not yet been able to find a way to have Ring Guard running and to DELIBERATELY silence my 'phone for a defined period of time.
    It's a pain to have to remember, and then actually kill Ring Guard and then launch the times silence App each time I want my 'phone silent for (say) a 60-minute meeting.

    ReplyDelete
  15. My HTC Incredible has a feature where the ring will automatically quiet when the phone is moved. A great feature if you are caught off guard with a sudden call.

    The problem is that Ring Guard wants to confirm the change in the volume before it will lower the volume.

    Anyone experience this same problem and/or have a solution or suggestion for this problem. I love the app as I have so often accidentally lowered my volume but would love to find a solution to this small inconvenience.

    ReplyDelete