1. 程式人生 > >Android 實現視訊聊天1對1功能

Android 實現視訊聊天1對1功能

Android實現視訊聊天很難? 不不不,其實很簡單,使用聲網第三方sdk簡單上手

先看效果,我這裡用的是模擬器測試

大家可以看到兩個模擬器介面都會顯示對應內容。右上角是自己,左邊是對方。

專案結構

下面開始準備工作

註冊之後建立運用,拿到AppId.

下載一對一SDK並解壓將檔案放入對應位置

將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();
    }

大致上就是這些重要方法。非常簡單,希望對小夥伴們有幫助。