当前位置: 移动技术网 > IT编程>移动开发>Android > 环信easeui集成:坑总结2018(二)

环信easeui集成:坑总结2018(二)

2018年09月12日  | 移动技术网IT编程  | 我要评论

选调生报考条件,泰康之家养老社区,秦城冷月

环信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;
    }

 

   

  结束。

  

  

 

   

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网