欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android 实现视频聊天1对1功能

程序员文章站 2022-05-20 11:15:28
...

Android实现视频聊天很难? 不不不,其实很简单,使用声网第三方sdk简单上手

先看效果,我这里用的是模拟器测试

Android 实现视频聊天1对1功能

大家可以看到两个模拟器界面都会显示对应内容。右上角是自己,左边是对方。

项目结构

Android 实现视频聊天1对1功能

下面开始准备工作

声网开发者注册地址

注册之后创建运用,拿到AppId.

Android 实现视频聊天1对1功能

下载一对一SDK并解压将文件放入对应位置

Android 实现视频聊天1对1功能

将AppId添加到strings.xml中

 <string name="agora_app_id">您的AppId</string>

添加对应权限

  <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.BLUETOOTH" />

下面开始是我们Activity

 //创建RtcEngine 对象
    private void initializeAgoraEngine() {
        try {
            mRtcEngine = RtcEngine.create(getBaseContext(), getString(R.string.agora_app_id), mRtcEventHandler);
        } catch (Exception e) {
            Log.e(LOG_TAG, Log.getStackTraceString(e));

            throw new RuntimeException("创建RtcEngine对象失败" + Log.getStackTraceString(e));
        }
    }
//设置本地视频属性
    private void setupVideoProfile() {
        //打开视频模式
        mRtcEngine.enableVideo();
        //设置视频分辨率
        mRtcEngine.setVideoProfile(Constants.VIDEO_PROFILE_360P, false);
    }
//加入频道
    private void joinChannel() {
        mRtcEngine.joinChannel(null, "demoChannel1", "Extra Optional Data", 0); // if you do not specify the uid, we will generate the uid for you
    }
//设置远端视频渲染器
    private void setupRemoteVideo(int uid) {
        //获取控件
        FrameLayout container = (FrameLayout) findViewById(R.id.remote_video_view_container);

        if (container.getChildCount() >= 1) {
            return;
        }

        //创建视频渲染视图, 设置远端视频视图
        SurfaceView surfaceView = RtcEngine.CreateRendererView(getBaseContext());
        container.addView(surfaceView);
        mRtcEngine.setupRemoteVideo(new VideoCanvas(surfaceView, VideoCanvas.RENDER_MODE_ADAPTIVE, uid));
        surfaceView.setTag(uid); // for mark purpose
    }
//离开频道
    private void leaveChannel() {
        mRtcEngine.leaveChannel();
    }

大致上就是这些重要方法。非常简单,希望对小伙伴们有帮助。

附Demo下载地址