本文同步发表在我的论坛中:http://stay4it.com/forum.php?mod=viewthread&tid=4&extra=page%3D1 所有附件均放在我的论坛中。更多Android资源请关注我的论坛。
这个项目是我一年多前设计的方案,准备自己做来着,后来因为种种原因没做了,现在分享出来,应该对大家面试很有帮助,一个项目的方案,流程图,到实现。整个这样一个环节。来电管家(CallManager)功能点设置:
1. 通讯录管理
2. 联系人搜索
3. 联系人操作
4. 查看联系人详情
5. 添加联系人
6. 批量删除
7. 归属地查询
8. 系统设置
9. 黑名单管理
10. 关于我们
功能描述:1. 开启软件进入通讯录列表,显示姓名、电话、归属地;
2. 通讯录列表头部显示快速搜索,根据用户任意输入查找出可能联系人;
3. 长按联系人填出功能列表包括:拨打、短信、编辑、加入黑名单、删除;
4. 单击联系人查看该联系人详情;
5. Menu→添加联系人
6. Menu→跳转到简单联系人列表(名称和号码)右边显示单选按钮,下面显示删除和后退
7. Menu→用户输入号码查询号码归属地
8. Menu→a,来电延迟(待定);b,皮肤设置;c,
9. Menu→黑名单列表 单击事件: 拒绝来电、拒绝短信、删除(恢复)、
10. 帮助文档,关于我们
功能实现:
1,将3个功能点设置为一个Activityextends TabActivity
2,注册来电、去电广播
拨打电话时,系统将广播”android.intent.action.NEW_OUTGOING_CALL”消息。对该消息关联Receiver即可获得拨打事件。相关的权限为:”android.permission.PROCESS_OUTGOING_CALLS”
电话来电时,对”android.intent.action.PHONE_STATE”注册Receiver,在onReceive中开启Service,后台监听PhoneStateListener,对来电去电状态进行处理。(去电还没有解决)
3,来电处理
CALL_STATE_RINGING :
查询数据库,判断是否为黑名单。
若是,将数据库中的拨打次数+1,并调用aidl接口,通过反射初始化iTelephony.endCall()
若不是,查询数据库,是否存在该号码,若不存在,调用WebService查询归属地信息,显示在来电界面上。
CALL_STATE_OFFHOOK/CALL_STATE_IDLE
停止显示归属地信息
4,在查询归属地信息时,查询数据库,是否存在该号码,若不存在,调用WebService查询该号码归属地信息
5,在关于我中,显示帮助信息。
这是我画的整体流程图,一份英文一份中文,原图我发附件里 ;Visio画的。
项目只做了一点点,大家如果有兴趣我再发出来。也可以一起完善