11

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

4

2 回答 2

14

没有音量变化的广播事件。

但是,您可以使用一个名为“ ”的未记录操作android.media.VOLUME_CHANGED_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);
            }
        }
    }
}

如果您想在启动应用程序时解锁屏幕,请参阅此问题。

于 2014-01-13T09:14:56.457 回答
-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;
}

此方法获取音量上下的事件。

于 2014-01-13T08:14:25.733 回答