如何在按下音量增大或音量减小按钮时启动Android应用程序?

Muh*_*man 9 android android-hardware

我在个人安全应用程序中有一个要求,用户必须通过按下音量增大或音量减小按钮尽快启动应用程序.添加此功能的步骤是什么?

mol*_*arm 12

音量变化没有广播事件.

但是,您可以使用一个名为" android.media.VOLUME_CHANGED_ACTION" 的无记录操作,但它可能不适用于所有设备/版本,因此不建议这样.

但是,可以使用其他按钮(例如媒体按钮).

编辑:代码示例(使用未记录的操作):

AndroidManifest.xml中

...
<receiver android:name="VolumeChangeReceiver" >
    <intent-filter>
        <action android:name="android.media.VOLUME_CHANGED_ACTION" />
    </intent-filter>
</receiver>
...
Run Code Online (Sandbox Code Playgroud)

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);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果要在启动应用时解锁屏幕,请参阅此问题.


dip*_*ali -6

我之前用过这段代码来监听音量按钮,

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)){
        //Do something
    }
    if ((keyCode == KeyEvent.KEYCODE_VOLUME_UP)){
        //Do something
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

此方法获取音量增大和减小的事件。