Kakao i Connect Live::Kakao i Connect Live 2.0::API 레퍼런스::Android::Misc

페이지 이동경로

Misc

Misc 관련 전체 목록
대분류 구분 항목 설명
AudioHelper Property isFocusAcquired SDK에서 Audio를 관리하기 위해 acquireFocus() 메서드로 요청이 되었는지 상태를 확인
availableDevices 현재 유효한 오디오 장치 목록
selectedDevice 현재 선택된 오디오 장치
Method acquireFocus() AudioHelper 클래스에 오디오 포커스를 요청
releaseFocus() 앱에서 SDK의 상 시나리오가 종료 시, 오디오 포커스 요청을 취소
prefer() 해당 오디오 디바이스에 가장 높은 우선권을 부여
avoid() 해당 오디오 디바이스에 가장 낮은 우선권을 부여
resetPreferences() 오디오 장치 우선권을 변경한 경우, SDK 기본 설정대로 설정을 초기화
VideoCapturerFactory.
CreateScreenCapture
- - 화면 공유 요청을 Activity Result API로 처리하기 용이하도록 제공된 ActivityResultContract
VideoCapturerConfig Property default 로컬 카메라 캡처에 사용되는 기본 해상도
maxScreenSize 화면 넓은 면의 최대 크기 값보다 더 큰 화면은 종횡비를 유지하면서 다운스케일
VideoRenderer Property frameInfo VideoFrame의 FPS, 크기, 회전 정보를 나타냄
Event onFrameInfoListener VideoFrame 관련 정보(FPS, 크기, 회전)를 제공받을 callback
Method bind() 영상 프레임을 받아볼 VideoContent를 VideoRenderer 클래스에 바인드
unbind() 해당 VideoRenderer 클래스에서 수신 중인 영상 프레임의 바인드를 해제하여 수신 취소
setRenderingChecker() 영상 프레임이 렌더링되는 상태를 조회

AudioHelper

AudioHelper 클래스는 오디오 포커스 및 장치 우선권을 제어하는 유틸리티 모듈입니다. AudioHelper 클래스는 Property와 Method로 구성됩니다.

Property

AudioHelper 프로퍼티 목록
프로퍼티 타입 필수 여부 설명
isFocusAcquired Boolean 선택 SDK에서 Audio를 관리하기 위해 acquireFocus() 메서드로 요청이 되었는지 상태 확인
true: 정상 동작 중
false: 시작되지 않았거나 종료
availableDevices LiveData<List<AudioHelper.Device>> 선택 현재 유효한 오디오 장치 목록
selectedDevice LiveData<AudioHelper.Device?> 선택 현재 선택된 오디오 장치

Method

AudioHelper 클래스의 메서드는 다음과 같습니다.

acquireFocus()

SDK에서 오디오를 관리하기 위해 AudioHelper 클래스에 오디오 포커스를 요청합니다. 파라미터인 streamType, audioMode의 경우 기본값 사용을 권장하며, onCallModeChange의 경우 acquireFocus 이후 통화 상태에 따라 이벤트가 발생합니다.

코드예제acquireFocus() Syntax

// 기본 사용법
AudioHelper.acquireFocus(context = this)

// or...

// streamType, audioMode 는 기본값 사용 권장.
AudioHelper.acquireFocus(
            context = this,
            streamType = AudioManager.STREAM_VOICE_CALL,
            audioMode = AudioManager.MODE_IN_COMMUNICATION,
            onCallModeChange = Consumer { inCall ->
                //...
            }
        )

acquireFocus() Parameters
파라미터 타입 필수 여부 설명
context Context 필수 getSystemService를 하기 위한 콘텍스트
streamType Integer 선택 볼륨 스트림
- AudioManager.STREAM_VOICE_CALL(기본값) 사용 권장
audioMode Integer 선택 오디오 모드
- AudioManager.MODE_IN_COMMUNICATION(기본값) 사용 권장
onCallModeChange (Boolean) → Unit 선택 통화 상태 변화에 대한 콜백
true: 통화 중
false: 통화 중이 아님

releaseFocus()

앱에서 ConnectLive Android SDK의 사용 시나리오 종료 시, releaseFocus() 메서드를 통해 오디오 포커스 요청을 취소해야 합니다.

코드예제releaseFocus() Syntax

AudioHelper.releaseFocus()

prefer()

해당 오디오 디바이스에 가장 높은 우선권을 부여합니다. AudioHelper 클래스에 디바이스의 기본 우선순위가 정의되어 있습니다. 따라서 강제로 오디오 디바이스의 우선순위를 변경하는 경우가 아니라면, 해당 메서드의 호출을 지양합니다.

코드예제prefer() Syntax

AudioHelper.prefer(device = AudioHelper.Device.BLUETOOTH)

