本项目是一个基于安卓的Android仿微信客户端-猫友。
是一个csdn上的朋友的原创项目,原帖可以看这里http://blog.csdn.net/ericfantastic/article/details/49451249实现了微信的登录注册、主界面、聊天会话、通讯录、发现界面、个人设置、添加好友、扫描二维码、视频通话、等所有基本功能。
下面是具体搭建方法:1、下载Openfire的安装包:http://download.csdn.net/detail/ericfantastic/9219685Openfire服务器及MySQL具体配置可以参考:http://www.th7.cn/db/mysql/201406/59838.shtml2、建议下载Openfire自带的PC客户端Spark,方便测试功能:http://download.csdn.net/detail/ericfantastic/92198153、修改源码中的服务器主机地址:在ConnetServer.java中,修改Configuration为本地的IP地址。
4、修改添加好友中的JID主机名:在AddFriendActivity.java中,修改addFriend方法中的"@ericwork-pc"修改为服务器的主机名,不区分大小写;
5、修改聊天页面中的JID主机名:在ChatActivity.java中,修改发送按钮的监听事件中的"@ericwork-pc",同上。
实现一个IM实时聊天应用,少不了弄服务器,目前开源的Openfire服务器就比较合适,而且很多功能都已经封装好了,实现聊天APP就简约很多。
服务器后端的数据库我选择了MySQL,当然Openfire也支持大部分的主流数据库,只要在配置的时候修改好参数即可;
搭建的时候,把服务器配到8G内存笔记本上,网上得知,Openfire每个线程大约占4k内存,那理论上是可以80w用户,当然实际肯定没那么多,Openfire在一台8G的主流服务器上支持30W的用户肯定没有问题。
简单说明一下Eric_JQM_Chat工程目录结构,当初开发的时候初衷只是玩玩openfire实现IM的过程,没想到一写就写了一通,对模块也没有很好的分包,还请多多包涵。
可以脸红的说,基本上所有功能实现都放在第一个eric_jqm_chat包里了,第二个Service包主要放与于后台服务相关的包,但后来这些服务我也都没有启用,后面的四个Zxing包就是实现二维码扫描的包,具体如何实现我的博客里有介绍。
Login登录相关,包括保存当前登录账号密码,下次直接登录使用等功能;
Register注册相关,包括本地输入校验;
MainActivity主界面相关,包含四个Fragment页面、上方Actionbar及下方的自定义View选项;
TabFragment会话界面,用于接收收到的所有消息,并统计条目;
TabFragment2通讯录界面,加载用户的好友列表;
TabFragment3发现界面,功能尚未添加;
TabFragment4个人设置页面,加载个人资料;
AddFriendActivity添加好友页面,搜索仅仅是获取用户头像,申请添加好友,及接受好友添加请求并处理;
CaptureActivity扫描二维码页面,扫描二维码功能;
CatchCameraActivity视频通话页面,仅完成获取前置摄像头预览及获取网络RTSP视频流播放;
ConnetServer连接服务器类,单例模式;
FormatTools简单工具类,用于各种类型数据间的转换;
ChatActivity聊天页面,实现指定好友的聊天功能,及聊天记录的保存;
FriendDetail聊天好友详情页面,更改聊天背景等;
主要的类就是这些,具体的详细实现大家可以直接看代码,注释写的很详细了,有疑问的欢迎交流,存在bug还请指正。
2020/1/1 1:06:32 4.84MB 安卓源码-网络通讯
1
system-view[Sysname]aclnumber2001[Sysname-acl-basic-2001]rulepermitsource192.168.1.260system-view[Sysname]aclnumber3001[Sysname-acl-adv-3001]rulepermittcpd
2016/3/9 1:52:02 15KB eNSP
1
适用于刚入门halcon的老手学习者,基于halcon控件封装的view控件提供ROI绘制等各类方法,提供视图的拖拽缩放等功能
2016/3/18 16:51:19 862KB halcon 控件
1
React本征物理学ReactNative的物理库(正在进行中)安装npminstall--savereact-native-physics输入import{Container,Box}from'react-native-physics';虚化Container规划就像View。
Container保存每个框的状态。
将Box放入Container。
实例化render(){return(<Boxposition={{x:20,y:150}}
2020/10/21 23:19:20 159KB JavaScript
1
整个View树的绘图流程是在ViewRoot.java类的performTraversals()函数展开的,该函数做的执行过程可简单概况为根据之前设置的状态,判断能否需要重新计算视图大小(measure)、能否重新需要安置视图的位置(layout)、以及能否需要重绘(draw),其框架过程如下:步骤其实为host.layout()接下来温习一下整个View树的结构,对每个具体View对象的操作,其实就是个递归的实现。
主要作用:为整个View树计算实际的大小,即设置实际的高(对应属性:mMeasuredHeight)和宽(对应属性:mMeasureWidth),每个View的控件的实际宽高都是由
1
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