[AndroidVersion]

Android V2.3(GB,GB2)

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

Android V4.2(JB2,JB3,JB5)

[DESCRIPTION]

若是需要客制化在通话接通或者断开时手机震动的行为,可以参考以下修改

[SOLUTION]

通话接通时:

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;


通话挂断后:
在CallNotifier.java (alps\packages\apps\phone\src\com\android\phone)的 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);

更多相关文章

  1. Shape添加阴影效果
  2. Android(安卓)Studio 编译问题(1)
  3. Android.mk添加第三方jar包
  4. 利用ContentProvider的添加数据
  5. Activity的使用(九): 读取联系人
  6. RecyclerView添加行间距
  7. 异常ExceptionInInitializerError解决方案
  8. Android(安卓)程序奔溃常见问题汇总
  9. Android底层知识Window和WindowManager深入分析

随机推荐

  1. sqlserver 触发器学习(实现自动编号)
  2. SQL Server 总结复习(一)
  3. Sql Server 2012 分页方法分析(offset an
  4. SQL server高级应用 收藏版
  5. 优化 SQL Server 索引的小技巧
  6. SqlServer 索引自动优化工具
  7. sqlserver 查询数据库大小的方法
  8. SQL Server 数据页缓冲区的内存瓶颈分析
  9. SQL处理多级分类,查询结果呈树形结构
  10. sql 存储过程批量删除数据的语句