dzs-yaodi / RongyunDemo

集成容联云通讯音视频通话

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

该工程集成容联 云通讯的sdk,在官网源码中截取出音视频通话的功能,简化了

sdk初始化帮助类 SDKCoreHelper 通话帮助类 VoIPCallHelper IM聊天帮助类 IMChattingHelper

该项目只要在官网新建项目,替换Constents中的几个参数即可(没有写动态申请权限,需要手动去设置)

导入方式

1、复制libs中的so文件和jar包

2、app build gradle中配置

ndk {

        abiFilters 'armeabi', 'armeabi-v7a'
        
    }
    
    sourceSets {
    
        main {
        
            jniLibs.srcDirs = ['libs']
            
            java.srcDirs = ['src/main/java']
            
        }
        
    }

3、导入部分必要的权限(位置,读写,麦克风,相机等)

4、复制ECSuperActivity,IMChattingHelper,SDKCoreHelper,VoIPCallHelper这4个类到工程

5、初始化

因为容联sdk本身的原因,sdk的初始化等操作要在Application创建完成之后才能调用。

MainActivity 中调用

SDKCoreHelper.init(context);

6、音视频的activity继承ECSuperActivity,主要是初始化成功之后,会设置接收VoIP来电事件通知Intent,

默认设置的是VoiceActivity(语音通话的activity),会在ECSuperActivity中根据呼入的类型跳转音频或者视频的页面。

7、为了在接收方的页面显示出当前来点人的信息,我是通过发送一条IM消息实现的(容联官网的app来电显示的是一个通话

id,不符合我要实现的要求)

   try {
        ECMessage msg = ECMessage.createECMessage(ECMessage.Type.TXT);
        
        msg.setTo(Constents.call_id);
        
        ECTextMessageBody msgBody = new ECTextMessageBody(Constents.id + ",外卖");
        
        msg.setBody(msgBody);

        IMChattingHelper.sendECMessage(msg);

    }catch (Exception e){
    
        e.printStackTrace();
    }

msgBody 对象就是当前呼叫人发送给接收方的消息

8、音视频页面中控件初始化完成后 设置通话界面刷新的监听(适用通话双方)

VoIPCallHelper.setOnCallEventNotifyListener(this);

在监听中可以获取到是否正在呼叫,对方是否接听电话,对方是否挂断电话等

9、视频呼出

ECDevice.getECVoIPSetupManager().setVideoView(mRemote_video_view, mLocalvideo_view);

String mCurrentCallId = ECDevice.getECVoIPCallManager().makeCall(ECVoIPCallManager.CallType.VIDEO,

id);

视频需要传入显示自己和对方的两个surfaceView,这儿直接用的官方自定义的ECOpenGlView 来显示的

10、音频呼出

String mCurrentCallId = VoIPCallHelper.makeCall(ECVoIPCallManager.CallType.VOICE,id,name);

11、接听

VoIPCallHelper.acceptCall(mCallId);

12、拒绝接听

VoIPCallHelper.rejectCall(mCallId);

13、挂断

VoIPCallHelper.releaseCall(mCallId);

14、免提(根据状态不同,切换图片)

VoIPCallHelper.setHandFree();

boolean is = VoIPCallHelper.getHandFree();

mIvFreeHands.setImageResource(is ? R.mipmap.iv_free_hands : R.mipmap.iv_free);

15、静音

VoIPCallHelper.setMute();

boolean isMute = VoIPCallHelper.getMute();

mIvMute.setImageResource(isMute ? R.mipmap.iv_mute_state : R.mipmap.iv_mute);

About

集成容联云通讯音视频通话


Languages

Language:Java 100.0%