How can I launch an android app on upon pressing the volume up or volume down button? How can I launch an android app on upon pressing the volume up or volume down button? android android

How can I launch an android app on upon pressing the volume up or volume down button?


There is no broadcast event for volume change.

However, there is an undocumented action called "android.media.VOLUME_CHANGED_ACTION" which you could use, but it probably won't work on all devices/versions so it is not recommended.

Using other buttons (e.g. media buttons) would be possible though.

EDIT: Code sample (using the 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 launching your app.


I've used this code to listen for the volume button before,

@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {    if ((keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)){        //Do something    }    if ((keyCode == KeyEvent.KEYCODE_VOLUME_UP)){        //Do something    }    return true;}

This method gets event of volume up and down.