I have a requirements in a personal safety app where a user has to launch an app as soon as possible via pressing the volume up or volume down button. What is the procedure to add this functionality?
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With