音量键响应总体流程
2017-02-23 14:34:34 0 举报
当用户按下音量键时,首先会触发硬件中断,通知操作系统有按键事件发生。操作系统接收到中断信号后,会暂停当前任务,转而执行键盘驱动中的中断处理程序。在中断处理程序中,操作系统会读取按键状态寄存器,获取到具体的按键信息。然后根据按键信息判断用户是增大、减小还是关闭音量。接着,操作系统会调用音频驱动的相关接口,将音量调整的指令发送给音频设备。音频设备收到指令后,会根据指令调整音量大小。最后,操作系统会更新系统状态栏中的音量图标,以反映当前的音量大小。整个过程完成后,操作系统会恢复被暂停的任务,继续执行后续操作。
作者其他创作
大纲/内容
EventHub
......
InputDispatcherPolicy
/dev/input/eventN
windowN
设备节点
InputManagerService
ViewRootImpl
AudioManager
View1
View2
android.hardware.automotive.vehicle@2.0-serviceSWS_R_VolumePlusKeyStatus ---RSWS_VOLPLUSKEYSTS SWS_R_VolumeMinusKeyStatus ---RSWS_VOLMINUSKEYSTSSWS_R_MuteKeyStatus ---RSWS_MUTEKEYSTS
/dev/input/event0
window2
window1
WMS
ViewN
InputDispatcher
PhoneWindowManager
CAN
InputReaderPolicy
Kernel
adb shell input keyevent 25 //音量+adb shell input keyevent 24 //音量-adb shell input keyevent 164 //音量mute============#define KEY_MUTE 113#define KEY_VOLUMEDOWN 114#define KEY_VOLUMEUP 115adb shell音量- # sendevent /dev/input/event0 0001 0114 00000001;sendevent /dev/input/event0 0000 0000 00000000;sendevent /dev/input/event0 0001 0114 00000000;sendevent /dev/input/event0 0000 0000 00000000音量+ # sendevent /dev/input/event0 0001 0115 00000001;sendevent /dev/input/event0 0000 0000 00000000;sendevent /dev/input/event0 0001 0115 00000000;sendevent /dev/input/event0 0000 0000 00000000音量mutesendevent /dev/input/event0 0001 0113 00000001;sendevent /dev/input/event0 0000 0000 00000000;sendevent /dev/input/event0 0001 0113 00000000;sendevent /dev/input/event0 0000 0000 00000000
CarServiceID_SW_KEY_VOLUME_UP ---KEYCODE_VOLUME_UPID_SW_KEY_VOLUME_DOWN ---KEYCODE_VOLUME_DOWNID_SW_KEY_MUTE ---KEYCODE_VOLUME_MUTE
/dev/input/event1
InputReader
0 条评论
下一页