android 电话呼入时 按音量键

平台:S5PC110 S5PV210
系统:android2.3 android2.3.4
android电话呼入时,电话铃音提示,按音量加/减键、power键时,铃音没了。bug list 上又多了这一个BUG。(首先说明这个问题不用解,android就这样做的
1,内核程序分析,在音频解码芯片里打印出的信息是,音频关掉了。
[ 431.795859] rt5625:enterrt5625_hifi_pcm_shutdown

2,再看一下 logcat发现有点不对。貌似就正常关闭呀。
I/WindowManager( 90): interceptKeyBeforeQueueing: VOLUME key-down while ringing: Silence ringer!
I/WindowManager( 90): interceptKeyBeforeQueueing: VOLUME key-down while ringing: Silence ringer!
I/WindowManager( 90): interceptKeyBeforeQueueing: VOLUME key-down while ringing: Silence ringer!
[ 306.485911] rt5625:enter rt5625_hifi_pcm_shutdown
D/AudioHardware( 67): AudioHardware pcm playback is going to standby.
V/AudioHardware( 67): closeMixer_l() mMixerOpenCnt: 1
D/AudioHardware( 67): closePcmOut_l() mPcmOpenCnt: 1
I/WindowManager( 90): interceptKeyBeforeQueueing: VOLUME key-down while ringing: Silence ringer!
I/WindowManager( 90): interceptKeyBeforeQueueing: VOLUME key-down while ringing: Silence ringer!


3,看下关于 呼入电话 铃音 与 按键的关系吧。
在android2.3.4_GB_T34H\frameworks\base\policy\src\com\android\internal\policy\impl\PhoneWindowManager.java中
// Handle special keys. switch (keyCode) { case KeyEvent.KEYCODE_VOLUME_DOWN: case KeyEvent.KEYCODE_VOLUME_UP: { if (down) { ITelephony telephonyService = getTelephonyService(); if (telephonyService != null) { try { if (telephonyService.isRinging()) { // If an incoming call is ringing, either VOLUME key means // "silence ringer". We handle these keys here, rather than // in the InCallScreen, to make sure we'll respond to them // even if the InCallScreen hasn't come to the foreground yet. // Look for the DOWN event here, to agree with the "fallback" // behavior in the InCallScreen. Log.i(TAG, "interceptKeyBeforeQueueing:" + " VOLUME key-down while ringing: Silence ringer!"); // Silence the ringer. (It's safe to call this // even if the ringer has already been silenced.) telephonyService.silenceRinger();//这里就是铃音没有的原因了 // And *don't* pass this key thru to the current activity // (which is probably the InCallScreen.) result &= ~ACTION_PASS_TO_USER; break; } if (telephonyService.isOffhook() && (result & ACTION_PASS_TO_USER) == 0) { // If we are in call but we decided not to pass the key to // the application, handle the volume change here. handleVolumeKey(AudioManager.STREAM_VOICE_CALL, keyCode); break; } } catch (RemoteException ex) { Log.w(TAG, "ITelephony threw RemoteException", ex); } } if (isMusicActive() && (result & ACTION_PASS_TO_USER) == 0) { // If music is playing but we decided not to pass the key to the // application, handle the volume change here. handleVolumeKey(AudioManager.STREAM_MUSIC, keyCode); break; } } break; }

4,找几台机器验证一下吧
在同事那里找了几部手机,三星、LG、HTC、P1000,试了一下,都是这样。那就是正常现象了,白折腾了一段时间,看了半天代码。

当你的BUG List上有这个问题让你去解的时候,跟别人说这是正常的,android系统本来就这样做的。如果不是做什么特别的“客制化”,这就是正常的。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值