PlayRTC Android/iOS SDK 2.2.0, Javascript 2.2.7 이후 초기화시 설정 방법

SDK별 초기화시 설정 방법

최근 Android SDK, iOS SDK의 2.2.0업데이트를 통해 PlayRTC 객체 생성시 설정 방법이 변했습니다. 기존 내용이 어떻게 바뀌었는지 살펴보도록 하겠습니다.

Android SDK Config

기존의 안드로이드 객체 초기화는 별도의 “PlayRTCSettings”의 설정 전용 객체를 아래와 같이 인스턴스로 생성하여 사용하였습니다. 인스턴스 생성시 각종 설정값에 해당하는 프로퍼티를 setter 메소드로 조작하여 생성하도록 하였습니다.

    private void createPlayRTCInstance() {
        PlayRTCSettings settings = createPlayRTCConfiguration();
        playrtc = PlayRTCFactory.newInstance(settings, playrtcObserver);
    }

    private PlayRTCSettings createPlayRTCConfiguration() {
        PlayRTCSettings settings = new PlayRTCSettings();

        // PlayRTC instance have to get the application context.
        settings.android.setContext(getApplicationContext());

        // T Developers Project Key.
        settings.setTDCProjectId(T_DEVELOPERS_PROJECT_KEY);

        settings.setAudioEnable(true);
        settings.setVideoEnable(true);
        settings.video.setFrontCameraEnable(true);
        settings.video.setBackCameraEnable(false);
        settings.setDataEnable(false);

        return settings;
    }

새로이 바뀐 설정은 다음과 같습니다. “PlayRTCFactory”객체 하부에 “createConfig” 메서드를 통해 설정을 수행합니다. 새로운 방식으로 변경과 동시에 명명을 각 SDK와 일관성있도록 수정하여 보다 더 직관적이면서 읽고 사용하기 쉽도록 정리하였으며 보다 다양한 값을 설정 가능합니다.

    private void createPlayRTCInstance() {
        PlayRTCConfig config = createPlayRTCConfig();
        playrtc = PlayRTCFactory.createPlayRTC(config, playrtcObserver);
    }

    private PlayRTCConfig createPlayRTCConfig() {
        PlayRTCConfig config = PlayRTCFactory.createConfig();

        // PlayRTC instance have to get the application context.
        config.setAndroidContext(getApplicationContext());

        // T Developers Project Key.
        config.setProjectId(T_DEVELOPERS_PROJECT_KEY);

        config.video.setEnable(true);
        config.video.setCameraType(CameraType.Front);
        config.video.setMaxFrameSize(640, 480);
        config.video.setMinFrameSize(640, 480);
        config.audio.setEnable(true);

        // use PlayRTCAudioManager
        config.audio.setAudioManagerEnable(true);
        config.data.setEnable(true);

        return config;
    }

이전 버전의 SDK를 위한 설정방법은 향후 제거될 예정이며 2.2.0이후로는 새로운 방식의 설정을 사용토록 권장 합니다. 여기에 더해 가장 큰 변경점은 “PlayRTCAudioManager”의 사용입니다.

PlayRTCAudioManager

실제 통화 앱의 작성에 있어서 여러 상황이 발생합니다. 특히 일반적인 통화시 다음과 같이 출력을 설정할 필요가 있습니다.

  • 이어폰이 연결되어져 있으면 이어폰으로 출력
  • 사용자의 귀가 화면을 덮으면 스마트폰 전면 상부의 이어 스피커로 출력
  • 아니라면 스피커폰을 통해 출력

이렇게 출력을 사용자의 상황에 맞추어 조정을 해 주어야 하는데, 이는 안드로이드 System API인 AudioManager와 전면 센서 API인 Proximity Sensor를 다루어 직접 처리하여야 합니다. PlayRTCAudioManager는 이러한 기본적인 사용자 상황에 맞는 통화 경험 제어를 편리하게 사용토록 합니다.

PlayRTCAudioManager는 다시 직접 조작하는 방법과 초기화시 설정을 통해 사용하는 방법이 있습니다. 이 중, 직접 조작하는 방법을 살펴 보면 아래와 같습니다.

