首先声明:这个项目里面有很多板块都是参考借鉴网上其他人的博文的。而且有一些也不太清除原作者到底是哪位。我做这个项目的目的主要是练手,因为我毕设也要做一个Android项目。目前网络部分就实现了用户登录和注册,里面的好友功能,发送消息功能等毕设完结后再实现。
总结:在这学期初,本来打算直接开始毕设的,但是发现了很多问题,比如内容划分不够精细,没有架构,实现困难等。总之,万事开头难,结果就墨迹到了现在。这里,先总结前段时间实习时自己做的一个练手项目---仿微信项目(IMClass)
整个项目分为服务器与客户端以及数据库部分。
数据库:基于MySql数据库,建立一个用户信息表,一个消息表(服务器用来存储离线消息,在线消息存储在本地),以及一个好友列表。
服务器:
*java写的服务器,基于Socket的网络连接,使用的是一个开源框架 Apache-mina socket。可以实现并发通信,里面解决了一些普通socket通信的一些问题。采用JDBC方式连接MySql数据库。(有试验过租用一个阿里云服务器,这样可以实现随时的访问服务器,不过太贵了,所以先暂停了)
*后台定义了一些用户请求的命令参数,用户在客户端向服务器传参数,然后服务器根据不同的参数分别进行处理
*注意Socket传输的对象必须实现序列化,而且客户端上的和服务器上的类名要一模一样(哪怕包名都必须一样)
客户端:Android客户端,主要界面还是仿微信的。功能如下:
*登录界面
*可以通过已注册的帐号和密码连接服务器验证,登录客户端
*登录界面验证对话框是基于dialogFragment的,这样便于实现多样化。
*注册界面
*通过Socket连接服务器检验是否可以注册
*仿照手机短信验证码注册(实质是利用自己的手机给自己发短信,因为没有调用三方接口)
*注册后可以直接验证登录,直接进入客户端界面
*引导界面
*借鉴网上的一些引导代码,viewpager实现,里面可以放一些新手引导图片
*主界面
*采用fragmentActivity+viewpager实现仿微信主界面
*四大功能板块
*消息模块,模拟接收到的消息(例如离线消息,好友申请等)
*加入了好友通信功能,类似与微信好友聊天一样可以发送文字,发送动态图(动态图借鉴网上blog的)
*采用自定义的ListView实现下拉刷新,上拉加载更多功能(自己重写ListView就可以实现很多自定义功能)
*通讯录模块,模拟手机通讯录好友功能
*采用自定义的ScrollLayout实现下拉回调功能(其实就是类似与QQ的,ScrollView嵌套ListView,加强互动)
*识别手机自带的通讯录列表,添加本地好友功能,备份和恢复通讯录功能
*更多模块,这里面添加一些其它小功能,比如微信的摇一摇签到,以及定位功能,幸运大抽奖功能
*摇一摇签到借鉴了网上的一段代码,并增加签到功能,主要依靠手机传感器与回调函数实现
*定位,实现了记录最近几次定位(本地数据库存储)以及摇一摇更新位置功能(使用百度定位SDK)
*设置模块,主要实现与个人信息和帐号
*退出登录由一个DialogFragment实现,可以简单的注销或者直接退出,注销后需要重新登录,直接退出,下次进入微信时直接进入到主界面
*个人信息,显示数据库中的个人信息记录,编辑和更新个人信息,可以选择图片作为头像
*修改密码
*其它
*后台service百度定位,主要是service与activity的交互,定时更新一次用户的定位信息上传到服务器
*MainService,主Service,里面进行耗时的网络操作(连接Socket客户端Handler),完成用户请求
*工具类
*里面是所有用到的工具包,包括图像处理,获取手机图库,创建Dialog,判断网络状态,发送Notification,Log信息,读取文件,以及通过正则表达式判断字符串的类别(例如,判断身份证,手机号)等等(工具类里总结了一些常用的功能)
*离线模式(开发时测试使用,因为有时候服务器不能开,所以直接离线登录,查看Demo的主要功能)项目总结:这个项目乍看之下没有多少内容,但是却囊括了很多功能,包括基础的UI实现,一些常见的View优化,以及Android四大组件,数据存储,notification等都用到了。还涉及到网络连接,服务器端的编写。还有一些工具类里面的基础java知识(比如数据压缩,缓存处理,图片处理,正则表达式等)。作为新手的练习项目,确实能很大程度的提高编程水准,以及对Android的熟悉程度。最重要的是学会了先构思,构架,然后再编码。这样能提高很大的效率。确实是收益匪浅!
更新时间:2015.3.26
下载链接: http://download.csdn.net/detail/u010979495/9271327
更新时间:2015.11.15