环信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; }
结束。
上一篇: element-ui中Tree树形自定义节点内容render
下一篇: 打印开发中关于打印协议