if(USE_SDK2_2_0 == false) {
    //sdk v2.2.0 에서는  PlayRTCConfig 에서 PlayRTCAudioManager를 사용하도록 설정.
    pAudioManager = PlayRTCAudioManager.create(this, new Runnable() {
        @Override
        public void run() {

    /* Audio 출력 디비이스 조회 한후 PlayRTC에 전달한다.
       * AudioDevice : Audio 출력 장치의 종류를 정의.
       * - WIRED_HEADSET
       * - SPEAKER_PHONE
       * - EARPIECE
       * - BLUETOOTH, 미지원
       */
            AudioDevice audioDivece = pAudioManager.getSelectedAudioDevice();
            if (playRTC != null) {
                if (audioDivece == AudioDevice.WIRED_HEADSET) {
                    // PlayRTC SDK에 Audio Path를 전달한다.
                    playRTC.notificationAudioType(PlayRTCAudioType.AudioReceiver);
                    Log.i(LOG_TAG, "AudioDevice audioDivece = AudioReceiver");
                } else if (audioDivece == AudioDevice.SPEAKER_PHONE) {
                    // PlayRTC SDK에 Audio Path를 전달한다.
                    playRTC.notificationAudioType(PlayRTCAudioType.AudioSpeaker);
                    Log.i(LOG_TAG, "AudioDevice audioDivece = AudioSpeaker");
                } else if (audioDivece == AudioDevice.EARPIECE) {
                    // PlayRTC SDK에 Audio Path를 전달한다.
                    playRTC.notificationAudioType(PlayRTCAudioType.AudioEarphone);
                    Log.i(LOG_TAG, "AudioDevice audioDivece = AudioEarphone");
                } else if (audioDivece == AudioDevice.BLUETOOTH) {
                    // PlayRTC SDK에 Audio Path를 전달한다.
                    playRTC.notificationAudioType(PlayRTCAudioType.AudioBluetooth);
                    Log.i(LOG_TAG, "AudioDevice audioDivece = AudioBluetooth");
                }
            }
        }
    });

    // PlayRTCAudioManager 구동
    pAudioManager.init();
}

각각의 지정된 상황에 대해 “playRTC.notificationAudioType(PlayRTCAudioType.AudioReceiver);”와 같이 PlayRTC 객체의 notificationAudioType 메소드를 통해 출력방향을 지정해 줍니다. 위의 코드를 실행해 줌으로써 간단하게 다양한 사용자의 상황에 대응이 가능합니다.

그리고 보다 더 간단하게는 새로운 설정방법을 통해 아래와 같이 “setAudioManagerEnable” 메서드를 true값으로 바꾸어 주면 됩니다.

config.audio.setAudioManagerEnable(true);

쉽고 편리하죠? 다만, PlayRTCAudioManager가 사용하는 안드로이드 AudioManager는 전역사용되어 게임과 같이 멀티미디어 앱에서 사용하게 되면 통화와 앱 자체의 “사운드”가 동시에 작동하지 않음으로, 일반적인 통화앱이 아닌 멀티미디어를 별도로 다루는 앱에서는 위의 내용을 수동으로 구현하여야 합니다. 마찮가지로 PlayRTCAudioManager를 통해 사용자의 상황에 맞추어 추가적인 행동을 하고자 하면은 설정값에서 setAudioManagerEnable을 false로 주고 위의 코드를 사용하여 추가적인 행동을 구현하면 됩니다.

다만 블루투스 통화 기기를 지원하기 위해서는 PlayRTCAudioManager를 사용하지 않고 직접 구현해 주어야 합니다.

보다 더 자세한 사용법과 API 사용방법은 아래의 링크를 참조토록 합니다.

iOS SDK Config

새로운 방식으로 변경과 동시에 명명을 각 SDK와 일관성있도록 수정하여 보다 더 직관적이면서 읽고 사용하기 쉽도록 정리하였으며 보다 다양한 값을 설정 가능합니다. 이전 버전의 SDK를 위한 설정방법은 향후 제거될 예정이며 2.2.0이후로는 새로운 방식의 설정을 사용토록 권장 합니다. 이전과의 차이점은 아래와 같습니다.

/*
 * 2.2.0 이전의 PlayRTCSettings 인스턴스 생성
 */
