环信easeui集成:坑总结2018(二)
环信EaseUI 集成,集成不做描述,看文档即可,下面主要谈一些对easeui的个性化需求修改。
该篇文章将解决的问题:
1、如何发送视频功能
2、未完待续。。
--------------------------------------------------------------------------------------------------------------------
一、如何发送视频
1、环信easeui 会话功能默认支持图片,拍照,位置 三个功能
想支持播放视频需要自己添加。
官方提供发送视频方法:

主要修改在EaseChatFragment.java文件中
①、首先找到

很明显,这就是会话界面扩展功能,分别用于item 名称,图片,点击事件id,默认有拍照,相册,位置,这里屏蔽位置功能,添加视频功能
修改如下:
// 屏蔽位置消息 , 添加视频消息
protected int[] itemStrings = { R.string.attach_take_pic, R.string.attach_picture ,R.string.attach_video};
protected int[] itemdrawables = { R.drawable.ease_chat_takepic_selector, R.drawable.ease_chat_image_selector, R.drawable.ease_chat_image_selector
};
protected int[] itemIds = { ITEM_TAKE_PICTURE, ITEM_PICTURE ,ITEM_VIDEO };
修改之后点击右侧的+按钮,就会发现多了一个视频消息选项
②、添加视频item功能点击事件
随便选itemIds里面的已有选项比如 ITEM_TAKE_PICTURE , ctrl+f 搜索 找到如下位置:

可以看到这里已经有了拍照,相册,位置三个item功能的点击事件,则自己添加视频item点击事件
case ITEM_VIDEO:
//xqxhx 录制视频
selectVideo();
③、通过intent调用视频录制
类似于拍照功能,这里使用了fileprovider适配7.0+机型,可以查看上一篇文章学习
/**
* 录制视频
*/
private void selectVideo() {
if (!EaseCommonUtils.isSdcardExist()) {
Toast.makeText(getActivity(), R.string.sd_card_does_not_exist, Toast.LENGTH_SHORT).show();
return;
} videoFile = new File(PathUtil.getInstance().getVideoPath(), EMClient.getInstance().getCurrentUser()
+ System.currentTimeMillis() + ".mp4");
videoFile.getParentFile().mkdirs();
Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){
intent.putExtra(MediaStore.EXTRA_OUTPUT,
FileProvider.getUriForFile(getActivity(),"com.maiji.magkaredoctor.fileprovider", videoFile));
}else {
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(videoFile));
}
startActivityForResult(intent, REQUEST_CODE_VIDEO);
}
videoFile 变量定义在cameraFile下

requestCode 变量 REQUEST_CODE_VIDEO 定义

④、调用intent了,再进行intent的回调处理,找到onActivityResult()方法 , 添加对视频的处理

