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

时间:2014-01-13 08:08:01

标签: android android-hardware

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

2 个答案:

答案 0 :(得分:11)

音量变化没有广播事件。

但是,there is an undocumented action可以使用“android.media.VOLUME_CHANGED_ACTION”,但它可能不适用于所有设备/版本it is not recommended

虽然可以使用其他按钮(例如media buttons)。

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

的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);
            }
        }
    }
}

如果您想在启动应用时解锁屏幕,请参阅this question

答案 1 :(得分:-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;
}

此方法可以上下调整音量事件。