发送:
1,选择上传的图片------》保存图片信息(上传之前,本地)-----》上传图片到 应用服务器------》上传成功后发送图片信息到openfire服务器,同时修改图片信息(图片的网络地址,缩略地址),
2,进行录音----》录完后转码----》保存录音信息(本地)-----》上传录音,成功后,发送音频信息(保存音频信息),
接收:
1,接收图片信息----》解析数据,下载图片------》把图片信息保存到本地,
2,接收录音信息----》下载录音,转码-----》保存录音信息,
同步显示(录音,图片):
1,在 客户端显示
2,发送 图片或者录音 到 系统服务器
3,发送 信息 到openfire 服务器
a, 客户端显示,发送系统服务器失败, openfire发送信息失败,
b,客户端显示,发送系统服务器成功,openfire发送信息成功,
c,客户端显示,发送系统服务器成功,openfire发送信息失败,
ps:(在生成信息时 第一次保存 一条数据到本地数据库,之后 修改这条数据比如 其状态,比如网络存储路径)
now process:生成 图片或者录音,保存数据到本地数据库--》上传系统服务器---》成功后 显示客户端,同时修改本地数据库,同时发送一条信息到openfire----》openfire 成功或者失败 回调,然后 修改本地数据,
保存到本地数据库:解读下,保存的是两个路径,一个是 存储到 缓存文件的路径,一个是网络路径,也就是说,真正的 音频,视频文件是 存储在本地的,而不是数据库当中,所以一旦清理了缓存文件,那么 就需要通过资源的
网络路径进行 下载,无论是自己发的,还是好友发的信息,
particularly:生成录音----》转码(wav到amr)----》本地的WAV保存到本地数据库,生成的amr路径上传到系统服务器用,----》上传成功后,本地的amr文件就可以 delete掉了,
生成图片---》控制尺寸,如果大于640的,等比例缩放,
接收 语音或者图片信息:第一时间 保存到本地数据库,并且显示在客户端,点击时候 进行其它的操作,
点击 语音信息:如果本地没有,下载语音 转码,然后 将 amr本地文件删除,
点击 图片信息:如果本地没有,下载图片信息, 本地缓存信息 并没有 保存到本地数据库,
对于图片:上传时候,有本地的地址,发送后生成一个网络的地址,接收的时候,只有网络的地址,没有本地的地址,下载后 会生成一个本地的缓存地址,
本地地址----》网络地址,
网络地址----》本地地址,
显示图片,播放录音:如果有本地地址,那么默认本地有存储,用本地地址,如果没有 就通过网络地址,加载 图片,录音信息,同时保存一份 地址到本地 数据库中去(其中对于接收的 图片来说,用了第三方的,传递一个网络地址或者传递一个 图片,是没有 将地址保存到本地去的,因此对于后期的缓存管理,也用第三方的,而 至于 如果本地存储了的,那么第三方 自己自有方法来判断,是不会 去网络再加载的),
页面切换 或者 突然断电,发送中的状态怎么处理,要么发送失败,要么发送成功,发送中 不应该持续,怎么处理?第一次进入页面,查看消息状态,如果是发送中的状态,那么查询出来后,设置为发送失败,
--------------------------------------------------------------------------
70%,
1,服务器接口:一个是 进入聊天界面的接口,一个是 名人聊天记录的 接口,本地存,还是服务器存,
2,回调失败的处理 覆盖
3,与Android联调
4,名人聊天列表
5,底部Tabbar上几个跳转