Android在灭屏的情况下实现长按音量键切换歌曲
该功能的实现逻辑是:在按下音量键后延时3秒执行一个线程,而该线程使用来发送广播,使广播接收者执行上一曲或者下一曲的功能;如果再这3秒内,用户已经弹起按键(不再长按音量键),则取消执行该线程。
修改该功能是在framework/base\policy\src\com\android\internal\policy\impl\PhoneWindowManager.java的interceptKeyBeforeQueueing()方法中修改的。以长按音量减键为例:
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
if (down) {
if (isScreenOn && !mVolumeDownKeyTriggered
&& (event.getFlags() & KeyEvent.FLAG_FALLBACK) == 0) {
mVolumeDownKeyTriggered = true;
mVolumeDownKeyTime = event.getDownTime();
mVolumeDownKeyConsumedByScreenshotChord = false;
cancelPendingPowerKeyAction();
interceptScreenshotChord();
}
else if(mSupportSkipSong && !mVolumeDownKeyTriggered
&& (event.getFlags() & KeyEvent.FLAG_FALLBACK) == 0){
mVolumeDownKeyTriggered = true;
mVolumeDownKeyTime = event.getDownTime();
cancelPendingPowerKeyAction();
mHandler.postDelayed(mMusicOperationRunnable, MUSIC_OPERATION_DELAY);
}
} else {
if (mSupportSkipSong && mVolumeDownKeyTriggered){
Log.d(TAG,"mVolumeDownKeyTriggered:remove mMusicOperationRunnable!");
mHandler.removeCallbacks(mMusicOperationRunnable);
}
mVolumeDownKeyTriggered = false;
cancelPendingScreenshotChordAction();
}
}
更多相关文章
- 游走Android系列之Service
- android Handler的使用(二)
- Handler机制总结
- Flutter Android(安卓)端集成 Bugly 的异常上报和升级功能
- android开发之多线程实现方法概述
- Android消息机制Handler解析(源码+Demo)
- Android用户不想让iOS用户知道的9个杀手性功能
- Android(安卓)Handler的详细介绍
- Android(安卓)设置无线热点模块隐藏SSID