【发布时间】:2014-01-31 21:57:36
【问题描述】:
我在个人安全应用中有一个要求,用户必须通过按增大音量或减小音量按钮尽快启动应用。添加此功能的过程是什么?
【问题讨论】:
-
真是个有趣的问题!!
-
如果我的回答可行,请提出并接受我们可以关闭它。
我在个人安全应用中有一个要求,用户必须通过按增大音量或减小音量按钮尽快启动应用。添加此功能的过程是什么?
【问题讨论】:
没有改变音量的广播事件。
但是,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。
【讨论】:
我之前用这段代码监听音量键,
@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;
}
此方法获取音量上下的事件。
【讨论】: