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.