There is no broadcast event to change the volume.
However, there is an undocumented action called android.media.VOLUME_CHANGED_ACTION "that you could use, but it probably won't work on all devices / versions, so it is not recommended .
Using other buttons (e.g. multimedia buttons ) is possible.
EDIT: Sample code (using an undocumented action):
AndroidManifest.xml
... <receiver android:name="VolumeChangeReceiver" > <intent-filter> <action android:name="android.media.VOLUME_CHANGED_ACTION" /> </intent-filter> </receiver> ...
VolumeChangeReceiver.java
public class VolumeChangeReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals("android.media.VOLUME_CHANGED_ACTION")) { int newVolume = intent.getIntExtra("android.media.EXTRA_VOLUME_STREAM_VALUE", 0); int oldVolume = intent.getIntExtra("android.media.EXTRA_PREV_VOLUME_STREAM_VALUE", 0); if (newVolume != oldVolume) { Intent i = new Intent(); i.setClass(context, YourActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); } } } }
See this question if you want to unlock the screen when the application starts.
source share