本文同步发表在我的论坛中: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画的。

项目只做了一点点,大家如果有兴趣我再发出来。也可以一起完善 

 

posted on 2012-03-10 20:53  stay  阅读(1787)  评论(2编辑  收藏  举报