I'm trying to register a broadcast receiver to handle the VOLUME_CHANGED_ACTION event, only for the volume_voice stream type (which I empirically see to be index 0 in Settings.System.VOLUME_SETTINGS).
The label EXTRA_VOLUME_STREAM_TYPE is hidden, so I have used the explicit string "android.media.EXTRA_VOLUME_STREAM_TYPE" instead. It all worked fine on Android 2.3.4 (got value 0 for volume_voice as expected), but on 2.3.5 the value that this extra holds is 10, which gives an ArrayIndexOutOfBoundsException on Settings.System.VOLUME_SETTINGS.
Moreover, I see that volume_voice is still index 0 in Settings.System.VOLUME_SETTINGS.
Is there a more robust way to handle VOLUME_CHANGED_ACTION for volume_voice stream types?
Edit Or any other way to do what the title asks for?