Android 关于震动问题和音效问题

问题描述: 

如果点击某个应用或则某个键(如HOME)有震动发生,想取消话,则需要查看performHapticFeedbackLw函数,在PhoneWindowManager.java中

这个函数会调用系统的Vibrator 服务然后产生震动。有两种震动,长震动和短震动代码如下:

if (pattern.length == 1) {
            // One-shot vibration
            mVibrator.vibrate(owningUid, owningPackage, pattern[0]);
        } else {
            // Pattern vibration
            mVibrator.vibrate(owningUid, owningPackage, pattern, -1);
        }

如果想要按键产生震动的话可以调用此函数,如果不需要就删掉

也可以在Framework端写相应的接口,然后在setting里面设置,让用户来选择是否有震动。

关于这部分代码一般写在PhoneWindowManger的interceptKeyBeforeQueueing函数里面修改。

如果想添加音效的话,也可以在这里面修改(下面的代码是转载的,这里注明下):

按照如下方式修改
phonewindowmanager.java
interceptKeyBeforeDispatching(){
...
//添加如下code
        if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){
            
            Log.d(TAG,"interceptKeyBeforeDispatching KEYCODE_BACK,keyevent actiondown ");
            AudioManager audioManager = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);
            if (audioManager != null) {
                audioManager.playSoundEffect(AudioManager.FX_KEY_CLICK);
            } else {
                Log.w(TAG, "Couldn't get audio manager");
            }            
            
        }
        if(keyCode == KeyEvent.KEYCODE_HOME && event.getAction()== KeyEvent.ACTION_DOWN){
            
            Log.d(TAG,"interceptKeyBeforeDispatching KEYCODE_home,keyevent actiondown ");
            AudioManager audioManager = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);
            if (audioManager != null) {
                audioManager.playSoundEffect(AudioManager.FX_KEY_CLICK);
            } else {
                Log.w(TAG, "Couldn't get audio manager");
            }            
            
        }



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值