注:这里做个限制,视频大小上限为10M,然后执行sendVideoMessage()方法,参数分别为视频文件目录,视频缩略图文件目录,视频的时长,方法如下:
//根据路径得到视频缩略图
public String getVideoPhoto(String videoPath) {
MediaMetadataRetriever media =new MediaMetadataRetriever();
media.setDataSource(videoPath);
Bitmap bitmap = media.getFrameAtTime(); String savePath;
File filePic; savePath = PathUtil.getInstance().getVideoPath().getAbsolutePath(); try {
filePic = new File(savePath + EMClient.getInstance().getCurrentUser()
+ System.currentTimeMillis() + ".jpg");
if (!filePic.exists()) {
filePic.getParentFile().mkdirs();
filePic.createNewFile();
}
FileOutputStream fos = new FileOutputStream(filePic);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} return filePic.getAbsolutePath();
} //获取视频总时长
public String getVideoDuration(String path){
MediaMetadataRetriever mmr = new MediaMetadataRetriever();
mmr.setDataSource(path);
String duration = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION); //
return duration;
}
结束。
环信easeui集成:坑总结2018(二)的更多相关文章
- 环信easeui集成:坑总结2018
环信EaseUI 集成,集成不做描述,看文档即可,下面主要谈一些对easeui的个性化需求修改. 该篇文章将解决的问题: 1.如何将App用户体系的用户名和用户头像 显示于环信的easeui 2.如何 ...
- 环信EaseUI集成错误 Unknown type name 'NSString' NSLocalizedString
环信集成本来认为很简单的,有现成的UI,照着文档直接傻瓜操作就行,没曾想聊天记录不能长时间保存,于是乎就有了这篇记录环信坑的笔记 在下载的环信的SDK时候里面会有两个包,一个完整版的,一个简洁版的,导 ...
- 李洪强iOS开发之-环信03_集成 SDK 基础功能
李洪强iOS开发之-环信03_集成 SDK 基础功能 集成 SDK 基础功能 在您阅读此文档时,我们假定您已经具备了基础的 iOS 应用开发经验,并能够理解相关基础概念. SDK 同步/异步方法区分 ...
- 环信SDK集成
利用环信SDK可以实现即时通讯,但在集成的过程中碰到了不少的坑. 注意 选择项目路径,这里以最新版环信demo为例 注意:环信的ChatDemoUI这个demo里边因为研发的同事为了照顾老版本的And ...
- laravel 框架接入环信遇到的坑(-)
在脚本中执行判断user表中是否注册环信时,报错: “请求错误:service_resource_not_found Service resource not found ” // 判断环信是否已经 ...
- iOS 环信集成项目应用
环信iOS端3.0版本集成记录--聊天界面篇 环信离线推送证书... 1,环信处在后台的时候,消息的接收与推送 离线发推送 配置属性 EMCallOptions *options = [[EMClie ...
- 环信集成 2---基于环信Demo3.0,实现单聊功能
这几天在做环信,所以把环信相关的东西拿过来,做个系统点的东西 注意: 这里Demo集成的是带有实时语音功能的(libEaseMobClientSDK.a). 环信库是直接拖拽EaseMobSDK文件夹 ...
- apicloud 环信总结
点击链接先查看一下apicloud 环信的文档 https://docs.apicloud.com/Client-API/Open-SDK/easeChat 文档中写了很多,但官方给的文档还是有问题, ...
- iOS 环信集成问题(连文档都不说明的坑。。)
首先,关于环信SDK的下载和一些依赖库的添加,在此我就不做详细介绍,(http://www.easemob.com/download/im)附上环信官网文档,可以看一下,上面都可以下载,也有相关配置介 ...
随机推荐
- 一文了解Python中的循环(for while break continue 嵌套循环...)
循环 目标 程序的三大流程 while 循环基本使用 break 和 continue while 循环嵌套 01. 程序的三大流程 在程序开发中,一共有三种流程方式: 顺序 —— 从上向下,顺序执行 ...
- web前端异步数据交互(长连接)
Workers异步任务 开始(注册): divobjx=document.getElementsByTagName("div")[0]; var workdong=new Work ...
- 安装MySQL时候最后一步报无法定位程序输入点fesetround于动态链接库MSVCR120.dll
今天在装MySQL时到最后一步出现了一个问题[报无法定位程序输入点fesetround于动态链接库MSVCR120.dll]这是由什么原因引起的呢,其实是缺少一个vcredist_x64.exe插件 ...
- Xamarin.Android 上中下布局
xml代码: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:and ...
- 【ABP框架系列学习】模块系统(4)之插件示例开发
0.引言 上一篇博文主要介绍了ABP模块及插件的相关知识,本章节主要开发一个插件示例来学习如何创建一个插件,并在应用程序中使用.这个命名为FirstABPPlugin的插件主要在指定的时间段内删除审计 ...
- js自定义对象和类
1.工厂方式 <script type="text/javascript"> function createObject(name){ var p = n ...
- Jexus使用的相关记录
前言 本文是零零散散的记录,部分内容是我在平时工作中用到的,部分是从群里"偷"来的,所以难免会有一些错误. 主要还是希望能帮到部分使用Jexus的朋友. 安装 curl https ...
- 纸上谈兵: 伸展树 (splay tree)[转]
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们讨论过,树的搜索效率与树的深度有关.二叉搜索树的深度可能为n,这种情况下,每 ...
- MySql 踩坑小记
MySql 踩坑一时爽,一直踩啊一直爽... 以下记录刚踩的三个坑,emmm... 首先是远程机子上创建表错误(踩第一个坑),于是将本地机器 MySql 版本回退至和远程一致(踩第二个坑),最后在 ...
- 正确重写hashcode hashcode与equals方法 集合元素如何判断是否相等 集合如何查看是否包含某个元素
首先记住两句话 相等的两个对象,即equals(Object)方法判断两个对象相等,那么他们必须要有相同的hashcode hashcode相同的两个对象,他们可能相同,也可能不相同 简单地说可以这么 ...