环信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(二)的更多相关文章

  1. 环信easeui集成:坑总结2018

    环信EaseUI 集成,集成不做描述,看文档即可,下面主要谈一些对easeui的个性化需求修改. 该篇文章将解决的问题: 1.如何将App用户体系的用户名和用户头像 显示于环信的easeui 2.如何 ...

  2. 环信EaseUI集成错误 Unknown type name 'NSString' NSLocalizedString

    环信集成本来认为很简单的,有现成的UI,照着文档直接傻瓜操作就行,没曾想聊天记录不能长时间保存,于是乎就有了这篇记录环信坑的笔记 在下载的环信的SDK时候里面会有两个包,一个完整版的,一个简洁版的,导 ...

  3. 李洪强iOS开发之-环信03_集成 SDK 基础功能

    李洪强iOS开发之-环信03_集成 SDK 基础功能 集成 SDK 基础功能 在您阅读此文档时,我们假定您已经具备了基础的 iOS 应用开发经验,并能够理解相关基础概念. SDK 同步/异步方法区分 ...

  4. 环信SDK集成

    利用环信SDK可以实现即时通讯,但在集成的过程中碰到了不少的坑. 注意 选择项目路径,这里以最新版环信demo为例 注意:环信的ChatDemoUI这个demo里边因为研发的同事为了照顾老版本的And ...

  5. laravel 框架接入环信遇到的坑(-)

    在脚本中执行判断user表中是否注册环信时,报错: “请求错误:service_resource_not_found Service resource not found  ” // 判断环信是否已经 ...

  6. iOS 环信集成项目应用

    环信iOS端3.0版本集成记录--聊天界面篇 环信离线推送证书... 1,环信处在后台的时候,消息的接收与推送 离线发推送 配置属性 EMCallOptions *options = [[EMClie ...

  7. 环信集成 2---基于环信Demo3.0,实现单聊功能

    这几天在做环信,所以把环信相关的东西拿过来,做个系统点的东西 注意: 这里Demo集成的是带有实时语音功能的(libEaseMobClientSDK.a). 环信库是直接拖拽EaseMobSDK文件夹 ...

  8. apicloud 环信总结

    点击链接先查看一下apicloud 环信的文档 https://docs.apicloud.com/Client-API/Open-SDK/easeChat 文档中写了很多,但官方给的文档还是有问题, ...

  9. iOS 环信集成问题(连文档都不说明的坑。。)

    首先,关于环信SDK的下载和一些依赖库的添加,在此我就不做详细介绍,(http://www.easemob.com/download/im)附上环信官网文档,可以看一下,上面都可以下载,也有相关配置介 ...

随机推荐

  1. PyTorch--双向递归神经网络(B-RNN)概念,源码分析

    关于概念: BRNN连接两个相反的隐藏层到同一个输出.基于生成性深度学习,输出层能够同时的从前向和后向接收信息.该架构是1997年被Schuster和Paliwal提出的.引入BRNNS是为了增加网络 ...

  2. Python中的算数运算

    算数运算符 计算机,顾名思义就是负责进行 数学计算 并且 存储计算结果 的电子设备 目标 算术运算符的基本使用 01. 算数运算符 算数运算符是 运算符的一种 是完成基本的算术运算使用的符号,用来处理 ...

  3. 你不知道的JavaScript --- 作用域相关

    本篇是<你不知道的JavaScript>的读书笔记 什么是作用域? 程序离不变量,那么变量存储在哪里?程序需要时如何找到他们? 这些问题说明需要一套设计良好的规则来存储变量, 并且之后可以 ...

  4. Python制作二维码和条形码扫描器 (pyzbar)

    条码在生活中随处可见,其可分为三类:一维条码.二维条码.三维条码 一维条码: 我们平时习惯称为条形码.条形码是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符.常见的条 ...

  5. vue error:The template root requires exactly one element.

    error:[vue/valid-template-root] The template root requires exactly one element. 原因: 因为vue的模版中只有能一个根节 ...

  6. salesforce零基础学习(九十二)使用Ant Migration Tool 实现Metadata迁移

    我们在做项目时经常会使用changeset作为部署工具,但是某些场景使用changeset会比较难操作,比如当我们在sandbox将apex class更改名字想要部署到生产的org或者其他环境的or ...

  7. linux中gdb的使用

    断点 在代码的指定位置中断,使程序在此中断. break <function>    在进入指定函数时停住 break <linenum>    在指定行号停住. break ...

  8. MyBatis源码解析(七)——DataSource数据源模块之托管数据源

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6675700.html 1 回顾 之前介绍的非池型与池型数据源都是MyBatis自己定义的内 ...

  9. 翻译:group_concat()函数(已提交到MariaDB官方手册)

    本文为mariadb官方手册:group_concat()函数的译文. 原文:https://mariadb.com/kb/en/group_concat/ 我提交到MariaDB官方手册的译文:ht ...

  10. 巨杉数据库 MySQL兼容项目正式开源

    9月7日.8日,2018  ODF 开源数据库论坛,在北京盛大开幕.在大会上,巨杉数据库正式发布了巨杉全新的MySQL/MariaDB兼容架构,并将项目正式开源. 开源数据库论坛(ODF)是中国开源数 ...