Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Volume change listener?

Is there any way to listen for volume changes with an Android service and react to that?

Btw: How does the Google music app allow the user to control the media volume even when the music is playing in the background?

like image 916
kevdliu Avatar asked Aug 20 '11 07:08

kevdliu


1 Answers

Check out registerMediaButtonEventReceiver(ComponentName broadcastReceiver);

Define a BroadcastReceiver that handles ACTION_MEDIA_BUTTON. The recieved intent includes a single extra field, EXTRA_KEY_EVENT, containing the key event that caused the broadcast. You can use this key event to get which key was pressed.


EDIT:
This is just a sample code. syntax errors may be there.

// in onCreate of activity
registerMediaButtonEventReceiver(mediaReceiver ); 

// later somewhere in activity.
MediaButton_Receiver mediaReceiver = new MediaButton_Receiver();

class MediaButton_Receiver implements BroadcastReceiver {
     void onReceive(Intent intent) {

          KeyEvent ke = (KeyEvent)intent.getExtra(Intent.EXTRA_KEY_EVENT); 
          if (ke .getKeyCode() == KeyEvent.KEYCODE_VOLUME_DOWN) {

          }
          // Similarly other key codes .......
     } 
}

Unregister the receiver in onPause() or onStop()

like image 81
Ronnie Avatar answered Oct 25 '22 02:10

Ronnie