- (PlayRTCSettings*)createPlayRTCSettings
{
    PlayRTCSettings* settings = [[PlayRTCSettings alloc] init];
    [settings setTDCProjectId:TDCProjectId];
    [settings setTDCLicense:TDCLicense];
    [settings.channel setRing:FALSE];
    
    [settings setVideoEnable:TRUE];
    [settings setAudioEnable:TRUE];
    [settings setDataEnable:TRUE];
    [settings.video setFrontCameraEnable:TRUE]; // 전면 카메라 사용, Default
    [settings.video setBackCameraEnable:FALSE]; // 후면 카메라 시용
    
    return settings;
    
}

/*
 * 2.2.0 이후의 PlayRTCSettings 인스턴스 생성
 */
- (PlayRTCConfig*)createPlayRTCConfiguration
{
    PlayRTCConfig* config = [PlayRTCFactory createConfig];
    [config setProjectId:TDCProjectId];
    [config setRingEnable:FALSE];
    
    [config.video setEnable:TRUE];
    [config.video setCameraType:CameraTypeFront];
    // sdk support only 640x480
    [config.video setMaxFrameSize:640 height:640];
    [config.video setMinFrameSize:640 height:480];
    [config.video setMaxFrameRate:30];
    [config.video setMinFrameRate:15];
    [config.bandwidth setVideoBitrateKbps:2500];
    
    [config.audio setEnable:TRUE];
    [config.bandwidth setAudioBitrateKbps:35];
    [config.audio setEchoCancellationEnable:TRUE];
    [config.audio setAutoGainControlEnable:TRUE];
    [config.audio setNoiseSuppressionEnable:TRUE];
    [config.audio setHighpassFilterEnable:TRUE];
    
    [config.data setEnable:TRUE];
        
    return config;
}

iOS는 전면 센서를 개발자가 직접제어할 수 없어 PlayRTC Android SDK와 같은 PlayRTCAudioManager가 없으며 유사하게 필요하다면 직접 구현하여야 합니다.

보다 더 자세한 사용법과 API 사용방법은 아래의 링크를 참조토록 합니다.

Javascript SDK Config

Javascript의 설정 방법도 Android, iOS의 설정 방법에 맞추어 용법을 정리하였으며 보다 더 다양한 값을 조작 가능합니다.이전 버전의 SDK를 위한 설정방법은 향후 제거될 예정이며 2.2.7이후로는 새로운 방식의 설정을 사용토록 권장 합니다. 아래와 같습니다.

app = new PlayRTC({
        projectKey: "YOUR PROJECT KEY",
        localMediaTarget: "localStream",
        remoteMediaTarget: "remoteStream",
        ring: false,
        bandwidth: {
            audio: 50,
            video: 2500,
            data: 1638400
        },
        video: {
            minWidth: 320,
            minHeight: 240,
            maxWidth: 320,
            maxHeight: 240
        },
        audio: true,
        data: true
    });

Configuration

설명
자료형
기본값
video 비디오에 관해 설정합니다. width, height, framerate를 조정할 수 있습니다. Boolean or Object true
ring 허가/거절 프로세스 추가 Boolean false
remoteMediaTarget 원격 비디오 태그 아이디 명시 String null
projectKey 프로젝트 키 String
localMediaTarget 로컬 비디오 태그 아이디 명시 String null
data 데이터 채널 생성 유무 Boolean true
bandwidth 밴드위드스 설정 Object { audio: 50, video: 2500, data:1638400 }
audio 오디오 사용 유무 Boolean or Object true

보다 더 자세한 사용법과 API 사용방법은 아래의 링크를 참조토록 합니다.

 

Play RTC

서비스 체험

Play RTC build PlaygrOund

나만의 플레이그라운드를 만들어 친구를 초대해보세요 !

www.playrtc.com/

번거로운 가입이나 설치 없이ID만 만들어서 영상통화나 파일 공유, 채팅 서비스를 무료로 즐겨보세요.

 

Play RTC

서비스 체험

개설한 Playground 주소를 복하해서 친구에게 보내조세요. 친구가 Playground에 접속하면 이곳에 친구의 영상과 음성이 나타납니다. Waiting..

Photo

X
이미지 미리보기
이미지
 

서비스 체험

 

서비스 체험

서비스 체험은 크롬과 파이어폭스 브라우저에 최적화되어 있습니다.
크롬 또는 파이어폭스 브라우저를 설치 후 다시 이용해주세요.