prefer() Parameters
파라미터 타입 필수 여부 설명
device AudioHelper.Device 필수 높은 우선순위를 부여할 디바이스 타입
SPEAKER_PHONE: 안드로이드 디바이스의 스피커폰
WIRED_HEADSET: 유선 이어폰
EARPIECE: 통화 시 귀에 닿는 스피커
BLUETOOTH: 블루투스 이어폰

avoid()

해당 오디오 디바이스에 가장 낮은 우선권을 부여합니다. AudioHelper 클래스에 디바이스의 기본 우선순위가 정의되어 있습니다. 따라서 강제로 오디오 디바이스의 우선순위를 변경하는 경우가 아니라면, 해당 메서드의 호출을 지양합니다.

코드예제avoid() Syntax

AudioHelper.avoid(device = AudioHelper.Device.EARPIECE)

avoid() Parameters
파라미터 타입 필수 여부 설명
device AudioHelper.Device 필수 낮은 우선순위를 부여할 디바이스 타입
SPEAKER_PHONE: 안드로이드 디바이스의 스피커폰
WIRED_HEADSET: 유선 이어폰
EARPIECE: 통화 시 귀에 닿는 스피커
BLUETOOTH: 블루투스 이어폰

resetPreferences()

prefer() 또는 avoid() 메서드를 통해 오디오 장치 우선권을 변경한 경우, SDK 기본 설정대로 설정을 초기화합니다.

코드예제resetPreferences() Syntax

AudioHelper.resetPreferences()

VideoCapturerFactory.CreateScreenCapture

화면 공유 요청을 Activity Result API로 처리하기 용이하도록 제공된 ActivityResultContract입니다. 앱 구성에 맞춰서 Intent, localScreen을 관리하는 것을 권장합니다.

코드예제VideoCapturerFactory.CreateScreenCapture Syntax

registerForActivityResult(VideoCapturerFactory.CreateScreenCapture) { data : Intent? ->
		if (data != null) {
				localScreen = ConnectLive.createLocalScreen(data)
				room.publish(localScreen)
		}
}.launch(Unit)

VideoCapturerConfig

로컬 비디오 캡처에 활용되는 설정으로 해상도와 화면 캡처의 최대 사이즈를 설정합니다. 기본값 사용을 권장합니다.

Property

VideoCapturerConfig 프로퍼티 목록
프로퍼티 타입 설명
default Size 로컬 카메라 캡처에 사용되는 기본 해상도
VGA(기본값): 640 x 480
HD: 1280 x 720
maxScreenSize Integer 화면 넓은 면의 최대 크기 값보다 더 큰 화면은 종횡비를 유지하면서 다운스케일
- 기본값: 1280

VideoRenderer

SurfaceView를 상속받고 있으며, VideoContent의 bind를 제공하는 클래스입니다. VideoRenderer가 화면에서 차지하는 비율에 따라 최적화를 위해 자동으로 화질변경을 수행합니다. 또한 VideoRenderer의 화면 노출 여부에 따라 attach, detach를 함으로써 편리함과 최적화를 제공합니다

Property

VideoRenderer 프로퍼티 목록
프로퍼티 타입 설명
frameInfo SharedFlow<Map<StringAny>> VideoFrame의 FPS, 크기, 회전 정보를 나타냄
onFrameInfoListener ((Map<String Any>) -> Unit)? VideoFrame 관련 정보(FPS, 크기, 회전)를 제공받을 callback

Method

bind()

영상 프레임을 받아볼 VideoContent를 VideoRenderer 클래스에 바인드합니다.

코드예제bind() Syntax

videoRenderer.bind(content = LocalVideo,RemoteVideo)

bind() Parameters
파라미터 타입 필수 여부 설명
content VideoContent 선택 영상 프레임을 받아볼 콘텐츠
LocalVideo: 로컬 비디오
RemoteVideo: 리모트 비디오

unbind()

해당 VideoRenderer 클래스에서 수신 중인 영상 프레임의 바인드를 해제하여 수신 취소합니다.

코드예제unbind() Syntax

videoRenderer.unbind()

setRenderingChecker()

영상 프레임이 렌더링되는 상태를 조회합니다. interval 동안 그려지는 프레임이 있을 경우 active가 호출되며, 그려지는 프레임이 없는 경우 inactive가 호출됩니다.

코드예제setRenderingChecker() Syntax

videoRenderer.setRenderingChecker(5000L,
			active = {
					...
			},
			inActive = {
					...
			}
)

setRenderingChecker() Parameters
파라미터 타입 필수 여부 설명
interval Long 선택 해당 시간 동안 그려지는 프레임이 있는지 확인
- 기본값(권장) : 5000L(millisecond)
active () → Unit 필수 정상적으로 렌더링 중
inActive () → Unit 필수 마지막 프레임이 그려진 interval 시간이 지나도록 새로운 프레임이 존재하지 않음
이 문서가 만족스러운 이유를 알려주세요.
이 문서에 아쉬운 점을 알려주세요.
평가해주셔서 감사합니다.

더 자세한 의견은 documentation@kakaoenterprise.com 으로 제보해주세요.