Agora Platform을 사용하여 Android에서 WebRTC하기

15531 단어 안드로이드WebRTC
Agora SDK를 사용하여 WebRTC를 구현합니다.
Android와 PC에서 영상과 음성으로 통화할 수 있도록 합니다.

Agora에 사용자 등록



Agora 사이트에 사용자를 등록하고 로그인합니다.
htps //w w. 아고라. 이오/엔/




로그인하면 Dashboard가 표시되므로 왼쪽 메뉴에서 Projects → Project List를 클릭합니다.
Add New Project 버튼을 클릭하면 아래와 같은 App ID를 얻을 수 있다.



Android 구현


  • Gradle에 Agora SDK 등록
  • dependencies {
    ...
        implementation 'io.agora.rtc:full-sdk:2.3.1'
    }
    
  • 매니페스트에 권한 추가
  •     <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.RECORD_AUDIO" />
        <uses-permission android:name="android.permission.CAMERA" />
        <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
  • 레이아웃 추가
  • <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        ...>
    
        <FrameLayout
            android:id="@+id/frameLayout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
    </android.support.constraint.ConstraintLayout>
    
  • RtcEngine 구현

  • Activity 또는 Fragment에 처리를 추가합니다.
    이번에는 Fragment에 추가하고 싶습니다.
  • Fragment

  • R.string.app_id는 이전에 얻은 앱 ID를 제공합니다.
    public class MainFragment extends Fragment {
        private RtcEngine mRtcEngine;
        private boolean isJoin = false;
    
        private IRtcEngineEventHandler mRtcEventHandler = new IRtcEngineEventHandler() {
    
        };
    
        public MainFragment() {
        }
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.fragment_main, container, false);
    
            try {
                mRtcEngine = RtcEngine
                        .create(getContext(), getString(R.string.app_id), mRtcEventHandler);
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            mRtcEngine.enableVideo();
            mRtcEngine.setVideoEncoderConfiguration(
                    new VideoEncoderConfiguration(VideoEncoderConfiguration.VD_640x360,
                            VideoEncoderConfiguration.FRAME_RATE.FRAME_RATE_FPS_15,
                            VideoEncoderConfiguration.STANDARD_BITRATE,
                            VideoEncoderConfiguration.ORIENTATION_MODE.ORIENTATION_MODE_FIXED_PORTRAIT));
    
            FrameLayout frameLayout = view.findViewById(R.id.frameLayout);
    
            SurfaceView surfaceView = RtcEngine.CreateRendererView(getContext());
            surfaceView.setZOrderMediaOverlay(true);
    
            frameLayout.addView(surfaceView);
            mRtcEngine.setupLocalVideo(new VideoCanvas(surfaceView, VideoCanvas.RENDER_MODE_FIT, 0));
            mRtcEngine.startPreview();
    
            return view;
        }
    
        @Override
        public void onPause() {
            mRtcEngine.leaveChannel();
    
            super.onPause();
        }
    
        public void changeChannel() {
            if (!isJoin) {
                isJoin = true;
                // "1000"は、PC側と合わせる必要があります。
                mRtcEngine.joinChannel(null, "1000", "Extra Optional Data", 0);
            } else {
                isJoin = false;
                mRtcEngine.leaveChannel();
            }
        }
    }
    
  • Activity
  •     @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
    
            FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
            fab.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.fragment);
                    if (fragment instanceof MainFragment) {
                        ((MainFragment) fragment).changeChannel();
                    }
                }
            });
        }
    

    PC 준비



    htps : // / cs. 아고라. 이오/엔/ゔぃ로 오/우ぇb_p레파레? p t t rm = u b
    위의 "Method 3 : Get the SDK from the official Agora website"에서 Agora_Web_SDK_v2_5_0_FULL.zip을 다운로드하십시오.



    압축을 풀고 index.html을 실행합니다.
    방금 검색한 앱 ID를 입력하세요.



    Android와 PC 각각에서 Join하면 영상과 음성이 연결됩니다.
    채널의 1000은 Android 측과 일치해야합니다. 여기의 문자열을 변경하여 연결할 상대를 선택할 수 있습니다.

    세세한 설정은 하고 있지 않습니다만, 단순하게 영상과 음성으로 통화 할 수 있도록 하는 것만이라면, 편하게 실장을 할 수 있으므로, 시험해 보세요.

    좋은 웹페이지 즐겨찾기