我正在开发一个应用程序,每当硬件音量按钮被按下时,就会听到音量事件。app可以在前台也可以在后台。我已经关注了this,但它不能正常工作。以下是我面临的问题
1)如果我按一次音量键-事件会被触发4-6次。
2)如果当前音量是最大值,并且我增加了音量,则事件不会触发。
请帮帮我。
发布于 2016-01-04 21:17:28
尝试使用以下代码-
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)){
//Do something
}
return true;
}背景- any way to detect volume key presses or volume changes with android service?
发布于 2016-05-23 09:53:03
在有根的设备上,您可以使用Xposed框架将自己挂接到PhoneWindowManager中。Xposed Torch模块就是一个很好的例子。只需反编译它,看看他们是如何做事情的。
发布于 2016-01-04 21:34:31
你可以通过轮询AudioManager的当前数量来检测它,这不是一个好的解决方案,但我不知道更好的解决方案。
private Handler handler;
public int volume;
private Runnable volumeUpdater = new Runnable() {
private int updatesInterval = 100;
@Override
public void run() {
if(volume != audioManager.getStreamVolume(AudioManager.STREAM_MUSIC)){
//volume changed put logic here
}
handler.postDelayed(volumeUpdater, updatesInterval);
}
};https://stackoverflow.com/questions/34591987
复制相似问题