PlanetKit 4.4에서 5.5로 마이그레이션하기
PlanetKit 4.4에서 PlanetKit 5.5로 마이그레이션하기 위한 절차와 고려 사항을 상세히 설명합니다.
요구 사항
SDK 배포 채널을 Maven Central Repository로 변경
-
Android용 PlanetKit은 버전 5.3.3부터 Maven Central Repository를 통해 배포됩니다.
-
프로젝트에 Maven Central Repository가 설정되어 있지 않다면 다음과 같이 저장소를 추가하세요.
// Root-level build.gradle
allprojects {
repositories {
mavenCentral()
}
} -
모듈
build.gradle에 종속 항목(dependency)을 추가하세요.// module-level build.gradle
dependencies {
...
implementation 'com.linecorp.planetkit:planetkit:5.5.2'
...
}
Android 12 이상에서 Bluetooth 연결에 권한 필요
- Android 12(API 레벨 31) 이상의 Android 기기에서 Bluetooth 연결을 위해
BLUETOOTH_CONNECT권한이 필요합니다. Android 문서를 참조하세요. - Android 12 이상에서
BLUETOOTH_CONNECT권한이 부여되지 않으면 Bluetooth API의 작동을 보장할 수 없어 일부 문제가 발생할 수 있습니다. - 따라서 이 경우, 사용자의 기기가 Bluetooth로 연결되어 있더라도 PlanetKit은 Bluetooth로 전환하지 않습니다.
- Bluetooth 기기와 통신하기 위해
BLUETOOTH_CONNECT권한을 요청하세요.
런타임에 권한 요청하기
BLUETOOTH_CONNECT의 보호 수준은 위험(런타임 권한)으로 정의됩니다.- 따라서 Bluetooth를 사용할 때는 사용자의 동의가 필요하며, 일부 UX 시나리오가 필요할 수 있습니다.
- 이러한 UX 시나리오는 애플리케이션에 따라 다를 수 있습니다. 예를 들어, 데모 앱과 LINE 앱은 사용자가 오디오 경로 메뉴에서 Bluetooth를 선택하면 권한 요청 팝업을 표시합니다.
예제 코드
-
이 샘플 코드는 오디오 경로 메뉴에서 Bluetooth를 선택하는 예시입니다.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
if (ContextCompat.checkSelfPermission(
context,
Manifest.permission.BLUETOOTH_CONNECT
) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(context, arrayOf(Manifest.permission.BLUETOOTH_CONNECT), 0)
return
}
}
call?.getAudioSwitch()?.setAudioRoute(PlanetKitAudioRoute.BLUETOOTH)
PlanetKit에 필요한 Android 권한 명시
-
PlanetKit에 필요한 권한은 PlanetKit의
AndroidManifest.xml파일에 명시되어 있습니다. -
앱의
AndroidManifest.xml에 이미 이러한 권한 중 일부가 포함되어 있는 경우 중복이 있을 수 있지만 문제가 되지는 않습니다. -
PlanetKit에서 필요한 권한 목록은 다음과 같습니다.
<!--AndroidManifest.xml of PlanetKit-->
<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.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.BLUETOOTH"
android:maxSdkVersion="30"/>
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
targetSdkVersion에 따른 앱 구현 요구 사항
- 데모 앱 코드가
targetSdkVersion34 이상의 요구 사항을 충족하도록 업데이트되었습니다. - 데모 앱 코드를 참조하여 앱을 업데이트해 주세요.
| 유형 | 영향 받는 버전 | 요구 사항 | 참조 |
|---|---|---|---|
| POST_NOTIFICATIONS | targetSdkVersion 33 이상 | Android 13(API 레벨 33) 이상의 Android 기기에서 알림을 게시하려면 POST_NOTIFICATIONS 권한이 필요합니다. | POST_NOTIFICATIONS |
| 포그라운드 서비스 유형 | targetSdkVersion 34 이상 | 필요한 권한으로 포그라운드 서비스를 구현합니다. 앱의 사용 사례에 따라 FOREGROUND_SERVICE_MICROPHONE, FOREGROUND_SERVICE_MEDIA_PLAYBACK, FOREGROUND_SERVICE_MEDIA_PROJECTION 등 다양한 포그라운드 권한이 있습니다. | 포그라운드 서비스 유형은 필수 항목임 |
마이그레이션
Breaking change PlanetKit 초기화 개선
- 파일 입출력 등의 처리를 위해 PlanetKit의 초기화가 작업자 스레드에서 처리되도록 변경되었습니다.
- 초기화가 완료되면
OnInitializeCompleteListener.onComplete()가 호출됩니다. userAgent및isVideoHwCodecSupport정보는onComplete에 의해 제공되므로 관련 API가 삭제되었습니다.
API 변경
변경
-
PlanetKitobject 1-to-1 callGroup call이전 버전 PlanetKit 5.5 val userAgent: StringOnInitializeCompleteListener.onComplete(isSuccessful, isVideoHwCodecSupport, userAgent)val isVideoHwCodecSupport: BooleanOnInitializeCompleteListener.onComplete(isSuccessful, isVideoHwCodecSupport, userAgent)fun initialize(config: PlanetKitConfiguration)fun initialize(config: PlanetKitConfiguration, listener: OnInitializeCompleteListener)
추가
PlanetKitobject 1-to-1 callGroup callfun interface OnInitializeCompleteListener
예제 코드
class YourApplication : Application() {
override fun onCreate() {
...
val configBuilder = PlanetKit.PlanetKitConfiguration.Builder(this)
.setServerUrl(planet_base_url)
...
PlanetKit.initialize(configBuilder.build()) { isSuccessful, isVideoHwCodecSupport, userAgent ->
// Add implementation in your app if necessary
}
...
}
}
Breaking change PlanetKitSession 인터페이스 제거
PlanetKitCall및PlanetKitConference가PlanetKitSession를 상속하는 구조가 제거되었습니다.- 이전에
PlanetKitSession에 있던 공통 기능이PlanetKitCall및PlanetKitConference에 각각 추가되었습니다.
API 변경
변경
-
PlanetKitSessioninterface 1-to-1 callGroup call이전 버전 PlanetKit 5.5 interface PlanetKitSessioninterface PlanetKitCall,interface PlanetKitConference -
OnNoVideoSourceListenerinterface 1-to-1 callGroup call이전 버전 PlanetKit 5.5 fun onNoVideoSource(session: PlanetKitSession)fun onMyVideoNoSourceDetected(call: PlanetKitCall),fun onMyVideoNoSourceDetected(conference: PlanetKitConference)
Breaking change DefaultCameraVideoSource를 PlanetKitCameraManager로 교체
PlanetKitCameraManager인터페이스는 PlanetKit 내에서 카메라 작업을 관리하기 위한 메서드와 속성을 제공합니다. PlanetKit에서 제공하는 카메라 기능을 캡슐화하여 카메라 설정 구성과 상태 변경 이벤트 구독을 가능하게 합니다.- 카메라 장치 제어 정책 변경
- 5.5 버전부터는 다음 조건 중 하나 이상이 충족되면 카메라 장치가 켜지고, 모두 충족되지 않으면 꺼집니다.
PlanetKitCameraManager.startPreview()를 통해 미리보기를 렌더링하는PlanetKitVideoView가 하나 이상 존재PlanetKitCall또는PlanetKitConference가 연결 상태이고PlanetKitMyMediaStatus.myVideoStatus.videoState가ENABLED인 상태
- 5.5 버전부터는 다음 조건 중 하나 이상이 충족되면 카메라 장치가 켜지고, 모두 충족되지 않으면 꺼집니다.
API 변경
변경
-
PlanetKitobject 1-to-1 callGroup call이전 버전 PlanetKit 5.5 fun getDefaultCameraVideoSource(): DefaultCameraVideoSourcefun getCameraManager(): PlanetKitCameraManager
추가
PlanetKitCameraManagerinterface 1-to-1 callGroup callval resolution: PlanetKitCameraResolutionvar cameraType: PlanetKitCameraTypeval isStarted: Booleanval fps: Intfun setStateListener(listener: StateListener?)fun setManualResolution(resolution: PlanetKitCameraResolution)fun setDefaultResolution()fun setVirtualBackgroundPlugin(plugin: PlanetKitPluginVirtualBackground) :Booleanfun addCameraTypeChangedListener(listener: CameraTypeChangedListener)fun removeCameraTypeChangedListener(listener: CameraTypeChangedListener)fun setVideoSourceInterceptor(interceptor: PlanetKitVideoInterceptor?)fun startPreview(view: PlanetKitVideoView): Booleanfun stopPreview(view: PlanetKitVideoView): Booleanfun enableDumpFrame(enable: Boolean)
PlanetKitCameraManager.StateListenerinterface 1-to-1 callGroup callfun onStart()fun onStop()fun onError(@ErrorCode code: Int)
PlanetKitCameraManager.CameraTypeChangedListenerinterface 1-to-1 callGroup callfun onChanged(isFrontCamera: Boolean)
PlanetKitCameraResolutionenum class 1-to-1 callGroup callQVGAVGAHD
삭제
DefaultCameraVideoSourceclass 1-to-1 callGroup call
예제 코드
클래스 획득 방법
-
이전 버전에서 카메라 속성을 다루는 방법은 다음과 같습니다.
fun userFunction() {
PlanetKit.getDefaultCameraVideoSource().cameraType = PlanetKitCameraType.FRONT
//...
} -
5.5 버전부터 카메라 속성을 다루는 방법은 다음과 같습니다.
fun userFunction() {
PlanetKit.getCameraManager().cameraType = PlanetKitCameraType.FRONT
//...
}
카메라 미리보기 사용 방법
-
이전 버전에서 카메라 미리보기를 다루는 방법은 다음과 같습니다.
val isCameraUsedByAnotherClass: Boolean
fun startRenderPreviewOnMyVideoView(view: PlanetKitVideoView) {
PlanetKit.getDefaultCameraVideoSource().addMyVideoView(view)
if (!PlanetKit.getDefaultCameraVideoSource()) {
PlanetKit.getDefaultCameraVideoSource().start()
}
}
fun stopRenderPreviewOnMyVideoView(view: PlanetKitVideoView) {
PlanetKit.getDefaultCameraVideoSource().removeMyVideoView(view)
/* Check If Camera should be stopped */
if (isCameraUsedByAnotherClass == false) {
PlanetKit.getDefaultCameraVideoSource().stop()
}
} -
5.5 버전부터 카메라 미리보기를 다루는 방법은 다음과 같습니다.
fun startRenderPreviewOnMyVideoView(view: PlanetKitVideoView) {
PlanetKit.getCameraManager().startPreview(view)
}
fun stopRenderPreviewOnMyVideoView(view: PlanetKitVideoView) {
PlanetKit.getCameraManager().stopPreview(view)
}
Breaking change API에서 API key 사용 중단
- API key 사용은 더 이상 지원되지 않습니다. 액세스 토큰을 사용하세요.
- 관련 API들이 deprecated 처리되었습니다.
API 변경
삭제
PlanetKitDisconnectReasonenum 1-to-1 callGroup callSERVICE_APIKEY_ERROR
PlanetKitCallParamclass 1-to-1 callval apiKey: String?
PlanetKitCallParam.Builderclass 1-to-1 callfun apiKey(apiKey: String)
PlanetKitConferenceParamclass Group callval apiKey: String?
PlanetKitConferenceParam.Builderclass Group callfun apiKey(apiKey: String)
Breaking change 로그 설정 업데이트
- 로깅 정책에 따라 적절한
PlanetKitLogLevel및PlanetKitLogSizeLimit을 사용할 수 있습니다. - 로그 파일의 크기를 설정할 수 있습니다.
- 로그 레벨이 단순화되었습니다.
- PlanetKit 로그가 암호화되었습니다.
- 콘솔 로그 출력이 제거되었습니다.
- 관련 API들이 변경되었습니다.
API 변경
변경
-
PlanetKitLogLevelenum class 1-to-1 callGroup call이전 버전 PlanetKit 5.5 VERBOSEDETAILEDDEBUGDETAILEDINFOSIMPLEWARNSIMPLEERRORSIMPLECRITICALSIMPLENONESILENT
추가
PlanetKitLogSizeLimitenum class 1-to-1 callGroup callPlanetKitConfiguration.Builderclass 1-to-1 callGroup callfun setLogSizeLimit(logSizeLimit: PlanetKitLogSizeLimit)
삭제
-
PlanetKitConfiguration.Builderclass 1-to-1 callGroup callfun logToConsole( isEnabled: Boolean )
-
PlanetKitConfiguration.Builderclass 1-to-1 callGroup call이전 버전 PlanetKit 5.5 fun serverUrl( serverUrl: String )fun setServerUrl( serverUrl: String )fun logToFile( isEnabled: Boolean )fun enableLog( isEnabled: Boolean )fun logLevel( logLevel: PlanetKitLogLevel )fun setLogLevel( logLevel: PlanetKitLogLevel )
예제 코드
class YourApplication : Application()
{
override fun onCreate()
{
...
val configBuilder = PlanetKit.PlanetKitConfiguration.Builder(this)
.setServerUrl(planet_base_url)
.enableLog(true)
.setLogLevel(PlanetKitLogLevel.DETAILED)
.setLogSizeLimit(PlanetKitLogSizeLimit.LARGE)
...
PlanetKit.initialize(configBuilder.build()) { isSuccessful, isVideoHwCodecSupport, userAgent ->
...
}
...
}
}
Breaking change PlanetKitCall 업데이트
acceptCall()함수에서mediaType파라미터가 제거되었습니다.hold()함수에서pauseRecv파라미터가 제거되었습니다.
API 변경
변경
-
PlanetKitCallinterface 1-to-1 call이전 버전 PlanetKit 5.5 fun acceptCall(mediaType:PlanetKitMediaType, listener:AcceptCallListener)fun acceptCall(listener: AcceptCallListener, initialMyVideoState: PlanetKitInitialMyVideoState = PlanetKitInitialMyVideoState.RESUME, useResponderPreparation: Boolean = false, recordOnCloud: Boolean = false)fun acceptCall(mediaType:PlanetKitMediaType, listener:AcceptCallListener, callInitData:PlanetKitCallInitData = PlanetKitCallInitData())fun acceptCall(listener: AcceptCallListener, callStartMessage: PlanetKitCallStartMessage, initialMyVideoState: PlanetKitInitialMyVideoState = PlanetKitInitialMyVideoState.RESUME, useResponderPreparation: Boolean = false, recordOnCloud: Boolean = false)fun hold(pauseRecv:Boolean, reason:String? = null, callback:PlanetKitRequestCallback? = null): Booleanfun hold(reason: String? = null, callback: PlanetKitRequestCallback? = null): Booleanfun hold(pauseRecv:Boolean, callback: PlanetKitRequestCallback? = null): Booleanfun hold(reason:String? = null, callback: PlanetKitRequestCallback? = null): Booleanfun hold(pauseRecv:Boolean, reason:String? = null): Booleanfun hold(reason:String? = null, callback: PlanetKitRequestCallback? = null): Booleanfun hold(pauseRecv:Boolean): Booleanfun hold(reason:String? = null, callback: PlanetKitRequestCallback? = null): Boolean
Breaking change PlanetKitCCParam 추가
PlanetKitCCParam은 클라우드 서버로부터 수신된 메시지 데이터를 나타내는 클래스입니다.PlanetKitCCParam은 통화 정보를 미리 알 수 있게 해줍니다.PlanetKitCCParam을 생성하려면 메시지 데이터가 필요합니다.- 또한,
verifyCall()을 수행할 때 메시지 데이터 대신PlanetKitCCParam을 사용하도록 변경되었습니다.
API 변경
추가
PlanetKitCCParamclass 1-to-1 callval peerId: Stringval peerServiceId: Stringval mediaType: PlanetKitMediaTypefun create(messageData: String): PlanetKitCCParam?
변경
-
PlanetKitVerifyCallParamclass 1-to-1 call이전 버전 PlanetKit 5.5 val messageData: Stringval cCParam: PlanetKitCCParam -
PlanetKitVerifyCallParam.Builderclass 1-to-1 call이전 버전 PlanetKit 5.5 fun messageData(messageData: String)fun cCParam(cCParam: PlanetKitCCParam)
예제 코드
override fun onMessageReceived(message: RemoteMessage) {
val cCParamStr = message.data["cc_param"]
/// PlanetKit 4.4
val param = PlanetKitVerifyCallParam.Builder().messageData(cCParamStr)
...
/// PlanetKit 5.5
val planetCCParam = PlanetKitCCParam.create(CParamStr)
Log.d("PushMessage", "ccParam{peerId=${planetCCParam.peerId}, peerServiceId=${planetCCParam.peerServiceId}, mediaType=${planetCCParam.mediaType}")
val param = PlanetKitVerifyCallParam.Builder().cCParam(planetCCParam)
...
}
Breaking change PlanetKitCallInitData의 이름과 인터페이스 변경
- 더 명확한 이름인
PlanetKitCallStartMessage로 변경되었으며, 이는PlanetKitCallInitData의 동작과 일치합니다. useResponderPreparation은PlanetKitCallStartMessage와는 다른 기능이기 때문에PlanetKitCallStartMessage에서 분리되었습니다.PlanetKitCallStartMessage의 최대 크기는 200바이트로 제한됩니다.- 관련 API들이 변경되었습니다.
API 변경
추가
PlanetKitCallinterface 1-to-1 callval myUseResponderPreparation: Booleanval myCallStartMessage: PlanetKitCallStartMessage?val peerUseResponderPreparation: Booleanval peerCallStartMessage: PlanetKitCallStartMessage?fun acceptCall( listener: AcceptCallListener, useResponderPreparation: Boolean = false )fun acceptCall( listener: AcceptCallListener, callStartMessage: PlanetKitCallStartMessage, useResponderPreparation: Boolean = false )
PlanetKitCallConnectedParamdata class 1-to-1 callval peerStartMessage: PlanetKitCallStartMessage?val isInResponderPreparation: Boolean
PlanetKitCallStartMessagedata class 1-to-1 callval data: String
삭제
PlanetKitCallinterface 1-to-1 callval myCallInitData: PlanetKitCallInitData?val peerCallInitData: PlanetKitCallInitData?fun acceptCall(mediaType: PlanetKitMediaType, listener: AcceptCallListener, callInitData:PlanetKitCallInitData )fun acceptCall( listener: AcceptCallListener, callInitData: PlanetKitCallInitData = PlanetKitCallInitData() )
PlanetKitCallInitDataclass 1-to-1 call
변경
-
CallListenerinterface 1-to-1 call이전 버전 PlanetKit 5.5 fun onVerified(call: PlanetKitCall, callerInitData: PlanetKitCallInitData)fun onVerified(call: PlanetKitCall, peerStartMessage: PlanetKitCallStartMessage?, peerUseResponderPreparation: Boolean)fun onConnected(call: PlanetKitCall, calleeInitData: PlanetKitCallInitData)fun onConnected(call: PlanetKitCall, param: PlanetKitCallConnectedParam) -
AcceptCallListenerinterface 1-to-1 call이전 버전 PlanetKit 5.5 fun onConnected( call:PlanetKitCall, calleeInitData: PlanetKitCallInitData )fun onConnected( call: PlanetKitCall, param: PlanetKitCallConnectedParam ) -
MakeCallListenerinterface 1-to-1 call이전 버전 PlanetKit 5.5 fun onConnected( call:PlanetKitCall, calleeInitData: PlanetKitCallInitData )fun onConnected( call: PlanetKitCall, param: PlanetKitCallConnectedParam ) -
VerifyListenerinterface 1-to-1 call이전 버전 PlanetKit 5.5 fun onVerified(call: PlanetKitCall, callerInitData: PlanetKitCallInitData)fun onVerified(call: PlanetKitCall, peerStartMessage: PlanetKitCallStartMessage?, peerUseResponderPreparation: Boolean) -
PlanetKitCallParamclass 1-to-1 call이전 버전 PlanetKit 5.5 val callInitData: Stringval callStartMessage: PlanetKitCallStartMessage?val isResponderPrepare: Booleanval useResponderPreparation: Boolean -
PlanetKitCallParam.Builderclass 1-to-1 call이전 버전 PlanetKit 5.5 fun callInitData(callInitData: String)fun callStartMessage(callStartMessage: PlanetKitCallStartMessage)fun responderPrepare(isResponderPrepare: Boolean)fun responderPreparation(useResponderPreparation: Boolean)
예제 코드
val paramBuilder = PlanetKitCallParam.Builder()
.peerId(targetId)
.responderPreparation(true)
val callStartMessage = PlanetKitCallStartMessage.create("Hello")
if (callStartMessage == null) {
Log.w(TAG, "Could not create call start message.\n"
+ "Plz check data size. The maximum size of data allowed is 200 bytes."
)
return
}
paramBuilder.callStartMessage(callStartMessage)
val callParam = paramBuilder.build()
PlanetKit.makeCall(param, callListener)
Breaking change CallListener의 onVerified와 onConnected 파라미터 변경
- 파라미터의 이름을 동작과 일치하는 더 명확한 이름으로 변경했습니다.
- 변경된 파라미터에는 더 많은 정보가 포함되어 있습니다.
- 관련 API가 변경되었습니다.
API 변경
추가
PlanetKitCallConnectedParamdata class 1-to-1 callval isDataSessionSupported: Booleanval isVideoHwCodecEnabled: Booleanval peerStartMessage: PlanetKitCallStartMessage?val isInResponderPreparation: Booleanval shouldFinishPreparation: Boolean
변경
-
CallListenerinterface 1-to-1 call이전 버전 PlanetKit 5.5 fun onConnected(call: PlanetKitCall, calleeInitData: PlanetKitCallInitData)fun onConnected(call: PlanetKitCall, param: PlanetKitCallConnectedParam) -
AcceptCallListenerinterface 1-to-1 call이전 버전 PlanetKit 5.5 fun onConnected( call:PlanetKitCall, calleeInitData: PlanetKitCallInitData )fun onConnected( call: PlanetKitCall, param: PlanetKitCallConnectedParam ) -
MakeCallListenerinterface 1-to-1 call이전 버전 PlanetKit 5.5 fun onConnected( call:PlanetKitCall, calleeInitData: PlanetKitCallInitData )fun onConnected( call: PlanetKitCall, param: PlanetKitCallConnectedParam ) -
VerifyListenerinterface 1-to-1 call이전 버전 PlanetKit 5.5 fun onVerified(call: PlanetKitCall, callerInitData: PlanetKitCallInitData)fun onVerified(call: PlanetKitCall, peerStartMessage: PlanetKitCallStartMessage?, peerUseResponderPreparation: Boolean)
Breaking change 의미 없는 API PlanetKitCall.reject() 제거
- 수신 전화를 거부할 때에도
reject()대신endCall()함수를 사용해야 하므로reject()를 제거했습니다.
API 변경
삭제
PlanetKitCallinterface 1-to-1 callfun reject()
Breaking change PlanetKitConferencePeer 업데이트
PlanetKitConferencePeer
- 피어 정보를 나타내던
PlanetKitConferencePeerInfo가PlanetKitConferencePeer에 통합되었습니다. PlanetKitConferencePeerInfo는 5.0 버전부터 더 이상 사용되지 않으며,PlanetKitConferencePeer로 대체되었습니다.PlanetKitConferencePeerInfo를 사용하는 다른 모든 API는PlanetKitConferencePeer를 사용하는 API로 대체되었습니다.PlanetKitConferencePeer에 새로운 API가 추가되었으니 문서를 참조해 주세요.
AudioVolumeResult
getAudioVolumeLevelSetting()함수의 반환 값을 나타냅니다.
HoldStatus
- 이 사용자가 통화를 일시 정지 중인지와 통화가 일시 정지된 이유에 대한 정보를 나타냅니다.
PeerGetFailReason
getVideoStatus(),getScreenShareState()및getAudioVolumeLevelSetting()실패의 원인을 나타냅니다.
ScreenShareStateResult
getScreenShareState()호출의 반환 값을 나타냅니다.
VideoStatusResult
getVideoStatus()함수의 반환 값을 나타냅니다.
getAudioVolumeLevelSetting()
- 해당 서브그룹에서 주어진 사용자의 볼륨 레벨을 가져옵니다. (최소: 0, 최대: 110)
audioVolume를 대체합니다.
getScreenShareState()
- 이 멤버의
PlanetKitSubgroup에서의 화면 공유 상태를 반환합니다. screenSharingState를 대체합니다.
getVideoStatus()
- 이 멤버의
PlanetKitSubgroup에서의 비디오 상태를 반환합니다. videoStatus를 대체합니다.
audioSubgroupName
- 5.0 이후 제거되었습니다.
ConferenceListener.onPeersAudioDescriptionUpdated를 통해 값을 가져오도록 변경되었습니다.- 자세한 내용은 오디오 볼륨 폴링을 이벤트 방식으로 변경을 참조하세요.
audioTaggedSubgroupName
- 5.0 이후 제거되었습니다.
ConferenceListener.onPeersAudioDescriptionUpdated를 통해 값을 가져오도록 변경되었습니다.- 자세한 내용은 오디오 볼륨 폴링을 이벤트 방식으로 변경을 참조하세요.
displayName
PlanetKitConferencePeerInfo.displayName을 대체합니다.
holdStatus
PlanetKitConferencePeerInfo.holdReason과PlanetKitConferencePeerInfo.isOnHold를 대체합니다.
isAudioMuted
PlanetKitConferencePeerInfo.isAudioMuted를 대체합니다.
isDataSessionSupported
PlanetKitConferencePeerInfo.isDataSessionSupport를 대체합니다.
mediaType
PlanetKitConferencePeerInfo.mediaType를 대체합니다.
currentScreenShareSubgroupName
var screenSharingSubgroupName: String?을 대체합니다.
serviceId
PlanetKitConferencePeerInfo.serviceId를 대체합니다.
sipDeviceInfo
PlanetKitConferencePeerInfo.sipDeviceInfo를 대체합니다.
sipLocalIP
PlanetKitConferencePeerInfo.sipLocalIP를 대체합니다.
subgroupNames
PlanetKitConferencePeerInfo.subgroupNames를 대체합니다.
user
PlanetKitConferencePeerInfo.user를 대체합니다.
userEquipmentType
PlanetKitConferencePeerInfo.userEquipmentType를 대체합니다.
userId
PlanetKitConferencePeerInfo.userId를 대체합니다.
currentVideoSubgroupName
PlanetKitConferencePeerInfo.videoSubgroupName을 대체합니다.
PlanetKitConferencePeerInfo.videoTaggedSubgroupName
- 5.0 버전부터 deprecated되었습니다.
- 유용성이 부족하여 더 이상 사용되지 않습니다.
API 변경
변경
-
PlanetKitConferencePeerInfoclass Group call이전 버전 PlanetKit 5.5 val serviceId: StringPlanetKitConferencePeer::val serviceId: Stringval user: PlanetKitUserPlanetKitConferencePeer::val user: PlanetKitUserval userId: StringPlanetKitConferencePeer::val userId: Stringvar videoSubgroupName: String?PlanetKitConferencePeer::val currentVideoSubgroupName: String?val mediaType:PlanetKitMediaTypePlanetKitConferencePeer::val mediaType:PlanetKitMediaTypeval subgroupNames: Set<String>PlanetKitConferencePeer::val subgroupNames:Set<String>val isDataSessionSupport: BooleanPlanetKitConferencePeer::val isDataSessionSupported: Booleanval isAudioMuted:Boolean: BooleanPlanetKitConferencePeer::val isAudioMuted: Booleanval isOnHold:BooleanPlanetKitConferencePeer::val holdStatus: HoldStatusval displayName:String?PlanetKitConferencePeer::val displayName:String?val userEquipmentType: PlanetKitUserEquipmentTypePlanetKitConferencePeer::val userEquipmentType: PlanetKitUserEquipmentTypeval sipLocalIP: String?PlanetKitConferencePeer::val sipLocalIP: String?val sipDeviceInfo:String?PlanetKitConferencePeer::val sipDeviceInfo:String?fun isSameMember(member:PlanetKitConferencePeerInfo): BooleanPlanetKitConferencePeer::fun isSameMember(member:PlanetKitConferencePeer):Boolean -
PlanetKitConferencePeerclass Group call이전 버전 PlanetKit 5.5 val videoStatus: PlanetKitVideoStatusfun getVideoStatus(subgroupName: String?): VideoStatusResultval audioVolume: Int?fun getAudioVolumeLevelSetting(subgroupName: String?): AudioVolumeResultval screenSharingSubgroupName: String?val currentScreenShareSubgroupName: String?val isDataSessionSupport: Booleanval isDataSessionSupported: Boolean
추가
PlanetKitConferencePeerclass Group callval screenShareSubgroupName:String?enum class PeerGetFailReasondata class VideoStatusResultdata class ScreenShareStateResultdata class AudioVolumeResultdata class HoldStatusfun getScreenShareState( subgroupName: String? ): ScreenShareStateResultfun createPeerControl(): PlanetKitPeerControl?
삭제
PlanetKitConferencePeerclass Group callvar audioSubgroupName: String?var audioTaggedSubgroupName: String?
PlanetKitConferencePeerInfoclass Group callvar videoTaggedSubgroupName: String?
예제 코드
audioVolume
-
이 API는
getAudioVolumeLevelSetting()을 대체합니다. -
샘플 코드를 참조해 주세요.
// In your application
val conferencePeer: PlanetKitConferencePeer = ...
// previous version
val audioVolumeSetting = conferencePeer.audioVolume
// PlanetKit 5.0
val result = conferencePeer.getAudioVolumeLevelSetting("Your subscribed Subgroup Name")
if (result.failReason != PeerGetFailReason.NONE) {
Log.w(TAG, "Could not get volume level setting. reason=${result.failReason}")
}
val audioVolumeSetting = result.volume
getScreenShareState()
-
이 API는
screenSharingState를 대체합니다. -
샘플 코드를 참조해 주세요.
// In your application
val conferencePeer: PlanetKitConferencePeer = ...
// previous version
val screenSharingState = conferencePeer.screenSharingState
// PlanetKit 5.0
val result = conferencePeer.getScreenShareState("Your subscribed Subgroup Name")
if (result.failReason != PeerGetFailReason.NONE) {
Log.w(TAG, "Could not get screenShareState. reason=${result.failReason}")
}
val screenShareState = result.screenShareState
getVideoStatus()
-
이 API는
videoStatus를 대체합니다. -
샘플 코드를 참조해 주세요.
// In your application
val conferencePeer: PlanetKitConferencePeer = ...
// previous version
val videoStatus = conferencePeer.videoStatus
// PlanetKit 5.0
val result = conferencePeer.getVideoStatus("Your subscribed Subgroup Name")
if (result.failReason != PeerGetFailReason.NONE) {
Log.w(TAG, "Could not get videoStatus. reason=${result.failReason}")
}
val videoStatus = result.videoStatus
Breaking change sendShortData()의 멀티캐스트 제거 및 사양 변경
- 모든 피어 중 소수의 피어에게만 데이터를 전송하는 경우, 전송할 데이터의 길이는 피어 목록의 영향을 받습니다. 이는 목록 구성에 따라 전송할 데이터의 길이를 관리하는 어려운 문제로 이어질 수 있습니다.
- 짧은 데이터는 한 피어나 모든 피어에게 전송될 수 있습니다.
- PlanetKit 5.2부터 데이터 유형의 크기는 100바이트 이하여야 하고, 짧은 데이터의 크기는 800바이트 이하여야 합니다.
API 변경
삭제
PlanetKitConferenceinterface Group callfun sendShortData( targetUsers: List<PlanetKitUser>, type: String, shortData: ByteArray): Booleanfun sendShortData( targetUsers: List<PlanetKitUser>, type: String, shortData: ByteArray, userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
예제 코드
// Previous 4.4
sendShortData( userList, type, data ) // multicast
// since 5.5
for( user in userList) {
sendShortData( user, type, data ) // unicast by iteration
}
// or
sendShortData( type, data ) // to All users
Breaking change 그룹 통화에서 방 속성 제거
- PlanetKit 5.2 미만 버전에서는 그룹 통화 참여 시 그룹 통화의 방 유형이 일치하지 않는 경우
WRONG_ROOM_ATTRIBUTE오류가 발생했습니다. - PlanetKit 5.2부터 방 유형을 제거하여 더 이상 확인하지 않으므로
WRONG_ROOM_ATTRIBUTE통화 종료 이유가 더 이상 사용되지 않습니다.
API 변경
삭제
PlanetKitConferenceRoomTypeenum class Group callPlanetKitConferenceParamdata class Group callval roomType: PlanetKitConferenceRoomType
PlanetKitConferenceParam.Builderclass Group callfun roomType(roomType: PlanetKitConferenceRoomType)
PlanetKitConferenceinterface Group callval roomType: PlanetKitConferenceRoomType
PlanetKitDisconnectReasonclass 1-to-1 callGroup callWRONG_ROOM_ATTRIBUTE
Breaking change PlanetKitConference의 disableVideo()에서 reason 파라미터를 제거
PlanetKitConference의disableVideo메서드의reason파라미터는 사용되지 않기 때문에 제거했습니다.PlanetKitMediaDisableReason에서 사용되지 않는 열거형 값을 제거했습니다.
API 변경
삭제
PlanetKitMediaDisableReasonenum class 1-to-1 callGroup callNOT_SUPPORTNO_MEDIA_SRCNO_RECV_MEDIA
Breaking change PlanetKit.getConference 변경
- 컨퍼런스 인스턴스는 싱글톤이 아니지만, 오직 하나의 세션만 유효하기 때문에 인스턴스 ID 파라미터 없이 컨퍼런스 인스턴스를 얻도록
getConference()메서드가 추가되었습니다.
API 변경
변경
-
PlanetKitobject 1-to-1 callGroup call이전 버전 PlanetKit 5.5 fun getConference(sid:Int): PlanetKitConference?fun getConference(): PlanetKitConference?
Breaking change PlanetKitInitialMyVideoState 추가
PlanetKitInitialMyVideoState는 영상 통화가 활성화될 때 로컬 사용자의 비디오 상태를 결정하기 위해 추가된 열거형 클래스입니다.PlanetKitInitialMyVideoState유형의 속성 또는 파라미터의 기본값은PlanetKitInitialMyVideoState.RESUME입니다.- 자세한 내용은 초기 비디오 상태 설정을 참조하세요.
API 변경
변경
-
PlanetKitCallinterface 1-to-1 call이전 버전 PlanetKit 5.5 fun acceptCall(listener: AcceptCallListener, useResponderPreparation: Boolean = false, recordOnCloud: Boolean = false)fun acceptCall(listener: AcceptCallListener, initialMyVideoState: PlanetKitInitialMyVideoState = PlanetKitInitialMyVideoState.RESUME, useResponderPreparation: Boolean = false, recordOnCloud: Boolean = false)fun acceptCall(listener: AcceptCallListener, callStartMessage: PlanetKitCallStartMessage, useResponderPreparation: Boolean = false, recordOnCloud: Boolean = false)fun acceptCall(listener: AcceptCallListener, callStartMessage: PlanetKitCallStartMessage, initialMyVideoState: PlanetKitInitialMyVideoState = PlanetKitInitialMyVideoState.RESUME, useResponderPreparation: Boolean = false, recordOnCloud: Boolean = false)fun enableVideo(userData: Any? = null, callback: PlanetKitRequestCallback? = null): Booleanfun enableVideo(initialMyVideoState: PlanetKitInitialMyVideoState = PlanetKitInitialMyVideoState.RESUME, userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean -
PlanetKitConferenceinterface Group call이전 버전 PlanetKit 5.5 fun enableVideo(userData: Any? = null, callback: PlanetKitRequestCallback? = null): Booleanfun enableVideo(initialMyVideoState: PlanetKitInitialMyVideoState = PlanetKitInitialMyVideoState.RESUME, userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
추가
PlanetKitInitialMyVideoStateenum class 1-to-1 callGroup callRESUME(0)PAUSE(1)
PlanetKitMakeCallParam.Builderclass 1-to-1 callfun setInitialMyVideoState(value: PlanetKitInitialMyVideoState)
PlanetKitConferenceParam.Builderclass Group callfun setInitialMyVideoState(value: PlanetKitInitialMyVideoState)
예제 코드
-
1대1 통화
fun makeCall() {
/* Make a video call with the local user's video state set to PAUSE */
val param = PlanetKitMakeCallParam.Builder()
.mediaType(PlanetKitMediaType.AUDIOVIDEO)
.setInitialMyVideoState(PlanetKitInitialMyVideoState.PAUSE)
/* Set other parameters If you needed */
.build()
val result = PlanetKit.makeCall(param, makeAcceptCallListener)
}
val verifyListener = object: VerifyListener {
override fun onVerified(call: PlanetKitCall,
peerStartMessage: PlanetKitCallStartMessage?,
peerUseResponderPreparation: Boolean) {
/* For a video call, accept the call with the local user's video state set to PAUSE */
call.acceptCall(acceptCallListener, PlanetKitInitialMyVideoState.PAUSE)
}
}
fun enableVideo() {
/* Change a call type as video call with the local user's video state set to PAUSE */
call.enableVideo(PlanetKitInitialMyVideoState.PAUSE)
} -
그룹 통화
fun joinConference() {
/* Join a video group call with the local user's video state set to PAUSE */
val param = PlanetKitConferenceParam.Builder()
.mediaType(PlanetKitMediaType.AUDIOVIDEO)
.setInitialMyVideoState(PlanetKitInitialMyVideoState.PAUSE)
/* Set other parameters If you needed */
.build()
val result = PlanetKit.joinConference(param, conferenceListener)
}
fun enableVideo() {
/* Change to video group call with the local user's video state set to PAUSE */
conference.enableVideo(PlanetKitInitialMyVideoState.PAUSE)
}
Breaking change 오디오 볼륨 폴링을 이벤트 방식으로 변경
averageVolumeLevel을 포함한 오디오 정보가 이제 오디오 설명(audio description) 이벤트로 제공됩니다.- 타이머 게터(getter) 패턴을 사용하는 코드를 이벤트 기반 패턴으로 변경해야 합니다.
- 이벤트 수신을 활성화할지 비활성화할지 선택할 수 있습니다.
- 이벤트 수신 청취 간격을 직접 정할 수 있습니다. 기본값은 500밀리초이며 최소 간격은 200밀리초입니다.
API 변경
변경
-
PlanetKitAudioVolumeclass 1-to-1 callGroup call이전 버전 PlanetKit 5.5 class PlanetKitAudioVolumeclass PlanetKitAudioDescriptionval averageVolume: Intval averageVolumeLevel: Intval subgroupName:String?val sentSubgroupName:String?
추가
PlanetKitConferenceParam.Builderclass Group callfun enableAudioDescription(enable:Boolean)fun setAudioDescriptionInterval(intervalMS:Long)
PlanetKitVerifyCallParam.Builderclass 1-to-1 callfun enableAudioDescription(enable:Boolean)fun setAudioDescriptionInterval(intervalMS:Long)
PlanetKitConferenceParam.Builderclass Group callfun enableAudioDescription(enable:Boolean)fun setAudioDescriptionInterval(intervalMS:Long)
CallListenerinterface 1-to-1 callfun onMyAudioDescriptionUpdated(call: PlanetKitCall, audioDescription: PlanetKitAudioDescription)fun onPeerAudioDescriptionUpdated(call: PlanetKitCall, audioDescription: PlanetKitAudioDescription)
ConferenceListenerinterface Group callfun onMyAudioDescriptionUpdated(conference: PlanetKitConference, audioDescription: PlanetKitAudioDescription)fun onPeersAudioDescriptionUpdated(conference: PlanetKitConference, peersAudioDescription:PlanetKitAudioDescriptions)
삭제
PlanetKitSessionclass 1-to-1 callGroup callval myVolume: PlanetKitAudioVolume
PlanetKitCallinterface 1-to-1 callval peerVolume:PlanetKitAudioVolume?
PlanetKitConferenceinterface Group callval memberVolumes: PlanetKitAudioVolumes?
예제 코드
1대1 통화
val param = PlanetKitVerifyCallParam.Builder()
...
.enableAudioDescription( true )
.setAudioDescriptionInterval( userIntervalDependingOnUX )
.build()
val makeCallListener = object : MakeCallListener {
...
override fun onMyAudioDescriptionUpdated(audioDescription: PlanetKitAudioDescription) {
// reflect update of the local user's audio description
}
override fun onPeerAudioDescriptionUpdated(audioDescription: PlanetKitAudioDescription) {
// reflect update of peer audio description
}
}
PlanetKit.makeCall(param, makeCallListener)
그룹 통화
val param = PlanetKitConferenceParam.Builder()
...
.enableAudioDescription( true )
.setAudioDescriptionInterval( userIntervalDependingOnUX )
.build()
private val conferenceListener = object: ConferenceListener {
...
override fun onMyAudioDescriptionUpdated(audioDescription: PlanetKitAudioDescription) {
// reflect update of the local user's audio description
}
override fun onPeersAudioDescriptionUpdated(peersAudioDescription: PlanetKitAudioDescriptions) {
// reflect peers audio description updated
}
}
PlanetKit.joinConference(param, conferenceListener)
Breaking change PlanetKitDisconnectReason 마이그레이션
- 1대1 통화 및 그룹 통화 종료에 대한 더 많은 정보를 추가했습니다.
MAX_CALL_TIME_EXCEEDED는 허용된 통화 시간을 초과했을 때 반환됩니다.SERVICE_TOO_MANY_REQUESTS는 짧은 기간 내에 허용된 통화 수를 초과하면 반환됩니다.- 시스템 종료(전원 끄기)가 발생하면 PlanetKit은 이를 내부적으로 감지하고
PlanetKitDisconnectReason.APP_DESTROY로 통화를 종료합니다. - 최대 전송 단위(MTU) 초과로 인한 통화 실패에 해당하는 통화 종료 이유를 추가했습니다.
- Planet Cloud 서버가 앱 서버 데이터를 앱 서버에 전달하지 못하는 경우에 대한 통화 종료 이유를 추가했습니다.
- 관련 API가 변경되었습니다.
API 변경
삭제
PlanetKitDisconnectReasonenum 1-to-1 callGroup callLOCAL_MIC_NO_SRCREMOTE_MIC_NO_SRCLOCAL_INTERNAL_ERRORREMOTE_INTERNAL_ERRORLOCAL_USER_ERRORREMOTE_USER_ERRORLOCAL_INTERNAL_KIT_ERRORREMOTE_INTERNAL_KIT_ERRORBAD_NETWORK_IN_CONFERENCEUNAVAILABLE_NETWORK_IN_CALLSERVICE_APIKEY_ERROR
추가
PlanetKitDisconnectReasonenum 1-to-1 callGroup callINTERNAL_ERRORUSER_ERRORINTERNAL_KIT_ERRORAUDIO_TX_NO_SRCUNAVAILABLE_NETWORKAPP_DESTROYSYSTEM_SLEEPSYSTEM_LOGOFFSERVICE_ACCESS_TOKEN_ERRORMTU_EXCEEDEDAPP_SERVER_DATA_ERRORMAX_CALL_TIME_EXCEEDEDSERVICE_TOO_MANY_REQUESTSDESKTOP_SCREEN_LOCKED
PlanetKitDisconnectSourceenum 1-to-1 callGroup callUNDEFINEDCALLEECALLERPARTICIPANTCLOUD_SERVERAPP_SERVER
PlanetKitDisconnectedParamdata class 1-to-1 callGroup callval reason: PlanetKitDisconnectReasonval source: PlanetKitDisconnectSourceval byRemote: Booleanval userCode: String?
변경
-
ConferenceListenerinterface Group call이전 버전 PlanetKit 5.5 fun onLeft(conference: PlanetKitConference, reason: PlanetKitDisconnectReason, userRelCode: String?)fun onDisconnected(conference: PlanetKitConference, param: PlanetKitDisconnectedParam) -
CallListenerinterface 1-to-1 call이전 버전 PlanetKit 5.5 fun onDisconnected(call: PlanetKitCall, reason: PlanetKitDisconnectReason, userCode: String?)fun onDisconnected(call: PlanetKitCall, param: PlanetKitDisconnectedParam) -
AcceptCallListenerinterface 1-to-1 call이전 버전 PlanetKit 5.5 fun onDisconnected( call:PlanetKitCall, reason:PlanetKitDisconnectReason, userCode:String )fun onDisconnected( call:PlanetKitCall, param:PlanetKitDisconnectedParam ) -
MakeCallListenerinterface 1-to-1 call이전 버전 PlanetKit 5.5 fun onDisconnected( call:PlanetKitCall, reason:PlanetKitDisconnectReason, userCode:String )fun onDisconnected( call:PlanetKitCall, param:PlanetKitDisconnectedParam ) -
VerifyListenerinterface 1-to-1 call이전 버전 PlanetKit 5.5 override fun onDisconnected(call: PlanetKitCall, reason: PlanetKitDisconnectReason, userCode: String?)fun onDisconnected(call: PlanetKitCall, param: PlanetKitDisconnectedParam)
Breaking change 카메라 미러 모드 관련 변경 사항 적용
- 이전 버전에서는 카메라 모듈에서 미러 모드를 설정할 수 있었으나, 카메라 원본 이미지가 변경될 수 있다는 오해를 방지하기 위해 이를 삭제했습니다.
- 대신 PlanetKit의 비디오 뷰에 이 기능이 통합되었습니다.
API 변경
변경
-
DefaultCameraVideoSourceclass 1-to-1 callGroup call이전 버전 PlanetKit 5.5 class DefaultCameraVideoSourceinterface PlanetKitCameraManager
추가
PlanetKitVideoViewclass 1-to-1 callGroup callvar mirroredType: PlanetKitMirroredType
PlanetKitPeerViewclass Group callvar mirroredType: PlanetKitMirroredType
PlanetKitPeerScreenShareViewclass Group callvar mirroredType: PlanetKitMirroredType
PlanetKitMyViewclass 1-to-1 callGroup callvar mirroredType: PlanetKitMirroredType
PlanetKitMirroredTypeenum class 1-to-1 callGroup call
삭제
DefaultCameraVideoSourceclass 1-to-1 callGroup callvar mirrorMode: Boolean
예제 코드
-
앱 설정에 따라 비디오 뷰를 연동해야 합니다.
-
다음 예시에서는 ViewModel의 사용법을 보여줍니다.
-
1단계: 애플리케이션 설정에 따라 ViewModel의 LiveData를 업데이트합니다.
// ViewModel
...
private val _myVideoMirroredType: MutableLiveData<PlanetKitMirroredType>
= MutableLiveData(yourSettingsValue)
val myVideoMirroredType: LiveData<PlanetKitMirroredType>
get() = _myVideoMirroredType
fun setMyVideoMirroredType(mirroredType: PlanetKitMirroredType) {
_myVideoMirroredType.value = mirroredType
yourSettingsValue = mirroredType
} -
2단계: LiveData에 따라 비디오 뷰의 미러 모드를 변경합니다.
// Fragment
...
observeNotNull(viewModel.myVideoMirroredType) {
binding.myDemoView?.mirroredType = it
}
Breaking change VideoSource를 커스텀 비디오 소스를 위한 PlanetKitCustomVideoSource로 교체
- 기존
VideoSource는 사용자가 필요에 따라 커스텀 비디오 소스를 1대1 통화 또는 그룹 통화 세션에 커스터마이즈하고 연동하기 어려웠습니다. 이를 개선하기 위해 커스터마이제이션에 사용할 수 있는PlanetKitCustomVideoSource를 도입했습니다.
API 변경
변경
-
PlanetKitCallinterface 1-to-1 call이전 버전 PlanetKit 5.5 fun setVideoSource(videoSource: VideoSource?)fun setVideoSource(videoSource: PlanetKitCustomVideoSource),fun clearVideoSource() -
PlanetKitConferenceinterface Group call이전 버전 PlanetKit 5.5 fun setVideoSource(videoSource: VideoSource?)fun setVideoSource(videoSource: PlanetKitCustomVideoSource),fun clearVideoSource()
추가
PlanetKitCustomVideoSourceabstract class 1-to-1 callGroup callvar maxFps: Int?= nullfun addMyVideoView(view: PlanetKitVideoView)fun removeMyVideoView(view: PlanetKitVideoView)protected fun postFrameData(frameData: FrameData): Booleanprotected fun postingFrameDataAvailable(): Booleanabstract fun onMaxFpsLimitUpdated(isLimitEnabled: Boolean, maxFps: Int)
PlanetKitCustomVideoSource.FrameDataabstract class 1-to-1 callGroup call
Breaking change ScreenCapturerVideoSource 개선
ScreenCapturerVideoSource는 이전에 여러 불필요한 메서드를 노출하여 사용자가 혼란을 느낄 수 있었기에 필수 메서드만 노출하도록 개선했습니다.ScreenCapturerVideoSource가 더 이상VideoSource를 상속하지 않으므로 이전에VideoSource에서 제공하던 메서드는 제거되었습니다.
API 변경
삭제
ScreenCapturerVideoSourceclass 1-to-1 callGroup callfun stop(reason: VideoSource.VideoSourceStopReason): Booleanfun useDeviceRotation(): Boolean
Breaking change SendDataSessionListener와 ReceiveDataSessionListener의 인터페이스 변경
SendDataSessionListener를OutboundDataSessionListener로 이름을 변경했습니다.ReceiveDataSessionListener를InboundDataSessionListener로 이름을 변경했습니다.- 데이터 세션에 대한 실패 정보를 개선했습니다.
- 데이터 세션의 종료를 알리기 위한
onClosed이벤트가OutboundDataSessionListener및InboundDataSessionListener에 추가되었습니다. - 관련 API가 변경되었습니다.
API 변경
변경
-
SendDataSessionListenerinterface 1-to-1 callGroup call이전 버전 PlanetKit 5.5 interface SendDataSessionListenerinterface OutboundDataSessionListenerfun onError( exception:PlanetKitException )fun onError( errReason:PlanetKitDataSessionFailReason ) -
ReceiveDataSessionListenerinterface 1-to-1 callGroup call이전 버전 PlanetKit 5.5 interface ReceiveDataSessionListenerinterface InboundDataSessionListenerfun onError( exception:PlanetKitException )fun onError( errReason:PlanetKitDataSessionFailReason )
추가
PlanetKitDataSessionFailReasonenum 1-to-1 callGroup callNONEINTERNALNOT_INCOMINGALREADY_EXISTINVALID_IDINVALID_TYPE
PlanetKitDataSessionClosedReasonenum class 1-to-1 callGroup callOutboundDataSessionListenerinterface 1-to-1 callGroup callvoid onClosed(@NonNull PlanetKitOutboundDataSession dataSession, @NonNull PlanetKitDataSessionClosedReason closedReason)
InboundDataSessionListenerinterface 1-to-1 callGroup callvoid onClosed(@NonNull PlanetKitInboundDataSession dataSession, @NonNull PlanetKitDataSessionClosedReason closedReason)
삭제
SendDataSessionListenerinterface 1-to-1 callGroup callvoid onUnsupportedDataSession(@NonNull PlanetKitSendDataSession dataSession)
PlanetKitErrorenum 1-to-1 callGroup callSESSION_FAIL_REASON_ALREADY_EXISTSESSION_FAIL_REASON_INVALID_SESSION_TYPESESSION_FAIL_REASON_FAILED_TO_MAKE_DATA_SESSION
예제 코드
-
새로 추가된
onClosed는 다음과 같이 구현할 수 있습니다. -
SESSION_END라는 이유를 갖는onClosed이벤트는 1대1 통화나 그룹 통화가 종료되거나 사용자가 서브그룹에서 탈퇴할 때 발생합니다.class ExampleOutboundDataSessionListener : OutboundDataSessionListener {
override fun onClosed(dataSession: PlanetKitOutboundDataSession, closedReason: PlanetKitDataSessionClosedReason) {
when (closedReason) {
PlanetKitDataSessionClosedReason.SESSION_END -> println("Session has ended.")
PlanetKitDataSessionClosedReason.INTERNAL -> println("An unexpected internal error occurred.")
PlanetKitDataSessionClosedReason.UNSUPPORTED -> println("Data session ID is unsupported by the peer.")
}
}
// Implement other interface methods as needed
}
class ExampleInboundDataSessionListener : InboundDataSessionListener {
override fun onClosed(dataSession: PlanetKitInboundDataSession, closedReason: PlanetKitDataSessionClosedReason) {
when (closedReason) {
PlanetKitDataSessionClosedReason.SESSION_END -> println("Session has ended.")
PlanetKitDataSessionClosedReason.INTERNAL -> println("An unexpected internal error occurred.")
PlanetKitDataSessionClosedReason.UNSUPPORTED -> println("Data session ID is unsupported by the peer.")
}
}
// Implement other interface methods as needed
}
Breaking change stid를 appServerData로 이름 변경
- 이것은
stid의 동작과 일치하는 더 명확한 이름인appServerData로 변경되었습니다. - 앱 서버 데이터 크기의 최댓값이 256바이트에서 4096바이트로 변경되었습니다.
- 관련 API가 변경되었습니다.
API 변경
변경
-
PlanetKitCallParamclass 1-to-1 call이전 버전 PlanetKit 5.5 val stid: Stringval appServerData: String -
PlanetKitCallParam.Builderclass 1-to-1 call이전 버전 PlanetKit 5.5 fun stid(stid: String)fun appServerData(appServerData: String) -
PlanetKitConferenceParamclass 1-to-1 call이전 버전 PlanetKit 5.5 val stid: Stringval appServerData: String -
PlanetKitConferenceParam.Builderclass Group call이전 버전 PlanetKit 5.5 fun stid(stid: String)fun appServerData(appServerData: String)
Breaking change 불필요한 API 제거
isHighPriorityAudio와setAudioHighPrioritySend가 제거되었습니다.- 관련 API가 제거되었습니다.
API 변경
삭제
PlanetKitConferenceinterface Group callval isHighPriorityAudio: Booleanfun setAudioHighPrioritySend( isHighPriority: Boolean, userData: Any? = null, callback: PlanetKitRequestCallback? = null ): Boolean
Breaking change PlanetKitIntent 제거
PlanetKitIntent는localBroadCast라이브러리에 의존하여 구현되었으나, 해당 라이브러리는 더 이상 사용되지 않습니다. 애플리케이션은CallListener와ConferenceListener의 구현을 사용하여 동일한 기능을 구현할 수 있습니다. 데모 앱은 동일한 기능을 구현하기 위해 다른 오픈 소스(org.greenrobot.eventbus)를 적용하여 개발되었습니다.
API 변경
삭제
PlanetKitIntentclass 1-to-1 call
예제 코드
1대1 통화 : EventBus를 이용한 마이그레이션
-
앱의
build.gradle에 외부 라이브러리 종속 항목 추가implementation 'org.greenrobot:eventbus:3.3.1' -
자신만의 메시지 클래스 만들기
class PlanetDemoMessageEventDisconnected internal constructor(
session: PlanetKitSession,
val reason: PlanetKitDisconnectReason,
val userCode: String?
): PlanetDemoMessageEvent(session, Type.DISCONNECTED) -
이벤트 메시지 보내기
private val verifyCallListener = object : VerifyCallListener {
override fun onDisconnected(call: PlanetKitCall, reason: PlanetKitDisconnectReason, userCode: String?) {
...
EventBus.getDefault().post(PlanetDemoMessageEventDisconnected(call, reason, userCode))
}
} -
다른 모듈(예:
NotificationService)에서 이벤트 수신// 1. Prepare PlanetKitMessageEvent Receiver
@Subscribe(threadMode = ThreadMode.MAIN_ORDERED)
fun onMessageEvent(event: PlanetDemoMessageEvent) {
if(event is PlanetDemoMessageEventDisconnected)
{
onClearRequested()
}
}
// 2. Register PlanetKitMessageEvent
override fun onCreate() {
super.onCreate()
EventBus.getDefault().register(this)
}
// 3. Unregister PlanetKitMessageEvent
override fun onDestroy() {
EventBus.getDefault().unregister(this);
super.onDestroy()
}
Spec change 데이터 세션 스트림 ID 범위 변경
- 데이터 세션 스트림 ID 범위 사양이 기존 100~1000에서 100~999로 변경되었습니다.
Spec change 표시 이름에 제한 추가
PlanetKitConferenceParam의myDisplayName속성은 이제 null 종료 문자를 포함하여 128바이트로 제한됩니다.- 문자열에서 최대 크기를 초과하는 뒷 부분은 버려집니다.
Enhancement PlanetKitPeerView 추가
관련된 예제 코드를 참고하세요.
Enhancement PlanetKitPeerControl 추가
관련된 릴리스 노트를 참고하세요.
Enhancement PlanetKitMyView 추가
관련된 예제 코드를 참고하세요.
Enhancement PlanetKitMyMediaStatus 추가
관련된 릴리스 노트를 참고하세요.
Enhancement PlanetKitPeerScreenShareView 추가
관련된 예제 코드를 참고하세요.
Enhancement addPeerVideoView()/removePeerVideoView() 개선
- 피어에 추가하는 비디오 뷰는 다른 피어와 공유되어서는 안 됩니다. 새로운 피어에 비디오 화면을 추가할 때, 해당 화면이 이미 다른 피어에 추가되어 있었다면 이전 피어에서 제거되고 새로운 피어에 추가됩니다. 또한
removePeerVideoView에 피어 파라미터가 없는 오버로드된 함수가 추가되었습니다.
API 변경
addPeerVideoView() 개선
- 뷰는 마지막 피어에 대해서만 추가됩니다. 이전 피어로부터 자동으로 제거됩니다.
removePeerVideoView(view:PlanetKitVideoView) 추가
- 뷰는 어떤 피어에 추가되었는지와 관계없이 제거될 수 있습니다.
예제 코드
동일한 비디오 뷰 인스턴스에 대해 피어를 변경하는 기존 방식
addPeerVideoView(peerA, videoView)
... // another task
removePeerVideoView(peerA, videoView) // You must remember which peer the view was added to
... // another task
addPeerVideoView(peerB, videoView)
removePeerVideoView(view:PlanetKitVideoView)를 사용한 새로운 방식
addPeerVideoView(peerA, videoView)
... //another task
removePeerVideoView(videoView) // There's no more need to remember the peer
... //another task
addPeerVideoView(peerB, videoView)
피어 변경을 위한 새로운 방식
addPeerVideoView(peerA, videoView)
... //another task
addPeerVideoView(peerB, videoView) // It can be used without removePeerVideoView
API 변경
변경
-
PlanetKitConferenceinterface Group call이전 버전 PlanetKit 5.5 fun removePeerVideoView(peer: PlanetKitUser, view: PlanetKitVideoView)fun removePeerVideoView(view: PlanetKitVideoView)
Enhancement isPeerAudioMuted 추가
- 1대1 통화에서 상대방의 오디오 음 소거 상태 확인자가 추가되었습니다.
API 변경
추가
PlanetKitCallinterface 1-to-1 callval isPeerAudioMuted:Boolean
예제 코드
... // somewhere you need to check the peer's mute state
if( call.isPeerAudioMuted )
{
// peer is muted
}
else
{
// peer is not muted
}
Enhancement 통화 일시 중지로 인한 화면 공유 종료에 대한 이벤트 추가
- 화면 공유 중 통화를 일시 중지하면 LINE Planet이 화면 공유 전송을 중단합니다. 이 API는 이러한 상황을 위한 이벤트입니다.
- 이 이벤트를 수신하면 필요한 경우 UI 표시기를 업데이트해야 합니다.
API 변경
추가
CallListenerinterface 1-to-1 callfun onMyScreenShareStoppedByHold(call: PlanetKitCall)
ConferenceListenerinterface Group callfun onMyScreenShareStoppedByHold(conference: PlanetKitConference)
Enhancement 비디오 프레임 처리 성능을 최적화하기 위한 API 추가
- 애플리케이션에서 실제로 전송되는 것보다 더 많은 비디오 프레임을 생성할 수 있습니다. 이처럼 추가로 생성된 프레임은 전송을 건너뛰더라도 처리되므로 처리 오버헤드가 발생합니다. 직접
VideoSource를 구현하는 경우 추가된 API를 활용하여 성능을 최적화하세요.
API 변경
추가
VideoSourceabstract class 1-to-1 callGroup callprotected fun postingFrameDataAvailable(nanoSecondsTimestamp: Long): Booleanprotected val isMaxFpsLimitEnabled: Booleanprotected val maxFpsLimit: Intprotected abstract fun onMaxFpsLimitUpdated(isLimitEnabled: Boolean, maxFps: Int)
예제 코드
예시 1: postingFrameDataAvailable()에 따라 프레임 처리 건너뛰기
fun yourFrameCallbackHandler( yourFrame, ... )
{
// when the frame has timestamp
val curTimestamp = yourFrame.timestamp // to nanoseconds
// when the data doesn't have timestamp
val curTimestamp = this.sourceTimestamp // property from VideoSource base class
if ( this.postingFrameDataAvailable( curTimestamp ) )
{
val frameData = YourConcreteFrameData( yourFrame, curTimestamp, ... ) // interface from VideoSource.FrameData base class
this.postFrameData( frameData )
// handle clean-up
...
}
else
{
// handle clean-up
...
}
}
예시 2: 사용자 정의 프레임 틱 생성기를 구현하는 경우 최대 FPS를 사용하여 프레임 지속 시간 업데이트하기
override fun onMaxFpsLimitUpdated( isLimitEnabled: Boolean, maxFps: Int )
{
if ( isLimitEnabled )
{
// update tick duration according to maxFps
this.fps = maxFps
frameDuration = (1000 / maxFps ).toLong()
yourFrameTick.updateInterval( frameDuration )
}
else
{
// You may want to set it back to normal FPS
this.fps = defaultFps
yourFrameTick.updateInterval( defaultDuration )
// or you could stop frame
yourFrameTick.stop()
}
}
Enhancement 자동 난독화 적용
- PlanetKit 5.2부터는 PlanetKit을 사용하기 위해 Android 애플리케이션의
proguard.rules파일을 변경할 필요가 없습니다. - 런타임 문제를 방지하기 위해
proguard.rules에 규칙을 지정했다면, PlanetKit 관련 규칙을 모두 제거할 수 있습니다.
Enhancement 화면 공유 시 비디오 공유 모드를 위한 API 제공
- 비디오 공유 모드는 비디오 클립 공유를 위해 화면 공유를 최적화합니다.
- 화면 공유를 시작하기 전이나 화면 공유 중에 비디오 공유 모드를 활성화할 수 있습니다.
- 비디오 공유 모드를 활성화하면 리소스 사용량이 증가할 수 있습니다.
API 변경
변경
-
ConferenceListenerinterface Group call이전 버전 PlanetKit 5.5 fun onJoined(conference: PlanetKitConference)fun onConnected(conference: PlanetKitConference, isVideoHwCodecEnabled: Boolean, isVideoShareModeSupported: Boolean)
추가
PlanetKitCallinterface 1-to-1 callfun setMyScreenShareVideoShareMode(videoShareMode: Boolean): Booleanfun isMyScreenShareVideoShareModeEnabled(): Boolean
PlanetKitCallConnectedParamdata class 1-to-1 callval isVideoShareModeSupported: Boolean
PlanetKitConferenceinterface Group callfun setMyScreenShareVideoShareMode(videoShareMode: Boolean): Booleanfun isMyScreenShareVideoShareModeEnabled(): Boolean
Enhancement 클라우드 레코딩 지원
- 클라우드에 1대1 통화를 녹음하는 기능이 추가되었습니다.
- 이 기능을 활성화하려면 먼저 LINE Planet 팀에 문의하세요.
- 자세한 내용은 클라우드 통화 레코딩을 참조하세요.
API 변경
변경
-
PlanetKitCallinterface 1-to-1 call이전 버전 PlanetKit 5.5 fun acceptCall(mediaType:PlanetKitMediaType, listener:AcceptCallListener)fun acceptCall(listener: AcceptCallListener, initialMyVideoState: PlanetKitInitialMyVideoState = PlanetKitInitialMyVideoState.RESUME, useResponderPreparation: Boolean = false, recordOnCloud: Boolean = false)fun acceptCall(mediaType:PlanetKitMediaType, listener:AcceptCallListener, callInitData:PlanetKitCallInitData = PlanetKitCallInitData())fun acceptCall(listener: AcceptCallListener, callStartMessage: PlanetKitCallStartMessage, initialMyVideoState: PlanetKitInitialMyVideoState = PlanetKitInitialMyVideoState.RESUME, useResponderPreparation: Boolean = false, recordOnCloud: Boolean = false)
추가
PlanetKitRecordOnCloudDeactivateReasonenum class 1-to-1 callCallListenerinterface 1-to-1 callfun onRecordOnCloudUpdated(call: PlanetKitCall, activated: Boolean, reason: PlanetKitRecordOnCloudDeactivateReason)
PlanetKitCallinterface 1-to-1 callfun isRecordOnCloudActivated(): Boolean
PlanetKitMakeCallParamdata class 1-to-1 callval recordOnCloud: Boolean
PlanetKitMakeCallParam.Builderclass 1-to-1 callfun enableRecordOnCloud(value: Boolean)
Enhancement 사용 가능한 오디오 경로에 대한 실시간 업데이트 수신용 콜백 추가
- 이 API를 사용하면 오디오 장치의 연결 상태가 변경될 때 실시간으로 애플리케이션 UI를 업데이트할 수 있습니다.
API 변경
추가
PlanetKitConferenceinterface Group callfun setOnAudioRouteAvailableListChangeListener(listener: OnAudioRouteAvailableListChangeListener?)
PlanetKitCallinterface 1-to-1 callfun setOnAudioRouteAvailableListChangeListener(listener: OnAudioRouteAvailableListChangeListener?)
OnAudioRouteAvailableListChangeListenerinterface 1-to-1 callGroup call
예제 코드
fun joinConference(param: PlanetKitConferenceParam) {
val result = PlanetKit.joinConference(param, conferenceListener)
...
val conference = result.conference
...
conference?.setOnAudioRouteChangeListener { audioRoute ->
...
}
conference?.setOnAudioRouteAvailableListChangeListener { availableList ->
// Update UI status if needed
}
}
Enhancement 통화 상태에 관계없이 통화 종료음을 재생하도록 하는 설정 추가
- PlanetKit 5.4 이전 버전과의 호환성을 보장하기 위해 통화 상태와 관계없이 종료음을 재생하는 설정이 추가되었습니다.
API 변경
추가
PlanetKitMakeCallParamclass 1-to-1 callval playEndToneRegardlessOfCallState: Boolean
PlanetKitMakeCallParam.Builderclass 1-to-1 callfun enablePlayEndToneRegardlessOfCallState(value: Boolean)
PlanetKitVerifyCallParamclass 1-to-1 callval playEndToneRegardlessOfCallState: Boolean
PlanetKitVerifyCallParam.Builderclass Group callfun enablePlayEndToneRegardlessOfCallState(value: Boolean)
PlanetKitConferenceParamclass Group callval playEndToneRegardlessOfConferenceState: Boolean
PlanetKitConferenceParam.Builderclass Group callfun enablePlayEndToneRegardlessOfConferenceState(value: Boolean)
API 변경 목록
변경
-
DefaultCameraVideoSourceclass 1-to-1 callGroup call이전 버전 PlanetKit 5.5 class DefaultCameraVideoSourceinterface PlanetKitCameraManager -
PlanetKitVerifyCallParamclass 1-to-1 call이전 버전 PlanetKit 5.5 val messageData: Stringval cCParam: PlanetKitCCParamval myVideoSendCapability: PlanetKitVideoCapability?val myVideoSendCapability: PlanetKitVideoCapabilityval myVideoReceiveCapability: PlanetKitVideoCapability?val myVideoReceiveCapability: PlanetKitVideoCapability -
PlanetKitMakeCallParamclass 1-to-1 call이전 버전 PlanetKit 5.5 val myVideoSendCapability: PlanetKitVideoCapability?val myVideoSendCapability: PlanetKitVideoCapabilityval myVideoReceiveCapability: PlanetKitVideoCapability?val myVideoReceiveCapability: PlanetKitVideoCapability -
PlanetKitobject 1-to-1 callGroup call이전 버전 PlanetKit 5.5 fun getConference(sid:Int): PlanetKitConference?fun getConference(): PlanetKitConference?val userAgent: StringOnInitializeCompleteListener.onComplete(isSuccessful, isVideoHwCodecSupport, userAgent)val isVideoHwCodecSupport: BooleanOnInitializeCompleteListener.onComplete(isSuccessful, isVideoHwCodecSupport, userAgent)fun initialize(config: PlanetKitConfiguration)fun initialize(config: PlanetKitConfiguration, listener: OnInitializeCompleteListener)fun makeCall(param: PlanetKitCallParam, makeCallListener: MakeCallListener): PlanetKitCallResultfun makeCall(param: PlanetKitMakeCallParam, makeCallListener: MakeCallListener): PlanetKitCallResultfun getDefaultCameraVideoSource(): DefaultCameraVideoSourcefun getCameraManager(): PlanetKitCameraManager -
PlanetKitLogLevelenum class 1-to-1 callGroup call이전 버전 PlanetKit 5.5 VERBOSEDETAILEDDEBUGDETAILEDINFOSIMPLEWARNSIMPLEERRORSIMPLECRITICALSIMPLENONESILENT -
PlanetKitVideoPauseReasonenum class 1-to-1 callGroup call이전 버전 PlanetKit 5.5 UNKNOWNUNDEFINED -
AudioSinkabstract class 1-to-1 callGroup call이전 버전 PlanetKit 5.5 protected fun receiveSpeakerData(sampleRate: Int, format: PlanetKitAudioSampleFormat, sampleCount: Int): AudioFrameprotected fun getFrameData(sampleRate: Int, format: PlanetKitAudioSampleFormat, sampleCount: Int): AudioFrameprotected fun putAECReferenceData(data: AudioFrame): Booleanprotected fun putUserAcousticEchoCancellerReference(data: AudioFrame): Boolean -
PlanetKitCallinterface 1-to-1 call이전 버전 PlanetKit 5.5 fun acceptCall(mediaType:PlanetKitMediaType, listener:AcceptCallListener)fun acceptCall(listener: AcceptCallListener, initialMyVideoState: PlanetKitInitialMyVideoState = PlanetKitInitialMyVideoState.RESUME, useResponderPreparation: Boolean = false, recordOnCloud: Boolean = false)fun acceptCall(mediaType:PlanetKitMediaType, listener:AcceptCallListener, callInitData:PlanetKitCallInitData = PlanetKitCallInitData())fun acceptCall(listener: AcceptCallListener, callStartMessage: PlanetKitCallStartMessage, initialMyVideoState: PlanetKitInitialMyVideoState = PlanetKitInitialMyVideoState.RESUME, useResponderPreparation: Boolean = false, recordOnCloud: Boolean = false)fun hold(pauseRecv:Boolean, reason:String? = null, callback:PlanetKitRequestCallback? = null): Booleanfun hold(reason: String? = null, callback: PlanetKitRequestCallback? = null): Booleanfun hold(pauseRecv:Boolean, callback: PlanetKitRequestCallback? = null): Booleanfun hold(reason:String? = null, callback: PlanetKitRequestCallback? = null): Booleanfun hold(pauseRecv:Boolean, reason:String? = null): Booleanfun hold(reason:String? = null, callback: PlanetKitRequestCallback? = null): Booleanfun hold(pauseRecv:Boolean): Booleanfun hold(reason:String? = null, callback: PlanetKitRequestCallback? = null): Booleanfun unhold(): Booleanfun unhold(userData:Any? = null, callback: PlanetKitRequestCallback? = null): Booleanval isDataSessionSupported: BooleanCallListener.onConnected
ConferenceListener.onConnectedfun endCallWithNormalUserCode(userCode: String)fun endCall(userReleasePhrase: String)fun endCallWithErrorUserCode(userCode: String)fun endCallWithError(userReleasePhrase: String)fun unHold(userData:Any? = null, callback: PlanetKitRequestCallback? = null): Booleanfun unhold(userData:Any? = null, callback: PlanetKitRequestCallback? = null): Booleanfun enableVideo(userData: Any? = null, callback: PlanetKitRequestCallback? = null): Booleanfun enableVideo(initialMyVideoState: PlanetKitInitialMyVideoState = PlanetKitInitialMyVideoState.RESUME, userData: Any? = null, callback: PlanetKitRequestCallback? = null): Booleanfun setVideoSource(videoSource: VideoSource?)fun setVideoSource(videoSource: PlanetKitCustomVideoSource),fun clearVideoSource() -
PlanetKitConferencePubSubgroupUpdateParamdata class Group call이전 버전 PlanetKit 5.5 data class UpdatePeerDatadata class PlanetKitConferenceSubgroupUpdatedPeerdata class PlanetKitConferencePubSubgroupUpdateParamdata class PlanetKitConferencePublicSubgroupUpdateParam -
PlanetKitSubgroupinterface Group call이전 버전 PlanetKit 5.5 fun getPeerVolume(user:PlanetKitUser):Intfun getPeerVolumeLevelSetting(user: PlanetKitUser): Intval peerUpdateType: PlanetKitSubgroupPeerUpdateType?val attribute: PlanetKitSubgroupAttribute?val totalPeerCnt: Int?val totalPeersCount: Int?val isEnableVideoUpdate: Boolean?val attribute: PlanetKitSubgroupAttribute?val isUsingDataSession: Boolean?val attribute: PlanetKitSubgroupAttribute?fun unsupportedReceiveDataSession(streamId: Int): Boolean?fun unsupportInboundDataSession(streamId: Int): Boolean?fun makeSendDataSession(@IntRange(from = 100, to = 1000) streamId: Int, type: PlanetKitDataSessionType, listener: SendDataSessionListener)fun makeOutboundDataSession(@IntRange(from = 100, to = 1000) streamId: Int, type: PlanetKitDataSessionType, listener: OutboundDataSessionListener)fun makeReceiveDataSession(@IntRange(from = 100, to = 1000) streamId: Int, listener: ReceiveDataSessionListener)fun makeInboundDataSession(@IntRange(from = 100, to = 1000) streamId: Int, listener: InboundDataSessionListener)fun getSendDataSession(streamId: Int): PlanetKitSendDataSession?fun getOutboundDataSession(streamId: Int): PlanetKitOutboundDataSession?fun getReceiveDataSession(streamId: Int): PlanetKitReceiveDataSession?fun getInboundDataSession(streamId: Int): PlanetKitInboundDataSession?val isAutoVolumeFocused: Boolean?val isPeersAudioAutoVolumeControlFocused: Boolean? -
PlanetKitSubgroupManagerinterface Group call이전 버전 PlanetKit 5.5 boolean setPeerVolume(@NonNull PlanetKitUser peer, @Nullable String subgroupName, @IntRange(from = 0, to = 110) int talkerVolume, @Nullable Object userData, @Nullable PlanetKitRequestCallback callback)boolean setPeerVolumeLevelSetting(@NonNull PlanetKitUser peer, @Nullable String subgroupName, @IntRange(from = 0, to = 110) int talkerVolume, @Nullable Object userData, @Nullable PlanetKitRequestCallback callback)boolean setPeerVolume(@NonNull PlanetKitUser peer, int talkerVolume, @Nullable Object userData, @Nullable PlanetKitRequestCallback callback)boolean setPeerVolumeLevelSetting(@NonNull PlanetKitUser peer, int talkerVolume, @Nullable Object userData, @Nullable PlanetKitRequestCallback callback)boolean changeSendAudio(@Nullable String subgroupName, @Nullable Object userData, @Nullable PlanetKitRequestCallback callback);boolean changeMyAudioDestination(@NotNull String subgroupName, @Nullable Object userData, @Nullable PlanetKitRequestCallback callback)
boolean changeMyAudioDestinationToMainRoom(@Nullable Object userData, @Nullable PlanetKitRequestCallback callback)boolean changeSendVideo(@Nullable String subgroupName, @Nullable Object userData, @Nullable PlanetKitRequestCallback callback);boolean changeMyVideoDestination(@NotNull String subgroupName, @Nullable Object userData, @Nullable PlanetKitRequestCallback callback)
boolean changeMyVideoDestinationToMainRoom(@Nullable Object userData, @Nullable PlanetKitRequestCallback callback)boolean tagMainRoomAudioSend(@Nullable String subgroupName, @Nullable Object userData, @Nullable PlanetKitRequestCallback callback);boolean setTagMyAudioOfMainRoom(@NonNull String subgroupName, @Nullable Object userData, @Nullable PlanetKitRequestCallback callback);
boolean clearTagMyAudioOfMainRoom(@Nullable Object userData, @Nullable PlanetKitRequestCallback callback)boolean silenceAudio(@Nullable String subgroupName, boolean silence, @Nullable Object userData, @Nullable PlanetKitRequestCallback callback);PlanetKitSubgroup::fun silencePeersAudio(silence: Boolean, userData: Any?, callback: PlanetKitRequestCallback?): Booleanboolean disableAutoVolumeControl(@Nullable Object userData, @Nullable PlanetKitRequestCallback callback);boolean clearPeersAudioAutoVolumeControl(@Nullable Object userData, @Nullable PlanetKitRequestCallback callback)boolean enableAutoVolumeControl(@NonNull List<String> focusSubgroup, @Nullable Object userData, @Nullable PlanetKitRequestCallback callback);boolean setPeersAudioAutoVolumeControl(@NonNull List<String> focusSubgroup, @Nullable Object userData, @Nullable PlanetKitRequestCallback callback) -
PlanetKitReceiveDataSessionclass 1-to-1 callGroup call이전 버전 PlanetKit 5.5 class PlanetKitReceiveDataSessionclass PlanetKitInboundDataSession -
PlanetKitSendDataSessionclass 1-to-1 callGroup call이전 버전 PlanetKit 5.5 class PlanetKitSendDataSessionclass PlanetKitOutboundDataSession -
PlanetKitPeerView.PeerViewListenerinterface Group call이전 버전 PlanetKit 5.5 fun onMicUnMuted(peer: PlanetKitConferencePeer)fun onMicUnmuted(peer: PlanetKitConferencePeer)fun onHold(peer: PlanetKitConferencePeer, reason: String)fun onHold(peer: PlanetKitConferencePeer, reason: String?)fun onUnHold(peer: PlanetKitConferencePeer)fun onUnhold(peer: PlanetKitConferencePeer) -
ReceiveDataSessionListenerinterface 1-to-1 callGroup call이전 버전 PlanetKit 5.5 interface ReceiveDataSessionListenerinterface InboundDataSessionListenerfun onError( exception:PlanetKitException )fun onError( errReason:PlanetKitDataSessionFailReason ) -
PlanetKitConferencePeerclass Group call이전 버전 PlanetKit 5.5 val videoStatus: PlanetKitVideoStatusfun getVideoStatus(subgroupName: String?): VideoStatusResultval audioVolume: Int?fun getAudioVolumeLevelSetting(subgroupName: String?): AudioVolumeResultval screenSharingSubgroupName: String?val currentScreenShareSubgroupName: String?val isDataSessionSupport: Booleanval isDataSessionSupported: Boolean -
ConferenceListenerinterface Group call이전 버전 PlanetKit 5.5 fun onLeft(conference: PlanetKitConference, reason: PlanetKitDisconnectReason, userRelCode: String?)fun onDisconnected(conference: PlanetKitConference, param: PlanetKitDisconnectedParam)fun onPeersHeld(conference:PlanetKitConference, peerHoldReceivedList: List<PlanetKitConferencePeerHoldReceivedParam>fun onPeersOnHold(conference: PlanetKitConference, peerHoldReceivedList: List<PlanetKitConferencePeerHoldReceivedParam>)fun onPeersMicMuted(conference: PlanetKitConference, peers: List<PlanetKitConferencePeerInfo>)fun onPeersMicMuted(conference: PlanetKitConference, peers: List<PlanetKitConferencePeer>)fun onPeersMicUnMuted(conference: PlanetKitConference, peers: List<PlanetKitConferencePeerInfo>)fun onPeersMicUnmuted(conference: PlanetKitConference, peers: List<PlanetKitConferencePeer>)fun onPeerMyMuteRequested(conference: PlanetKitConference, peer: PlanetKitConferencePeerInfo, isMute:Boolean)fun onMuteMyAudioRequestedByPeer(conference: PlanetKitConference, peer: PlanetKitConferencePeer, isMute: Boolean)fun onScreenShareUpdated(peer: PlanetKitConferencePeerInfo, subgroupName: String?, screenSharingState: PlanetKitScreenSharingState)fun onScreenShareUpdated( peer: PlanetKitConferencePeer, subgroupName: String?, screenShareState: PlanetKitScreenShareState )fun onPeersSharedContentsUnset(conference: PlanetKitConference, peers:List<PlanetKitConferencePeerInfo>)fun onPeersSharedContentsUnset(conference: PlanetKitConference, peers: List<PlanetKitConferencePeer>)fun onPeerExclusivelySharedContentsSet(conference: PlanetKitConference, peer: PlanetKitConferencePeerInfo, data: ByteArray, elapsedTimeAfterSetMs: Long)fun onPeerExclusivelySharedContentsSet(conference: PlanetKitConference, peer: PlanetKitConferencePeer, data: ByteArray, elapsedTimeAfterSetMs: Long)fun onPeerExclusivelySharedContentsUnset(conference: PlanetKitConference, peer: PlanetKitConferencePeerInfo)fun onPeerExclusivelySharedContentsUnset(conference: PlanetKitConference, peer: PlanetKitConferencePeer)fun onJoined(conference: PlanetKitConference)fun onConnected(conference: PlanetKitConference, isVideoHwCodecEnabled: Boolean, isVideoShareModeSupported: Boolean)fun onSubgroupUpdated(param: PlanetKitConferencePubSubgroupUpdateParam)fun onSubgroupUpdated(param: PlanetKitConferencePublicSubgroupUpdateParam)fun onPeersUnHold(conference: PlanetKitConference, peers: List<PlanetKitConferencePeer>)fun onPeersUnhold(conference: PlanetKitConference, peers: List<PlanetKitConferencePeer>)fun onBadNetworkDetected(conference: PlanetKitConference, disconnectAfterSec: Int)fun onNetworkUnavailable(conference: PlanetKitConference, disconnectAfterSec: Int)fun onBadNetworkResolved(conference: PlanetKitConference)fun onNetworkReavailable(conference: PlanetKitConference) -
VerifyListenerinterface 1-to-1 call이전 버전 PlanetKit 5.5 fun onVerified(call: PlanetKitCall, callerInitData: PlanetKitCallInitData)fun onVerified(call: PlanetKitCall, peerStartMessage: PlanetKitCallStartMessage?, peerUseResponderPreparation: Boolean)override fun onDisconnected(call: PlanetKitCall, reason: PlanetKitDisconnectReason, userCode: String?)fun onDisconnected(call: PlanetKitCall, param: PlanetKitDisconnectedParam) -
MakeCallListenerinterface 1-to-1 call이전 버전 PlanetKit 5.5 fun onConnected( call:PlanetKitCall, calleeInitData: PlanetKitCallInitData )fun onConnected( call: PlanetKitCall, param: PlanetKitCallConnectedParam )fun onDisconnected( call:PlanetKitCall, reason:PlanetKitDisconnectReason, userCode:String )fun onDisconnected( call:PlanetKitCall, param:PlanetKitDisconnectedParam ) -
AcceptCallListenerinterface 1-to-1 call이전 버전 PlanetKit 5.5 fun onConnected( call:PlanetKitCall, calleeInitData: PlanetKitCallInitData )fun onConnected( call: PlanetKitCall, param: PlanetKitCallConnectedParam )fun onDisconnected( call:PlanetKitCall, reason:PlanetKitDisconnectReason, userCode:String )fun onDisconnected( call:PlanetKitCall, param:PlanetKitDisconnectedParam ) -
CallListenerinterface 1-to-1 call이전 버전 PlanetKit 5.5 fun onPeerHeld(call: PlanetKitCall, pausedRecv: Boolean, reason: String?)fun onPeerHold(call: PlanetKitCall, reason: String?)fun onPeerUnheld(call: PlanetKitCall)fun onPeerUnhold(call: PlanetKitCall)fun onVerified(call: PlanetKitCall, callerInitData: PlanetKitCallInitData)fun onVerified(call: PlanetKitCall, peerStartMessage: PlanetKitCallStartMessage?, peerUseResponderPreparation: Boolean)fun onConnected(call: PlanetKitCall, calleeInitData: PlanetKitCallInitData)fun onConnected(call: PlanetKitCall, param: PlanetKitCallConnectedParam)fun onDisconnected(call: PlanetKitCall, reason: PlanetKitDisconnectReason, userCode: String?)fun onDisconnected(call: PlanetKitCall, param: PlanetKitDisconnectedParam)fun onPeerVideoEnabled(call: PlanetKitCall)fun onVideoEnabledByPeer(call: PlanetKitCall)fun onPeerVideoDisabled(call: PlanetKitCall, reason: PlanetKitMediaDisableReason)fun onVideoDisabledByPeer(call: PlanetKitCall, reason: PlanetKitMediaDisableReason)fun onPeerMyMuteRequested(call: PlanetKitCall, isMute: Boolean)fun onMuteMyAudioRequestedByPeer(call: PlanetKitCall, isMute: Boolean)fun onPeerScreenSharingStarted(call: PlanetKitCall)fun onPeerScreenShareStarted(call: PlanetKitCall)fun onPeerScreenSharingStopped(call: PlanetKitCall, reason: Int)fun onPeerScreenShareStopped(call: PlanetKitCall, hasReason: Boolean, reason: Int)fun onPeerMicUnMuted(call: PlanetKitCall)fun onPeerMicUnmuted(call: PlanetKitCall) -
PlanetKitStatisticsclass 1-to-1 callGroup call이전 버전 PlanetKit 5.5 val screenSharingSend:ScreenSharingSend?val myScreenShare:MyScreenShare?val screenSharingRecvs: List<ScreenSharingRecv>val peersScreenShare: List<PeerScreenShare>data class ScreenSharingSenddata class MyScreenSharedata class ScreenSharingRecvdata class PeerScreenShareval audioSend: AudioSendval myAudio: MyAudioval audioRecv: AudioRecvval peerAudio: PeerAudioval videoSend:VideoSend?val myVideo:MyVideo?val videoRecvs: List<VideoRecv>val peersVideo: List<PeerVideo>data class AudioSenddata class MyAudiodata class AudioRecvdata class PeerAudiodata class VideoSenddata class MyVideodata class VideoRecvdata class PeerVideo -
PlanetKitScreenShareStateclass 1-to-1 callGroup call이전 버전 PlanetKit 5.5 class PlanetKitScreenSharingStateclass PlanetKitScreenShareState -
SendDataSessionListenerinterface 1-to-1 callGroup call이전 버전 PlanetKit 5.5 interface SendDataSessionListenerinterface OutboundDataSessionListenerfun onError( exception:PlanetKitException )fun onError( errReason:PlanetKitDataSessionFailReason ) -
PlanetKitConferenceParam.Builderclass Group call이전 버전 PlanetKit 5.5 fun stid(stid: String)fun appServerData(appServerData: String)fun preferredVideoReceiveHwCodec(isPrefer: Boolean)fun preferredPeerVideoHwCodec(isPrefer: Boolean) -
PlanetKitConferenceParamclass 1-to-1 call이전 버전 PlanetKit 5.5 val stid: Stringval appServerData: Stringval preferredVideoReceiveHwCodec: Booleanval preferredPeerVideoHwCodec: Booleanval myVideoSendCapability: PlanetKitVideoCapability?val myVideoSendCapability: PlanetKitVideoCapability -
PlanetKitCallParamclass 1-to-1 call이전 버전 PlanetKit 5.5 data class PlanetKitCallParamdata class PlanetKitMakeCallParamval stid: Stringval appServerData: Stringval callInitData: Stringval callStartMessage: PlanetKitCallStartMessage?val isResponderPrepare: Booleanval useResponderPreparation: Boolean -
PlanetKitCallParam.Builderclass 1-to-1 call이전 버전 PlanetKit 5.5 class PlanetKitCallParam.Builderclass PlanetKitMakeCallParam.Builderfun stid(stid: String)fun appServerData(appServerData: String)fun callInitData(callInitData: String)fun callStartMessage(callStartMessage: PlanetKitCallStartMessage)fun responderPrepare(isResponderPrepare: Boolean)fun responderPreparation(useResponderPreparation: Boolean) -
PlanetKitConfiguration.Builderclass 1-to-1 callGroup call이전 버전 PlanetKit 5.5 fun audioDefaultAttributes( audioDefaultAttributes: AudioDefaultAttributes )fun setAudioDefaultAttributes( audioDefaultAttributes: AudioDefaultAttributes )fun serverUrl( serverUrl: String )fun setServerUrl( serverUrl: String )fun logToFile( isEnabled: Boolean )fun enableLog( isEnabled: Boolean )fun logLevel( logLevel: PlanetKitLogLevel )fun setLogLevel( logLevel: PlanetKitLogLevel ) -
PlanetKitConferenceinterface Group call이전 버전 PlanetKit 5.5 fun removePeerVideoView(peer: PlanetKitUser, view: PlanetKitVideoView)fun removePeerVideoView(view: PlanetKitVideoView)fun setPeerVolume(peer: PlanetKitUser, @IntRange(from = 0, to = 110) talkerVolume: Int, userData:Any? = null, callback: PlanetKitRequestCallback? = null :BooleanPlanetKitSubgroupManager::boolean setPeerVolumeLevelSetting(@NonNull PlanetKitUser peer, @IntRange(from = 0, to = 110) int talkerVolume, @Nullable Object userData, @Nullable PlanetKitRequestCallback callback)fun leave()fun leaveConference()val maxPeerVideoReceiveCount : Intval peersVideoMaxCount : Intval maxPeerScreenShareReceiveCount : Intval peersScreenShareMaxCount : Intfun unHold(userData: Any? = null, callback: PlanetKitRequestCallback? = null): Booleanfun unhold(userData: Any? = null, callback: PlanetKitRequestCallback? = null): Booleanfun changeMyScreenShareGroup(toSubgroupName: String?, userData:Any? = null, callback: PlanetKitRequestCallback? = null): Booleanfun changeMyScreenShareDestination(toSubgroupName: String, userData:Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
fun changeMyScreenShareDestinationToMainRoom(userData:Any? = null, callback: PlanetKitRequestCallback? = null): Booleanfun enableVideo(userData: Any? = null, callback: PlanetKitRequestCallback? = null): Booleanfun enableVideo(initialMyVideoState: PlanetKitInitialMyVideoState = PlanetKitInitialMyVideoState.RESUME, userData: Any? = null, callback: PlanetKitRequestCallback? = null): Booleanfun setVideoSource(videoSource: VideoSource?)fun setVideoSource(videoSource: PlanetKitCustomVideoSource),fun clearVideoSource() -
PlanetKitSessioninterface 1-to-1 callGroup call이전 버전 PlanetKit 5.5 interface PlanetKitSessioninterface PlanetKitCall,interface PlanetKitConferencesid: IntinstanceId: Intval isMicMuted: Booleanval isMyAudioMuted: Booleanval isAllPeersAudioPlayoutSilenced: BooleanPlanetKitCall::val isPeerAudioSilenced: Boolean
PlanetKitConference::val isPeersAudioSilenced: Booleanval isSendVideoHwCodecEnabled: BooleanCallListener.onConnected
ConferenceListener.onConnectedfun setMicMute(isMute: Boolean, userData: Any? = null, callback: PlanetKitRequestCallback? = null): Booleanfun muteMyAudio(isMute: Boolean, userData: Any? = null, callback: PlanetKitRequestCallback? = null): Booleanfun startAECReferenceData(userData: Any? = null, callback: PlanetKitRequestCallback? = null): Booleanfun startUserAcousticEchoCancellerReference(userData: Any? = null, callback: PlanetKitRequestCallback? = null): Booleanfun stopAECReferenceData(userData: Any? = null, callback: PlanetKitRequestCallback? = null): Booleanfun stopUserAcousticEchoCancellerReference(userData: Any? = null, callback: PlanetKitRequestCallback? = null): Booleanfun requestPeerMute(isMute: Boolean, userData: Any? = null, callback: PlanetKitRequestCallback? = null): BooleanPlanetKitCall::fun requestPeerMute(isMute: Boolean, userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
PlanetKitConference::fun requestPeersMute(isMute: Boolean, userData: Any? = null, callback: PlanetKitRequestCallback? = null): Booleanfun requestPeerMute(isMute: Boolean): BooleanPlanetKitCall::fun requestPeerMute(isMute: Boolean): Boolean
PlanetKitConference::fun requestPeersMute(isMute: Boolean): Booleanfun silenceAllPeersAudioPlayout(isSilence: Boolean, userData: Any? = null, callback: PlanetKitRequestCallback? = null): BooleanPlanetKitCall::fun silencePeerAudio(isSilence: Boolean, userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
PlanetKitConference::fun silencePeersAudio(isSilence: Boolean, userData: Any? = null, callback: PlanetKitRequestCallback? = null): Booleanfun makeSendDataSession(@IntRange(from = 100, to = 1000) streamId: Int, type: PlanetKitDataSessionType, listener: SendDataSessionListener)fun makeOutboundDataSession(@IntRange(from = 100, to = 1000) streamId: Int, type: PlanetKitDataSessionType, listener: OutboundDataSessionListener)fun makeReceiveDataSession(@IntRange(from = 100, to = 1000) streamId: Int, listener: ReceiveDataSessionListener)fun makeInboundDataSession(@IntRange(from = 100, to = 1000) streamId: Int, listener: InboundDataSessionListener)fun unsupportedReceiveDataSession(streamId: Int): Booleanfun unsupportInboundDataSession(streamId: Int): Booleanfun getReceiveDataSession(@IntRange(from = 100, to = 1000) streamId: Int): PlanetKitReceiveDataSession?fun getInboundDataSession(@IntRange(from = 100, to = 1000) streamId: Int): PlanetKitInboundDataSession?fun getSendDataSession(@IntRange(from = 100, to = 1000) streamId: Int): PlanetKitSendDataSession?fun getOutboundDataSession(@IntRange(from = 100, to = 1000) streamId: Int): PlanetKitOutboundDataSession? -
PlanetKitAudioVolumeclass 1-to-1 callGroup call이전 버전 PlanetKit 5.5 class PlanetKitAudioVolumeclass PlanetKitAudioDescriptionval averageVolume: Intval averageVolumeLevel: Intval subgroupName:String?val sentSubgroupName:String? -
PlanetKitAudioVolumesclass 1-to-1 callGroup call이전 버전 PlanetKit 5.5 class PlanetKitAudioVolumesclass PlanetKitAudioDescriptions -
PlanetKitVerifyCallParam.Builderclass 1-to-1 call이전 버전 PlanetKit 5.5 fun messageData(messageData: String)fun cCParam(cCParam: PlanetKitCCParam) -
PlanetKitConferencePeerInfoclass Group call이전 버전 PlanetKit 5.5 val serviceId: StringPlanetKitConferencePeer::val serviceId: Stringval user: PlanetKitUserPlanetKitConferencePeer::val user: PlanetKitUserval userId: StringPlanetKitConferencePeer::val userId: Stringvar videoSubgroupName: String?PlanetKitConferencePeer::val currentVideoSubgroupName: String?val mediaType:PlanetKitMediaTypePlanetKitConferencePeer::val mediaType:PlanetKitMediaTypeval subgroupNames: Set<String>PlanetKitConferencePeer::val subgroupNames:Set<String>val isDataSessionSupport: BooleanPlanetKitConferencePeer::val isDataSessionSupported: Booleanval isAudioMuted:Boolean: BooleanPlanetKitConferencePeer::val isAudioMuted: Booleanval isOnHold:BooleanPlanetKitConferencePeer::val holdStatus: HoldStatusval displayName:String?PlanetKitConferencePeer::val displayName:String?val userEquipmentType: PlanetKitUserEquipmentTypePlanetKitConferencePeer::val userEquipmentType: PlanetKitUserEquipmentTypeval sipLocalIP: String?PlanetKitConferencePeer::val sipLocalIP: String?val sipDeviceInfo:String?PlanetKitConferencePeer::val sipDeviceInfo:String?fun isSameMember(member:PlanetKitConferencePeerInfo): BooleanPlanetKitConferencePeer::fun isSameMember(member:PlanetKitConferencePeer):Boolean -
PlanetKitConferenceExceptionMessageclass Group call이전 버전 PlanetKit 5.5 val peer: PlanetKitConferencePeerInfoval peer: PlanetKitConferencePeer -
PlanetKitConferencePeerHoldReceivedParamclass Group call이전 버전 PlanetKit 5.5 val peer:PlanetKitConferencePeerInfoval peer:PlanetKitConferencePeer -
PlanetKitConferencePeerSetSharedContentsParamclass Group call이전 버전 PlanetKit 5.5 val peer:PlanetKitConferencePeerInfoval peer:PlanetKitConferencePeer -
OnNoVideoSourceListenerinterface 1-to-1 callGroup call이전 버전 PlanetKit 5.5 fun onNoVideoSource(session: PlanetKitSession)fun onMyVideoNoSourceDetected(call: PlanetKitCall),fun onMyVideoNoSourceDetected(conference: PlanetKitConference)
추가
ConferenceListenerinterface Group callfun onMyAudioDescriptionUpdated(conference: PlanetKitConference, audioDescription: PlanetKitAudioDescription)fun onPeersAudioDescriptionUpdated(conference: PlanetKitConference, peersAudioDescription:PlanetKitAudioDescriptions)fun onMyScreenShareStoppedByHold(conference: PlanetKitConference)fun removePeerVideoView(view: PlanetKitVideoView)
PlanetKitCCParamclass 1-to-1 callval peerId: Stringval peerServiceId: Stringval mediaType: PlanetKitMediaTypefun create(messageData: String): PlanetKitCCParam?
PlanetKitConferencePeerclass Group callval screenShareSubgroupName:String?enum class PeerGetFailReasondata class VideoStatusResultdata class ScreenShareStateResultdata class AudioVolumeResultdata class HoldStatusfun createPeerControl(): PlanetKitPeerControl?
PlanetKitPeerViewclass Group callPlanetKitMyMediaStatusListenerinterface 1-to-1 callGroup callfun onMyAudioDescriptionUpdated(audioDescription: PlanetKitAudioDescription)fun onVideoStatusUpdated(videoStatus: PlanetKitVideoStatus)fun onVideoSubgroupUpdated(subgroupName: String?)fun onScreenShareStateUpdated(state: PlanetKitScreenShareState)fun onScreenShareSubgroupUpdated(subgroupName: String?)fun onMyAudioMuted()fun onMyAudioUnmuted()
PlanetKitDisconnectedParamdata class 1-to-1 callGroup callval reason: PlanetKitDisconnectReasonval source: PlanetKitDisconnectSourceval byRemote: Booleanval userCode: String?
PlanetKitStartFailReasonenum 1-to-1 callGroup callTOO_LONG_APP_SERVER_DATANOT_INITIALIZED
PlanetKitDisconnectReasonenum 1-to-1 callGroup callINTERNAL_ERRORUSER_ERRORINTERNAL_KIT_ERRORAUDIO_TX_NO_SRCUNAVAILABLE_NETWORKAPP_DESTROYSYSTEM_SLEEPSYSTEM_LOGOFFSERVICE_ACCESS_TOKEN_ERRORMTU_EXCEEDEDAPP_SERVER_DATA_ERRORMAX_CALL_TIME_EXCEEDEDSERVICE_TOO_MANY_REQUESTSDESKTOP_SCREEN_LOCKED
PlanetKitDisconnectSourceenum 1-to-1 callGroup callUNDEFINEDCALLEECALLERPARTICIPANTCLOUD_SERVERAPP_SERVER
PlanetKitCallinterface 1-to-1 callval isPeerAudioMuted:Booleanval myUseResponderPreparation: Booleanval myCallStartMessage: PlanetKitCallStartMessage?val peerUseResponderPreparation: Booleanval peerCallStartMessage: PlanetKitCallStartMessage?fun acceptCall( listener: AcceptCallListener, useResponderPreparation: Boolean = false )fun acceptCall( listener: AcceptCallListener, callStartMessage: PlanetKitCallStartMessage, useResponderPreparation: Boolean = false )fun setMyScreenShareVideoShareMode(videoShareMode: Boolean): Booleanfun isMyScreenShareVideoShareModeEnabled(): Booleanfun isRecordOnCloudActivated(): Booleanfun setOnAudioRouteAvailableListChangeListener(listener: OnAudioRouteAvailableListChangeListener?)fun getMyMediaStatus() : PlanetKitMyMediaStatus?
PlanetKitCallConnectedParamdata class 1-to-1 callval isDataSessionSupported: Booleanval isVideoHwCodecEnabled: Booleanval peerStartMessage: PlanetKitCallStartMessage?val isInResponderPreparation: Booleanval shouldFinishPreparation: Booleanval isVideoShareModeSupported: Boolean
PlanetKitCallStartMessagedata class 1-to-1 callval data: String
PlanetKitConferenceinterface Group callfun getConferencePeer(peerUser: PlanetKitUser): PlanetKitConferencePeer?fun getConferencePeer(peerId: String, peerServiceId: String): PlanetKitConferencePeer?fun removePeerScreenShareView(view: PlanetKitVideoView)val isOnHold: Booleanfun setMyScreenShareVideoShareMode(videoShareMode: Boolean): Booleanfun isMyScreenShareVideoShareModeEnabled(): Booleanfun setOnAudioRouteAvailableListChangeListener(listener: OnAudioRouteAvailableListChangeListener?)fun getMyMediaStatus() : PlanetKitMyMediaStatus?
PlanetKitMyViewclass 1-to-1 callGroup callfun fillColor(@ColorInt color : Int)fun setMe(conference: PlanetKitConference, myViewListener: MyViewListener? =null, userData:Any? =null, ) : Booleanfun setMe(call: PlanetKitCall, myViewListener: MyViewListener? =null, userData:Any?=null): Booleanvar scaleType : PlanetKitViewScaleTypevar blurFactor : Intval myVideoStatus: PlanetKitVideoStatusval myVideoSubgroupName: String?val myScreenShareState: PlanetKitScreenShareStateval myScreenShareSubgroupName: String?val myDisplayName: String?val myEquipmentType: PlanetKitUserEquipmentTypeval isOnHold: Boolean?val isMyAudioMuted: Boolean?val me:PlanetKitUser?fun clearMe()fun resetFirstFrameRendered()interface MyViewListenervar mirroredType: PlanetKitMirroredType
PlanetKitMyView.MyViewListenerinterface 1-to-1 callGroup callfun onInitialized(userData: Any?)fun onRenderFirstFrame()fun onAudioDescriptionUpdated(audioDescription:PlanetKitAudioDescription)fun onVideoStatusUpdated(videoStatus: PlanetKitVideoStatus)fun onVideoSubgroupUpdated(subgroupName: String?)fun onMyAudioMuted()fun onMyAudioUnmuted()fun onScreenShareStateUpdated(state: PlanetKitScreenShareState)fun onScreenShareSubgroupUpdated(subgroupName: String?)fun onHold()fun onUnHold()
PlanetKitPeerScreenShareViewclass Group callval isScreenShareStarted : Booleanvar scaleType : PlanetKitViewScaleTypevar blurFactor : Intvar mirroredType: PlanetKitMirroredTypeval peer : PlanetKitConferencePeer?fun fillColor(@ColorInt color : Int)fun setPeer( session: PlanetKitConference, newConferencePeer: PlanetKitConferencePeer, peerScreenShareViewListener: PeerScreenShareViewListener? =null, userData:Any?=null, ) : Booleanfun clearPeer()fun startScreenShare( subgroupName: String? = null, callback: PlanetKitVideoRequestCallback?= null, userData: Any?=null, ) : Booleanfun stopScreenShare(userData: Any?=null, callback: PlanetKitVideoRequestCallback?=null) : Booleaninterface PeerScreenShareViewListener
PlanetKitPeerScreenShareView.PeerScreenShareViewListenerinterface Group callfun onInitialized(peer: PlanetKitConferencePeer, userData: Any?)fun onRenderFirstFrame(peer: PlanetKitConferencePeer)fun onScreenShareUpdated(peer: PlanetKitConferencePeer, state: PlanetKitScreenShareState, subgroupName: String?)fun onDisconnected(peer: PlanetKitConferencePeer)
PlanetKitDataSessionFailReasonenum 1-to-1 callGroup callNONEINTERNALNOT_INCOMINGALREADY_EXISTINVALID_IDINVALID_TYPE
PlanetKitConferenceParamclass Group callval playEndToneRegardlessOfConferenceState: Booleanval enableAudioDescription: Booleanval audioDescriptionInterval:Long
PlanetKitConferenceParam.Builderclass Group callfun enableAudioDescription(enable:Boolean)fun setAudioDescriptionInterval(intervalMS:Long)fun enablePlayEndToneRegardlessOfConferenceState(value: Boolean)fun setInitialMyVideoState(value: PlanetKitInitialMyVideoState)
CallListenerinterface 1-to-1 callfun onMyAudioDescriptionUpdated(call: PlanetKitCall, audioDescription: PlanetKitAudioDescription)fun onPeerAudioDescriptionUpdated(call: PlanetKitCall, audioDescription: PlanetKitAudioDescription)fun onMyScreenShareStoppedByHold(call: PlanetKitCall)fun onRecordOnCloudUpdated(call: PlanetKitCall, activated: Boolean, reason: PlanetKitRecordOnCloudDeactivateReason)
PlanetKitSubgroupinterface Group callval attribute: PlanetKitSubgroupAttribute?val isSendingScreenShare: Boolean
PlanetKitobject 1-to-1 callGroup callfun interface OnInitializeCompleteListener
VideoSourceabstract class 1-to-1 callGroup callprotected fun postingFrameDataAvailable(nanoSecondsTimestamp: Long): Booleanprotected val isMaxFpsLimitEnabled: Booleanprotected val maxFpsLimit: Intprotected abstract fun onMaxFpsLimitUpdated(isLimitEnabled: Boolean, maxFps: Int)
PlanetKitSubgroupAttributedata class Group callPlanetKitMakeCallParamdata class 1-to-1 callval enableAudioDescription: Booleanval audioDescriptionInterval:Longval recordOnCloud: Booleanval playEndToneRegardlessOfCallState: Boolean
PlanetKitMakeCallParam.Builderclass 1-to-1 callfun enableAudioDescription(enable:Boolean)fun setAudioDescriptionInterval(intervalMS:Long)fun enableRecordOnCloud(value: Boolean)fun enablePlayEndToneRegardlessOfCallState(value: Boolean)fun setInitialMyVideoState(value: PlanetKitInitialMyVideoState)
PlanetKitRecordOnCloudDeactivateReasonenum class 1-to-1 callPlanetKitLogSizeLimitenum class 1-to-1 callGroup callPlanetKitConfiguration.Builderclass 1-to-1 callGroup callfun setLogSizeLimit(logSizeLimit: PlanetKitLogSizeLimit)
PlanetKitVerifyCallParamclass 1-to-1 callval enableAudioDescription: Booleanval audioDescriptionInterval:Longval playEndToneRegardlessOfCallState: Boolean
PlanetKitVerifyCallParam.Builderclass 1-to-1 callfun enableAudioDescription(enable:Boolean)fun setAudioDescriptionInterval(intervalMS:Long)fun enablePlayEndToneRegardlessOfCallState(value: Boolean)
PlanetKitVideoViewclass 1-to-1 callGroup callvar mirroredType: PlanetKitMirroredType
PlanetKitMirroredTypeenum class 1-to-1 callGroup callPlanetKitDataSessionClosedReasonenum class 1-to-1 callGroup callOutboundDataSessionListenerinterface 1-to-1 callGroup callvoid onClosed(@NonNull PlanetKitOutboundDataSession dataSession, @NonNull PlanetKitDataSessionClosedReason closedReason)
InboundDataSessionListenerinterface 1-to-1 callGroup callvoid onClosed(@NonNull PlanetKitInboundDataSession dataSession, @NonNull PlanetKitDataSessionClosedReason closedReason)
PlanetKitPeerControlclass Group callval peer: PlanetKitConferencePeerfun startScreenShare(subgroupName: String? = null, callback: PlanetKitVideoRequestCallback?= null, userData: Any?=null) : Booleanfun stopScreenShare(userData: Any?=null, callback: PlanetKitVideoRequestCallback?=null) : Booleanfun startVideo(resolution: PlanetKitVideoResolution, subgroupName: String? = null, callback: PlanetKitVideoRequestCallback?= null, resolutionCallback: PlanetKitPeerVideoResolutionCallback?=null, userData: Any?=null) : Booleanfun stopVideo(userData: Any?=null, callback: PlanetKitVideoRequestCallback?=null) : Booleanfun register(peerControlListener: PeerControlListener, userData: Any? = null, callback: PlanetKitRequestCallback? = null): Booleanfun unregister(userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
PlanetKitPeerControl.PeerControlListenerinterface Group callfun onVideoUpdated(peer: PlanetKitConferencePeer, videoStatus: PlanetKitVideoStatus, subgroupName: String?)fun onMicMuted(peer: PlanetKitConferencePeer)fun onMicUnmuted(peer: PlanetKitConferencePeer)fun onScreenShareUpdated(peer: PlanetKitConferencePeer, state: PlanetKitScreenShareState, subgroupName: String?)fun onSubscribed(peer: PlanetKitConferencePeer, subgroup: PlanetKitSubgroup)fun onUnsubscribed(peer: PlanetKitConferencePeer, subgroupName: String?)fun onSharedContentsSet(peer: PlanetKitConferencePeer, param: PlanetKitConferencePeerSetSharedContentsParam)fun onSharedContentsUnSet(peer: PlanetKitConferencePeer)fun onHold(peer: PlanetKitConferencePeer, reason:String?)fun onUnhold(peer: PlanetKitConferencePeer)fun onAudioDescriptionUpdated(peer: PlanetKitConferencePeer, audioDescription: PlanetKitAudioDescription)fun onDisconnected(peer: PlanetKitConferencePeer)
PlanetKitMyMediaStatusinterface 1-to-1 callGroup callval myVideoStatus: PlanetKitVideoStatusval myVideoSubgroupName: String?val myScreenShareState: PlanetKitScreenShareStateval myScreenShareSubgroupName: String?val isMyAudioMuted: Booleanfun addHandler(listener: PlanetKitMyMediaStatusListener, userData:Any?, callback: PlanetKitRequestCallback)fun removeHandler(listener: PlanetKitMyMediaStatusListener, userData:Any?, callback: PlanetKitRequestCallback)
OnAudioRouteAvailableListChangeListenerinterface 1-to-1 callGroup callfun onAudioRouteAvailableListChanged(connectedList: List<PlanetKitAudioRoute>)
PlanetKitCameraManagerinterface 1-to-1 callGroup callval resolution: PlanetKitVideoResolutionvar cameraType: PlanetKitCameraTypeval isStarted: Booleanval fps: Intfun setStateListener(listener: StateListener?)fun setManualResolution(resolution: PlanetKitVideoResolution)fun setDefaultResolution()fun setVirtualBackgroundPlugin(plugin: PlanetKitPluginVirtualBackground) :Booleanfun addCameraTypeChangedListener(listener: CameraTypeChangedListener)fun removeCameraTypeChangedListener(listener: CameraTypeChangedListener)fun setVideoSourceInterceptor(interceptor: PlanetKitVideoInterceptor?)fun startPreview(view: PlanetKitVideoView): Booleanfun stopPreview(view: PlanetKitVideoView): Booleanfun enableDumpFrame(enable: Boolean)
PlanetKitCameraManager.StateListenerinterface 1-to-1 callGroup callfun onStart()fun onStop()fun onError(@ErrorCode code: Int)
PlanetKitCameraManager.CameraTypeChangedListenerinterface 1-to-1 callGroup callfun onChanged(isFrontCamera: Boolean)
PlanetKitPluginVirtualBackgroundinterface 1-to-1 callGroup callfun getCurrentVirtualBackgroundType(): VirtualBackgroundTypefun setVirtualBackgroundWithBlur(@IntRange(from = 1, to = 25) radius: Int)fun setVirtualBackgroundWithImage(inputImage: Bitmap)fun clearVirtualBackground()
PlanetKitPluginVirtualBackground.VirtualBackgroundTypeenum class 1-to-1 callGroup callNONE(0)BLUR(1)IMAGE(2)
PlanetKitPluginProviderVirtualBackgroundclass 1-to-1 callGroup callfun getPlugin(): PlanetKitPluginVirtualBackground
PlanetKitInitialMyVideoStateenum class 1-to-1 callGroup callRESUME(0)PAUSE(1)
PlanetKitCustomVideoSourceabstract class 1-to-1 callGroup callvar maxFps: Int? = nullfun addMyVideoView(view: PlanetKitVideoView)fun removeMyVideoView(view: PlanetKitVideoView)protected fun postFrameData(frameData: FrameData): Booleanprotected fun postingFrameDataAvailable(): Booleanabstract fun onMaxFpsLimitUpdated(isLimitEnabled: Boolean, maxFps: Int)
PlanetKitCustomVideoSource.FrameDataabstract class 1-to-1 callGroup callPlanetKitCameraResolutionenum class 1-to-1 callGroup callQVGAVGAHD
삭제
ScreenCapturerVideoSourceclass 1-to-1 callGroup callfun stop(reason: VideoSource.VideoSourceStopReason): Booleanfun useDeviceRotation(): Boolean
PlanetKitMediaDisableReasonenum class 1-to-1 callGroup callNOT_SUPPORTNO_MEDIA_SRCNO_RECV_MEDIA
CameraVideoSourceclass 1-to-1 callGroup callPlanetKitVideoViewclass 1-to-1 callGroup calloverride fun getRenderView(): AndromedaRenderView
PlanetKitVerifyCallParam.Builderclass 1-to-1 callfun myScreenShareSendCapability(capability: PlanetKitVideoCapability)
PlanetKitVerifyCallParamdata class 1-to-1 callval myScreenShareSendCapability: PlanetKitVideoCapability?
PlanetKitConferenceRoomTypeenum class Group callPlanetKitMakeCallParam.Builderclass 1-to-1 callfun myScreenShareSendCapability(capability: PlanetKitVideoCapability)
PlanetKitMakeCallParamdata class 1-to-1 callval myScreenShareSendCapability: PlanetKitVideoCapability?
SendDataSessionListenerinterface 1-to-1 callGroup callvoid onUnsupportedDataSession(@NonNull PlanetKitSendDataSession dataSession)
PlanetKitConferenceParamclass Group callval apiKey: String?val roomType: PlanetKitConferenceRoomTypeval myScreenShareSendCapability: PlanetKitVideoCapability?val disconnectOnBadNetwork: Boolean
PlanetKitConferenceParam.Builderclass Group callfun apiKey(apiKey: String)fun roomType(roomType: PlanetKitConferenceRoomType)fun myScreenShareSendCapability(capability: PlanetKitVideoCapability)fun disconnectOnBadNetwork(disconnectOnBadNetwork: Boolean)
PlanetKitCallParam.Builderclass 1-to-1 callfun apiKey(apiKey: String)
PlanetKitCallParamclass 1-to-1 callval apiKey: String?
PlanetKitCallInitDataclass 1-to-1 callPlanetKitErrorenum 1-to-1 callGroup callSESSION_FAIL_REASON_ALREADY_EXISTSESSION_FAIL_REASON_INVALID_SESSION_TYPESESSION_FAIL_REASON_FAILED_TO_MAKE_DATA_SESSION
PlanetKitConfiguration.Builderclass 1-to-1 callGroup callfun logToConsole( isEnabled: Boolean )
PlanetKitConferenceinterface Group callfun initialize(context: Context)val memberVolumes: PlanetKitAudioVolumes?val isHighPriorityAudio: Booleanfun sendShortData( targetUsers: List<PlanetKitUser>, type: String, shortData: ByteArray, userData: Any? = null, callback: PlanetKitRequestCallback? = null): Booleanfun sendShortData( targetUsers: List<PlanetKitUser>, type: String, shortData: ByteArray): Booleanfun setAudioHighPrioritySend( isHighPriority: Boolean, userData: Any? = null, callback: PlanetKitRequestCallback? = null): Booleanval roomType: PlanetKitConferenceRoomType
PlanetKitCallinterface 1-to-1 callval myCallInitData: PlanetKitCallInitData?val peerCallInitData: PlanetKitCallInitData?fun acceptCall(mediaType: PlanetKitMediaType, listener: AcceptCallListener, callInitData:PlanetKitCallInitData )fun acceptCall( listener: AcceptCallListener, callInitData: PlanetKitCallInitData = PlanetKitCallInitData() )val peerVolume:PlanetKitAudioVolume?fun initialize(context: Context)fun reject()
PlanetKitLogStorageclass 1-to-1 callGroup callPlanetKitLogStorageTypeenum 1-to-1 callGroup callPlanetKitConferencePeerclass Group callvar audioSubgroupName: String?var audioTaggedSubgroupName: String?
PlanetKitSessionclass 1-to-1 callGroup callval myVolume: PlanetKitAudioVolume
PlanetKitIntentclass 1-to-1 callPlanetKitStartFailReasonenum 1-to-1 callGroup callKIT_CALL_INIT_DATA_INVALID_SIZE
PlanetKitDisconnectReasonenum 1-to-1 callGroup callLOCAL_MIC_NO_SRCREMOTE_MIC_NO_SRCLOCAL_INTERNAL_ERRORREMOTE_INTERNAL_ERRORLOCAL_USER_ERRORREMOTE_USER_ERRORLOCAL_INTERNAL_KIT_ERRORREMOTE_INTERNAL_KIT_ERRORBAD_NETWORK_IN_CONFERENCEUNAVAILABLE_NETWORK_IN_CALLSERVICE_APIKEY_ERRORWRONG_ROOM_ATTRIBUTE
PlanetKitSubgroupManagerinterface Group callboolean tagMainRoomVideoSend(@Nullable String subgroupName, @Nullable java.lang.Object userData, @Nullable PlanetKitRequestCallback callback)PlanetKitSubgroup getMyTagVideoSubgroup()
PlanetKitConferencePeerInfoclass Group callvar videoTaggedSubgroupName: String?
DefaultCameraVideoSourceclass 1-to-1 callGroup call