如何设置手机在通话接通和断开时震动


[Android Version]html

Android V2.3 ( GB,GB2)java

Android V4.0, 4.1( ICS, ICS2, JB)android

Android V4.2( JB2,JB3,JB5)app

Android V4.4ide

Android V5.0,5.1函数


[DESCRIPTION]htm


如果须要客制化在通话接通或者断开时手机震动的行为,能够参考如下修改get


[SOLUTION]it


通话接通时:io

Android V4.4以前版本:

1 在packages\apps\phone\src\com\android\phone\CallNotifier.java开头处添加private Vibrator mVibrator;


2 在packages\apps\phone\src\com\android\phone\CallNotifier.java函数onPhoneStateChanged开头处添加


if (mVibrator == null){

mVibrator = (Vibrator)

mApplication.getApplicationContext().getSystemService(Context.VIBRATOR_SERVICE);

}

3 在packages\apps\phone\src\com\android\phone\CallNotifier.java中添加一个成员变量

Call.State mLastCallState = Call.State.IDLE;


而后在函数onPhoneStateChanged中的语句Phone fgPhone = mCM.getFgPhone();后添加如下代码


Call.State ringCallState =

mCM.getRingingPhone().getRingingCall().getState();

Call.State fgCallState = mCM.getActiveFgCallState();

if ((ringCallState==Call.State.IDLE && mLastCallState.isRinging()) ||//MT

(fgCallState==Call.State.ACTIVE && mLastCallState.isDialing()))//MO

{

//here means that call is connected

final int MO_CALL_VIBRATE_TIME = 300; // msec

mVibrator.vibrate(MO_CALL_VIBRATE_TIME);

}

mLastCallState = ringCallState.isRinging() ? ringCallState:fgCallState;


mtkAndroid V4.4及以后版本:


已有此功能。

通话挂断后:

在CallNotifier.java onDisconnect ()中

Phone.State state = mCM.getState() ;后添加以下Code

if (mVibrator == null){

mVibrator = (Vibrator)

mApplication.getApplicationContext().getSystemService(Context.VIBRATOR_SERVICE);

}

final int CALL_DISC_VIBRATE_TIME = 300; // msec

mVibrator.vibrate(CALL_DISC_VIBRATE_TIME);

相关文章
相关标签/搜索