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
에 따른 앱 구현 요구 사항
- 데모 앱 코드가
targetSdkVersion
34 이상의 요구 사항을 충족하도록 업데이트되었습니다. - 데모 앱 코드를 참조하여 앱을 업데이트해 주세요.
유형 | 영향 받는 버전 | 요구 사항 | 참조 |
---|---|---|---|
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 변경
변경
-
PlanetKit
class 1-to-1 callGroup call이전 버전 PlanetKit 5.5 val userAgent: String
OnInitializeCompleteListener.onComplete(isSuccessful, isVideoHwCodecSupport, userAgent)
val isVideoHwCodecSupport: Boolean
OnInitializeCompleteListener.onComplete(isSuccessful, isVideoHwCodecSupport, userAgent)
fun initialize(config: PlanetKitConfiguration)
fun initialize(config: PlanetKitConfiguration, listener: OnInitializeCompleteListener)
추가
PlanetKit
class 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 변경
변경
-
PlanetKitSession
interface 1-to-1 callGroup call이전 버전 PlanetKit 5.5 interface PlanetKitSession
interface PlanetKitCall
,interface PlanetKitConference
-
OnNoVideoSourceListener
interface 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 변경
변경
-
PlanetKit
object 1-to-1 callGroup call이전 버전 PlanetKit 5.5 fun getDefaultCameraVideoSource(): DefaultCameraVideoSource
fun getCameraManager(): PlanetKitCameraManager
추가
PlanetKitCameraManager
interface 1-to-1 callGroup callval resolution: PlanetKitCameraResolution
var cameraType: PlanetKitCameraType
val isStarted: Boolean
val fps: Int
fun setStateListener(listener: StateListener?)
fun setManualResolution(resolution: PlanetKitCameraResolution)
fun setDefaultResolution()
fun setVirtualBackgroundPlugin(plugin: PlanetKitPluginVirtualBackground) :Boolean
fun addCameraTypeChangedListener(listener: CameraTypeChangedListener)
fun removeCameraTypeChangedListener(listener: CameraTypeChangedListener)
fun setVideoSourceInterceptor(interceptor: PlanetKitVideoInterceptor?)
fun startPreview(view: PlanetKitVideoView): Boolean
fun stopPreview(view: PlanetKitVideoView): Boolean
fun enableDumpFrame(enable: Boolean)
PlanetKitCameraManager.StateListener
interface 1-to-1 callGroup callfun onStart()
fun onStop()
fun onError(@ErrorCode code: Int)
PlanetKitCameraManager.CameraTypeChangedListener
interface 1-to-1 callGroup callfun onChanged(isFrontCamera: Boolean)
PlanetKitCameraResolution
enum class 1-to-1 callGroup callQVGA
VGA
HD
삭제
DefaultCameraVideoSource
class 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 변경
삭제
PlanetKitDisconnectReason
enum 1-to-1 callGroup callSERVICE_APIKEY_ERROR
PlanetKitCallParam
class 1-to-1 callval apiKey: String?
PlanetKitCallParam.Builder
class 1-to-1 callfun apiKey(apiKey: String)
PlanetKitConferenceParam
class Group callval apiKey: String?
PlanetKitConferenceParam.Builder
class Group callfun apiKey(apiKey: String)
Breaking change 로그 설정 업데이트
- 로깅 정책에 따라 적절한
PlanetKitLogLevel
및PlanetKitLogSizeLimit
을 사용할 수 있습니다. - 로그 파일의 크기를 설정할 수 있습니다.
- 로그 레벨이 단순화되었습니다.
- PlanetKit 로그가 암호화되었습니다.
- 콘솔 로그 출력이 제거되었습니다.
- 관련 API들이 변경되었습니다.
API 변경
변경
-
PlanetKitLogLevel
enum class 1-to-1 callGroup call이전 버전 PlanetKit 5.5 VERBOSE
DETAILED
DEBUG
DETAILED
INFO
SIMPLE
WARN
SIMPLE
ERROR
SIMPLE
CRITICAL
SIMPLE
NONE
SILENT
추가
PlanetKitLogSizeLimit
enum class 1-to-1 callGroup callPlanetKitConfiguration.Builder
class 1-to-1 callGroup callfun setLogSizeLimit(logSizeLimit: PlanetKitLogSizeLimit)
삭제
-
PlanetKitConfiguration.Builder
class 1-to-1 callGroup callfun logToConsole( isEnabled: Boolean )
-
PlanetKitConfiguration.Builder
class 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 변경
변경
-
PlanetKitCall
class 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): Boolean
fun hold(reason: String? = null, callback: PlanetKitRequestCallback? = null): Boolean
fun hold(pauseRecv:Boolean, callback: PlanetKitRequestCallback? = null): Boolean
fun hold(reason:String? = null, callback: PlanetKitRequestCallback? = null): Boolean
fun hold(pauseRecv:Boolean, reason:String? = null): Boolean
fun hold(reason:String? = null, callback: PlanetKitRequestCallback? = null): Boolean
fun hold(pauseRecv:Boolean): Boolean
fun hold(reason:String? = null, callback: PlanetKitRequestCallback? = null): Boolean
Breaking change PlanetKitCCParam
추가
PlanetKitCCParam
은 클라우드 서버로부터 수신된 메시지 데이터를 나타내는 클래스입니다.PlanetKitCCParam
은 통화 정보를 미리 알 수 있게 해줍니다.PlanetKitCCParam
을 생성하려면 메시지 데이터가 필요합니다.- 또한,
verifyCall()
을 수행할 때 메시지 데이터 대신PlanetKitCCParam
을 사용하도록 변경되었습니다.
API 변경
추가
PlanetKitCCParam
class 1-to-1 callval peerId: String
val peerServiceId: String
val mediaType: PlanetKitMediaType
fun create(messageData: String): PlanetKitCCParam?
변경
-
PlanetKitVerifyCallParam
class 1-to-1 call이전 버전 PlanetKit 5.5 val messageData: String
val cCParam: PlanetKitCCParam
-
PlanetKitVerifyCallParam.Builder
class 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 변경
추가
PlanetKitCall
class 1-to-1 callval myUseResponderPreparation: Boolean
val myCallStartMessage: PlanetKitCallStartMessage?
val peerUseResponderPreparation: Boolean
val peerCallStartMessage: PlanetKitCallStartMessage?
fun acceptCall( listener: AcceptCallListener, useResponderPreparation: Boolean = false )
fun acceptCall( listener: AcceptCallListener, callStartMessage: PlanetKitCallStartMessage, useResponderPreparation: Boolean = false )
PlanetKitCallConnectedParam
data class 1-to-1 callval peerStartMessage: PlanetKitCallStartMessage?
val isInResponderPreparation: Boolean
PlanetKitCallStartMessage
data class 1-to-1 callval data: String
삭제
PlanetKitCall
class 1-to-1 callval myCallInitData: PlanetKitCallInitData?
val peerCallInitData: PlanetKitCallInitData?
fun acceptCall(mediaType: PlanetKitMediaType, listener: AcceptCallListener, callInitData:PlanetKitCallInitData )
fun acceptCall( listener: AcceptCallListener, callInitData: PlanetKitCallInitData = PlanetKitCallInitData() )
PlanetKitCallInitData
class 1-to-1 call
변경
-
CallListener
interface 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)
-
AcceptCallListener
interface 1-to-1 call이전 버전 PlanetKit 5.5 fun onConnected( call:PlanetKitCall, calleeInitData: PlanetKitCallInitData )
fun onConnected( call: PlanetKitCall, param: PlanetKitCallConnectedParam )
-
MakeCallListener
interface 1-to-1 call이전 버전 PlanetKit 5.5 fun onConnected( call:PlanetKitCall, calleeInitData: PlanetKitCallInitData )
fun onConnected( call: PlanetKitCall, param: PlanetKitCallConnectedParam )
-
VerifyListener
interface 1-to-1 call이전 버전 PlanetKit 5.5 fun onVerified(call: PlanetKitCall, callerInitData: PlanetKitCallInitData)
fun onVerified(call: PlanetKitCall, peerStartMessage: PlanetKitCallStartMessage?, peerUseResponderPreparation: Boolean)
-
PlanetKitCallParam
class 1-to-1 call이전 버전 PlanetKit 5.5 val callInitData: String
val callStartMessage: PlanetKitCallStartMessage?
val isResponderPrepare: Boolean
val useResponderPreparation: Boolean
-
PlanetKitCallParam.Builder
class 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 변경
추가
PlanetKitCallConnectedParam
data class 1-to-1 callval isDataSessionSupported: Boolean
val isVideoHwCodecEnabled: Boolean
val peerStartMessage: PlanetKitCallStartMessage?
val isInResponderPreparation: Boolean
val shouldFinishPreparation: Boolean
변경
-
CallListener
interface 1-to-1 call이전 버전 PlanetKit 5.5 fun onConnected(call: PlanetKitCall, calleeInitData: PlanetKitCallInitData)
fun onConnected(call: PlanetKitCall, param: PlanetKitCallConnectedParam)
-
AcceptCallListener
interface 1-to-1 call이전 버전 PlanetKit 5.5 fun onConnected( call:PlanetKitCall, calleeInitData: PlanetKitCallInitData )
fun onConnected( call: PlanetKitCall, param: PlanetKitCallConnectedParam )
-
MakeCallListener
interface 1-to-1 call이전 버전 PlanetKit 5.5 fun onConnected( call:PlanetKitCall, calleeInitData: PlanetKitCallInitData )
fun onConnected( call: PlanetKitCall, param: PlanetKitCallConnectedParam )
-
VerifyListener
interface 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 변경
삭제
PlanetKitCall
interface 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 변경
변경
-
PlanetKitConferencePeerInfo
class Group call이전 버전 PlanetKit 5.5 val serviceId: String
PlanetKitConferencePeer::val serviceId: String
val user: PlanetKitUser
PlanetKitConferencePeer::val user: PlanetKitUser
val userId: String
PlanetKitConferencePeer::val userId: String
var videoSubgroupName: String?
PlanetKitConferencePeer::val currentVideoSubgroupName: String?
val mediaType:PlanetKitMediaType
PlanetKitConferencePeer::val mediaType:PlanetKitMediaType
val subgroupNames: Set<String>
PlanetKitConferencePeer::val subgroupNames:Set<String>
val isDataSessionSupport: Boolean
PlanetKitConferencePeer::val isDataSessionSupported: Boolean
val isAudioMuted:Boolean: Boolean
PlanetKitConferencePeer::val isAudioMuted: Boolean
val isOnHold:Boolean
PlanetKitConferencePeer::val holdStatus: HoldStatus
val displayName:String?
PlanetKitConferencePeer::val displayName:String?
val userEquipmentType: PlanetKitUserEquipmentType
PlanetKitConferencePeer::val userEquipmentType: PlanetKitUserEquipmentType
val sipLocalIP: String?
PlanetKitConferencePeer::val sipLocalIP: String?
val sipDeviceInfo:String?
PlanetKitConferencePeer::val sipDeviceInfo:String?
fun isSameMember(member:PlanetKitConferencePeerInfo): Boolean
PlanetKitConferencePeer::fun isSameMember(member:PlanetKitConferencePeer):Boolean
-
PlanetKitConferencePeer
class Group call이전 버전 PlanetKit 5.5 val videoStatus: PlanetKitVideoStatus
fun getVideoStatus(subgroupName: String?): VideoStatusResult
val audioVolume: Int?
fun getAudioVolumeLevelSetting(subgroupName: String?): AudioVolumeResult
val screenSharingSubgroupName: String?
val currentScreenShareSubgroupName: String?
val isDataSessionSupport: Boolean
val isDataSessionSupported: Boolean
추가
PlanetKitConferencePeer
class Group callval screenShareSubgroupName:String?
enum class PeerGetFailReason
data class VideoStatusResult
data class ScreenShareStateResult
data class AudioVolumeResult
data class HoldStatus
fun getScreenShareState( subgroupName: String? ): ScreenShareStateResult
fun createPeerControl(): PlanetKitPeerControl?
삭제
PlanetKitConferencePeer
class Group callvar audioSubgroupName: String?
var audioTaggedSubgroupName: String?
PlanetKitConferencePeerInfo
class 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 변경
삭제
PlanetKitConference
class Group callfun sendShortData( targetUsers: List<PlanetKitUser>, type: String, shortData: ByteArray): Boolean
fun 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 변경
삭제
PlanetKitConferenceRoomType
enum class Group callPlanetKitConferenceParam
data class Group callval roomType: PlanetKitConferenceRoomType
PlanetKitConferenceParam.Builder
class Group callfun roomType(roomType: PlanetKitConferenceRoomType)
PlanetKitConference
class Group callval roomType: PlanetKitConferenceRoomType
PlanetKitDisconnectReason
class 1-to-1 callGroup callWRONG_ROOM_ATTRIBUTE
Breaking change PlanetKitConference
의 disableVideo()
에서 reason
파라미터를 제거
PlanetKitConference
의disableVideo
메서드의reason
파라미터는 사용되지 않기 때문에 제거했습니다.PlanetKitMediaDisableReason
에서 사용되지 않는 열거형 값을 제거했습니다.
API 변경
삭제
PlanetKitMediaDisableReason
enum class 1-to-1 callGroup callNOT_SUPPORT
NO_MEDIA_SRC
NO_RECV_MEDIA
Breaking change PlanetKit.getConference
변경
- 컨퍼런스 인스턴스는 싱글톤이 아니지만, 오직 하나의 세션만 유효하기 때문에 인스턴스 ID 파라미터 없이 컨퍼런스 인스턴스를 얻도록
getConference()
메서드가 추가되었습니다.
API 변경
변경
-
PlanetKit
class 1-to-1 callGroup call이전 버전 PlanetKit 5.5 fun getConference(sid:Int): PlanetKitConference?
fun getConference(): PlanetKitConference?
Breaking change PlanetKitInitialMyVideoState
추가
PlanetKitInitialMyVideoState
는 영상 통화가 활성화될 때 로컬 사용자의 비디오 상태를 결정하기 위해 추가된 열거형 클래스입니다.PlanetKitInitialMyVideoState
유형의 속성 또는 파라미터의 기본값은PlanetKitInitialMyVideoState.RESUME
입니다.- 자세한 내용은 초기 비디오 상태 설정을 참조하세요.
API 변경
변경
-
PlanetKitCall
interface 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): Boolean
fun enableVideo(initialMyVideoState: PlanetKitInitialMyVideoState = PlanetKitInitialMyVideoState.RESUME, userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
-
PlanetKitConference
interface Group call이전 버전 PlanetKit 5.5 fun enableVideo(userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
fun enableVideo(initialMyVideoState: PlanetKitInitialMyVideoState = PlanetKitInitialMyVideoState.RESUME, userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
추가
PlanetKitInitialMyVideoState
enum class 1-to-1 callGroup callRESUME(0)
PAUSE(1)
PlanetKitMakeCallParam.Builder
class 1-to-1 callfun setInitialMyVideoState(value: PlanetKitInitialMyVideoState)
PlanetKitConferenceParam.Builder
class 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 변경
변경
-
PlanetKitAudioVolume
class 1-to-1 callGroup call이전 버전 PlanetKit 5.5 class PlanetKitAudioVolume
class PlanetKitAudioDescription
val averageVolume: Int
val averageVolumeLevel: Int
val subgroupName:String?
val sentSubgroupName:String?
추가
PlanetKitConferenceParam.Builder
class Group callfun enableAudioDescription(enable:Boolean)
fun setAudioDescriptionInterval(intervalMS:Long)
PlanetKitVerifyCallParam.Builder
class 1-to-1 callfun enableAudioDescription(enable:Boolean)
fun setAudioDescriptionInterval(intervalMS:Long)
PlanetKitConferenceParam.Builder
class Group callfun enableAudioDescription(enable:Boolean)
fun setAudioDescriptionInterval(intervalMS:Long)
CallListener
class 1-to-1 callfun onMyAudioDescriptionUpdated(call: PlanetKitCall, audioDescription: PlanetKitAudioDescription)
fun onPeerAudioDescriptionUpdated(call: PlanetKitCall, audioDescription: PlanetKitAudioDescription)
ConferenceListener
class Group callfun onMyAudioDescriptionUpdated(conference: PlanetKitConference, audioDescription: PlanetKitAudioDescription)
fun onPeersAudioDescriptionUpdated(conference: PlanetKitConference, peersAudioDescription:PlanetKitAudioDescriptions)
삭제
PlanetKitSession
class 1-to-1 callGroup callval myVolume: PlanetKitAudioVolume
PlanetKitCall
class 1-to-1 callval peerVolume:PlanetKitAudioVolume?
PlanetKitConference
class 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 변경
삭제
PlanetKitDisconnectReason
enum 1-to-1 callGroup callLOCAL_MIC_NO_SRC
REMOTE_MIC_NO_SRC
LOCAL_INTERNAL_ERROR
REMOTE_INTERNAL_ERROR
LOCAL_USER_ERROR
REMOTE_USER_ERROR
LOCAL_INTERNAL_KIT_ERROR
REMOTE_INTERNAL_KIT_ERROR
BAD_NETWORK_IN_CONFERENCE
UNAVAILABLE_NETWORK_IN_CALL
SERVICE_APIKEY_ERROR
추가
PlanetKitDisconnectReason
enum 1-to-1 callGroup callINTERNAL_ERROR
USER_ERROR
INTERNAL_KIT_ERROR
AUDIO_TX_NO_SRC
UNAVAILABLE_NETWORK
APP_DESTROY
SYSTEM_SLEEP
SYSTEM_LOGOFF
SERVICE_ACCESS_TOKEN_ERROR
MTU_EXCEEDED
APP_SERVER_DATA_ERROR
MAX_CALL_TIME_EXCEEDED
SERVICE_TOO_MANY_REQUESTS
DESKTOP_SCREEN_LOCKED
PlanetKitDisconnectSource
enum 1-to-1 callGroup callUNDEFINED
CALLEE
CALLER
PARTICIPANT
CLOUD_SERVER
APP_SERVER
PlanetKitDisconnectedParam
data class 1-to-1 callGroup callval reason: PlanetKitDisconnectReason
val source: PlanetKitDisconnectSource
val byRemote: Boolean
val userCode: String?
변경
-
ConferenceListener
interface Group call이전 버전 PlanetKit 5.5 fun onLeft(conference: PlanetKitConference, reason: PlanetKitDisconnectReason, userRelCode: String?)
fun onDisconnected(conference: PlanetKitConference, param: PlanetKitDisconnectedParam)
-
CallListener
interface 1-to-1 call이전 버전 PlanetKit 5.5 fun onDisconnected(call: PlanetKitCall, reason: PlanetKitDisconnectReason, userCode: String?)
fun onDisconnected(call: PlanetKitCall, param: PlanetKitDisconnectedParam)
-
AcceptCallListener
interface 1-to-1 call이전 버전 PlanetKit 5.5 fun onDisconnected( call:PlanetKitCall, reason:PlanetKitDisconnectReason, userCode:String )
fun onDisconnected( call:PlanetKitCall, param:PlanetKitDisconnectedParam )
-
MakeCallListener
interface 1-to-1 call이전 버전 PlanetKit 5.5 fun onDisconnected( call:PlanetKitCall, reason:PlanetKitDisconnectReason, userCode:String )
fun onDisconnected( call:PlanetKitCall, param:PlanetKitDisconnectedParam )
-
VerifyListener
interface 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 변경
변경
-
DefaultCameraVideoSource
class 1-to-1 callGroup call이전 버전 PlanetKit 5.5 class DefaultCameraVideoSource
class PlanetKitCameraManager
추가
PlanetKitVideoView
class 1-to-1 callGroup callvar mirroredType: PlanetKitMirroredType
PlanetKitPeerView
class Group callvar mirroredType: PlanetKitMirroredType
PlanetKitPeerScreenShareView
class Group callvar mirroredType: PlanetKitMirroredType
PlanetKitMyView
class 1-to-1 callGroup callvar mirroredType: PlanetKitMirroredType
PlanetKitMirroredType
enum class 1-to-1 callGroup call
삭제
DefaultCameraVideoSource
class 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 변경
변경
-
PlanetKitCall
interface 1-to-1 call이전 버전 PlanetKit 5.5 fun setVideoSource(videoSource: VideoSource?)
fun setVideoSource(videoSource: PlanetKitCustomVideoSource)
,fun clearVideoSource()
-
PlanetKitConference
interface Group call이전 버전 PlanetKit 5.5 fun setVideoSource(videoSource: VideoSource?)
fun setVideoSource(videoSource: PlanetKitCustomVideoSource)
,fun clearVideoSource()
추가
PlanetKitCustomVideoSource
abstract class 1-to-1 callGroup callvar maxFps: Int?= null
fun addMyVideoView(view: PlanetKitVideoView)
fun removeMyVideoView(view: PlanetKitVideoView)
protected fun postFrameData(frameData: FrameData): Boolean
protected fun postingFrameDataAvailable(): Boolean
abstract fun onMaxFpsLimitUpdated(isLimitEnabled: Boolean, maxFps: Int)
PlanetKitCustomVideoSource.FrameData
abstract class 1-to-1 callGroup call
Breaking change ScreenCapturerVideoSource
개선
ScreenCapturerVideoSource
는 이전에 여러 불필요한 메서드를 노출하여 사용자가 혼란을 느낄 수 있었기에 필수 메서드만 노출하도록 개선했습니다.ScreenCapturerVideoSource
가 더 이상VideoSource
를 상속하지 않으므로 이전에VideoSource
에서 제공하던 메서드는 제거되었습니다.
API 변경
삭제
ScreenCapturerVideoSource
class 1-to-1 callGroup callfun stop(reason: VideoSource.VideoSourceStopReason): Boolean
fun useDeviceRotation(): Boolean
Breaking change SendDataSessionListener
와 ReceiveDataSessionListener
의 인터페이스 변경
SendDataSessionListener
를OutboundDataSessionListener
로 이름을 변경했습니다.ReceiveDataSessionListener
를InboundDataSessionListener
로 이름을 변경했습니다.- 데이터 세션에 대한 실패 정보를 개선했습니다.
- 데이터 세션의 종료를 알리기 위한
onClosed
이벤트가OutboundDataSessionListener
및InboundDataSessionListener
에 추가되었습니다. - 관련 API가 변경되었습니다.
API 변경
변경
-
SendDataSessionListener
interface 1-to-1 callGroup call이전 버전 PlanetKit 5.5 class SendDataSessionListener
class OutboundDataSessionListener
fun onError( exception:PlanetKitException )
fun onError( errReason:PlanetKitDataSessionFailReason )
-
ReceiveDataSessionListener
interface 1-to-1 callGroup call이전 버전 PlanetKit 5.5 interface ReceiveDataSessionListener
interface InboundDataSessionListener
fun onError( exception:PlanetKitException )
fun onError( errReason:PlanetKitDataSessionFailReason )
추가
PlanetKitDataSessionFailReason
enum 1-to-1 callGroup callNONE
INTERNAL
NOT_INCOMING
ALREADY_EXIST
INVALID_ID
INVALID_TYPE
PlanetKitDataSessionClosedReason
enum class 1-to-1 callGroup callOutboundDataSessionListener
interface 1-to-1 callGroup callvoid onClosed(@NonNull PlanetKitOutboundDataSession dataSession, @NonNull PlanetKitDataSessionClosedReason closedReason)
InboundDataSessionListener
interface 1-to-1 callGroup callvoid onClosed(@NonNull PlanetKitInboundDataSession dataSession, @NonNull PlanetKitDataSessionClosedReason closedReason)
삭제
SendDataSessionListener
interface 1-to-1 callGroup callvoid onUnsupportedDataSession(@NonNull PlanetKitSendDataSession dataSession)
PlanetKitError
enum 1-to-1 callGroup callSESSION_FAIL_REASON_ALREADY_EXIST
SESSION_FAIL_REASON_INVALID_SESSION_TYPE
SESSION_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 변경
변경
-
PlanetKitCallParam
class 1-to-1 call이전 버전 PlanetKit 5.5 val stid: String
val appServerData: String
-
PlanetKitCallParam.Builder
class 1-to-1 call이전 버전 PlanetKit 5.5 fun stid(stid: String)
fun appServerData(appServerData: String)
-
PlanetKitConferenceParam
class 1-to-1 call이전 버전 PlanetKit 5.5 val stid: String
val appServerData: String
-
PlanetKitConferenceParam.Builder
class Group call이전 버전 PlanetKit 5.5 fun stid(stid: String)
fun appServerData(appServerData: String)
Breaking change 불필요한 API 제거
isHighPriorityAudio
와setAudioHighPrioritySend
가 제거되었습니다.- 관련 API가 제거되었습니다.
API 변경
삭제
PlanetKitConference
class Group callval isHighPriorityAudio: Boolean
fun setAudioHighPrioritySend( isHighPriority: Boolean, userData: Any? = null, callback: PlanetKitRequestCallback? = null ): Boolean
Breaking change PlanetKitIntent
제거
PlanetKitIntent
는localBroadCast
라이브러리에 의존하여 구현되었으나, 해당 라이브러리는 더 이상 사용되지 않습니다. 애플리케이션은CallListener
와ConferenceListener
의 구현을 사용하여 동일한 기능을 구현할 수 있습니다. 데모 앱은 동일한 기능을 구현하기 위해 다른 오픈 소스(org.greenrobot.eventbus
)를 적용하여 개발되었습니다.
API 변경
삭제
PlanetKitIntent
class 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 변경
변경
-
PlanetKitConference
class Group call이전 버전 PlanetKit 5.5 fun removePeerVideoView(peer: PlanetKitUser, view: PlanetKitVideoView)
fun removePeerVideoView(view: PlanetKitVideoView)
Enhancement isPeerAudioMuted
추가
- 1대1 통화에서 상대방의 오디오 음소거 상태 확인자가 추가되었습니다.
API 변경
추가
PlanetKitCall
class 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 변경
추가
CallListener
class 1-to-1 callfun onMyScreenShareStoppedByHold(call: PlanetKitCall)
ConferenceListener
class Group callfun onMyScreenShareStoppedByHold(conference: PlanetKitConference)
Enhancement 비디오 프레임 처리 성능을 최적화하기 위한 API 추가
- 애플리케이션에서 실제로 전송되는 것보다 더 많은 비디오 프레임을 생성할 수 있습니다. 이처럼 추가로 생성된 프레임은 전송을 건너뛰더라도 처리되므로 처리 오버헤드가 발생합니다. 직접
VideoSource
를 구현하는 경우 추가된 API를 활용하여 성능을 최적화하세요.
API 변경
추가
VideoSource
abstract class 1-to-1 callGroup callprotected fun postingFrameDataAvailable(nanoSecondsTimestamp: Long): Boolean
protected val isMaxFpsLimitEnabled: Boolean
protected val maxFpsLimit: Int
protected 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 변경
변경
-
ConferenceListener
class Group call이전 버전 PlanetKit 5.5 fun onJoined(conference: PlanetKitConference)
fun onConnected(conference: PlanetKitConference, isVideoHwCodecEnabled: Boolean, isVideoShareModeSupported: Boolean)
추가
PlanetKitCall
class 1-to-1 callfun setMyScreenShareVideoShareMode(videoShareMode: Boolean): Boolean
fun isMyScreenShareVideoShareModeEnabled(): Boolean
PlanetKitCallConnectedParam
data class 1-to-1 callval isVideoShareModeSupported: Boolean
PlanetKitConference
class Group callfun setMyScreenShareVideoShareMode(videoShareMode: Boolean): Boolean
fun isMyScreenShareVideoShareModeEnabled(): Boolean
Enhancement 클라우드 레코딩 지원
- 클라우드에 1대1 통화를 녹음하는 기능이 추가되었습니다.
- 이 기능을 활성화하려면 먼저 LINE Planet 팀에 문의하세요.
- 자세한 내용은 클라우드 통화 레코딩을 참조하세요.
API 변경
변경
-
PlanetKitCall
class 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)
추가
PlanetKitRecordOnCloudDeactivateReason
enum class 1-to-1 callCallListener
class 1-to-1 callfun onRecordOnCloudUpdated(call: PlanetKitCall, activated: Boolean, reason: PlanetKitRecordOnCloudDeactivateReason)
PlanetKitCall
class 1-to-1 callfun isRecordOnCloudActivated(): Boolean
PlanetKitMakeCallParam
data class 1-to-1 callval recordOnCloud: Boolean
PlanetKitMakeCallParam.Builder
class 1-to-1 callfun enableRecordOnCloud(value: Boolean)
Enhancement 사용 가능한 오디오 경로에 대한 실시간 업데이트 수신용 콜백 추가
- 이 API를 사용하면 오디오 장치의 연결 상태가 변경될 때 실시간으로 애플리케이션 UI를 업데이트할 수 있습니다.
API 변경
추가
PlanetKitConference
interface Group callfun setOnAudioRouteAvailableListChangeListener(listener: OnAudioRouteAvailableListChangeListener?)
PlanetKitCall
interface 1-to-1 callfun setOnAudioRouteAvailableListChangeListener(listener: OnAudioRouteAvailableListChangeListener?)
OnAudioRouteAvailableListChangeListener
interface 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 변경
추가
PlanetKitMakeCallParam
class 1-to-1 callval playEndToneRegardlessOfCallState: Boolean
PlanetKitMakeCallParam.Builder
class 1-to-1 callfun enablePlayEndToneRegardlessOfCallState(value: Boolean)
PlanetKitVerifyCallParam
class 1-to-1 callval playEndToneRegardlessOfCallState: Boolean
PlanetKitVerifyCallParam.Builder
class Group callfun enablePlayEndToneRegardlessOfCallState(value: Boolean)
PlanetKitConferenceParam
class Group callval playEndToneRegardlessOfConferenceState: Boolean
PlanetKitConferenceParam.Builder
class Group callfun enablePlayEndToneRegardlessOfConferenceState(value: Boolean)
API 변경 목록
변경
-
DefaultCameraVideoSource
class 1-to-1 callGroup call이전 버전 PlanetKit 5.5 class DefaultCameraVideoSource
class PlanetKitCameraManager
-
PlanetKitVerifyCallParam
class 1-to-1 call이전 버전 PlanetKit 5.5 val messageData: String
val cCParam: PlanetKitCCParam
val myVideoSendCapability: PlanetKitVideoCapability?
val myVideoSendCapability: PlanetKitVideoCapability
val myVideoReceiveCapability: PlanetKitVideoCapability?
val myVideoReceiveCapability: PlanetKitVideoCapability
-
PlanetKitMakeCallParam
class 1-to-1 call이전 버전 PlanetKit 5.5 val myVideoSendCapability: PlanetKitVideoCapability?
val myVideoSendCapability: PlanetKitVideoCapability
val myVideoReceiveCapability: PlanetKitVideoCapability?
val myVideoReceiveCapability: PlanetKitVideoCapability
-
PlanetKit
class 1-to-1 callGroup call이전 버전 PlanetKit 5.5 fun getConference(sid:Int): PlanetKitConference?
fun getConference(): PlanetKitConference?
val userAgent: String
OnInitializeCompleteListener.onComplete(isSuccessful, isVideoHwCodecSupport, userAgent)
val isVideoHwCodecSupport: Boolean
OnInitializeCompleteListener.onComplete(isSuccessful, isVideoHwCodecSupport, userAgent)
fun initialize(config: PlanetKitConfiguration)
fun initialize(config: PlanetKitConfiguration, listener: OnInitializeCompleteListener)
fun makeCall(param: PlanetKitCallParam, makeCallListener: MakeCallListener): PlanetKitCallResult
fun makeCall(param: PlanetKitMakeCallParam, makeCallListener: MakeCallListener): PlanetKitCallResult
fun getDefaultCameraVideoSource(): DefaultCameraVideoSource
fun getCameraManager(): PlanetKitCameraManager
-
PlanetKitLogLevel
enum class 1-to-1 callGroup call이전 버전 PlanetKit 5.5 VERBOSE
DETAILED
DEBUG
DETAILED
INFO
SIMPLE
WARN
SIMPLE
ERROR
SIMPLE
CRITICAL
SIMPLE
NONE
SILENT
-
PlanetKitVideoPauseReason
enum class 1-to-1 callGroup call이전 버전 PlanetKit 5.5 UNKNOWN
UNDEFINED
-
AudioSink
abstract class 1-to-1 callGroup call이전 버전 PlanetKit 5.5 protected fun receiveSpeakerData(sampleRate: Int, format: PlanetKitAudioSampleFormat, sampleCount: Int): AudioFrame
protected fun getFrameData(sampleRate: Int, format: PlanetKitAudioSampleFormat, sampleCount: Int): AudioFrame
protected fun putAECReferenceData(data: AudioFrame): Boolean
protected fun putUserAcousticEchoCancellerReference(data: AudioFrame): Boolean
-
PlanetKitCall
class 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): Boolean
fun hold(reason: String? = null, callback: PlanetKitRequestCallback? = null): Boolean
fun hold(pauseRecv:Boolean, callback: PlanetKitRequestCallback? = null): Boolean
fun hold(reason:String? = null, callback: PlanetKitRequestCallback? = null): Boolean
fun hold(pauseRecv:Boolean, reason:String? = null): Boolean
fun hold(reason:String? = null, callback: PlanetKitRequestCallback? = null): Boolean
fun hold(pauseRecv:Boolean): Boolean
fun hold(reason:String? = null, callback: PlanetKitRequestCallback? = null): Boolean
fun unhold(): Boolean
fun unhold(userData:Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
val isDataSessionSupported: Boolean
CallListener.onConnected
ConferenceListener.onConnected
fun endCallWithNormalUserCode(userCode: String)
fun endCall(userReleasePhrase: String)
fun endCallWithErrorUserCode(userCode: String)
fun endCallWithError(userReleasePhrase: String)
fun unHold(userData:Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
fun unhold(userData:Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
fun enableVideo(userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
fun enableVideo(initialMyVideoState: PlanetKitInitialMyVideoState = PlanetKitInitialMyVideoState.RESUME, userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
fun setVideoSource(videoSource: VideoSource?)
fun setVideoSource(videoSource: PlanetKitCustomVideoSource)
,fun clearVideoSource()
-
PlanetKitConferencePubSubgroupUpdateParam
data class Group call이전 버전 PlanetKit 5.5 data class UpdatePeerData
data class PlanetKitConferenceSubgroupUpdatedPeer
data class PlanetKitConferencePubSubgroupUpdateParam
data class PlanetKitConferencePublicSubgroupUpdateParam
-
PlanetKitSubgroup
class Group call이전 버전 PlanetKit 5.5 fun getPeerVolume(user:PlanetKitUser):Int
fun getPeerVolumeLevelSetting(user: PlanetKitUser): Int
val 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?
-
PlanetKitSubgroupManager
class 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?): Boolean
boolean 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)
-
PlanetKitReceiveDataSession
class 1-to-1 callGroup call이전 버전 PlanetKit 5.5 class PlanetKitReceiveDataSession
class PlanetKitInboundDataSession
-
PlanetKitSendDataSession
class 1-to-1 callGroup call이전 버전 PlanetKit 5.5 class PlanetKitSendDataSession
class PlanetKitOutboundDataSession
-
PlanetKitPeerView.PeerViewListener
class 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)
-
ReceiveDataSessionListener
interface 1-to-1 callGroup call이전 버전 PlanetKit 5.5 interface ReceiveDataSessionListener
interface InboundDataSessionListener
fun onError( exception:PlanetKitException )
fun onError( errReason:PlanetKitDataSessionFailReason )
-
PlanetKitConferencePeer
class Group call이전 버전 PlanetKit 5.5 val videoStatus: PlanetKitVideoStatus
fun getVideoStatus(subgroupName: String?): VideoStatusResult
val audioVolume: Int?
fun getAudioVolumeLevelSetting(subgroupName: String?): AudioVolumeResult
val screenSharingSubgroupName: String?
val currentScreenShareSubgroupName: String?
val isDataSessionSupport: Boolean
val isDataSessionSupported: Boolean
-
ConferenceListener
interface 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(<br> conference:PlanetKitConference,<br> peer:PlanetKitConferencePeerInfo<br>)
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)
-
VerifyListener
interface 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)
-
MakeCallListener
interface 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 )
-
AcceptCallListener
interface 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 )
-
CallListener
class 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)
-
PlanetKitStatistics
class 1-to-1 callGroup call이전 버전 PlanetKit 5.5 val screenSharingSend:ScreenSharingSend?
val myScreenShare:MyScreenShare?
val screenSharingRecvs: List<ScreenSharingRecv>
val peersScreenShare: List<PeerScreenShare>
data class ScreenSharingSend
data class MyScreenShare
data class ScreenSharingRecv
data class PeerScreenShare
val audioSend: AudioSend
val myAudio: MyAudio
val audioRecv: AudioRecv
val peerAudio: PeerAudio
val videoSend:VideoSend?
val myVideo:MyVideo?
val videoRecvs: List<VideoRecv>
val peersVideo: List<PeerVideo>
data class AudioSend
data class MyAudio
data class AudioRecv
data class PeerAudio
data class VideoSend
data class MyVideo
data class VideoRecv
data class PeerVideo
-
PlanetKitScreenShareState
class 1-to-1 callGroup call이전 버전 PlanetKit 5.5 class PlanetKitScreenSharingState
class PlanetKitScreenShareState
-
SendDataSessionListener
interface 1-to-1 callGroup call이전 버전 PlanetKit 5.5 class SendDataSessionListener
class OutboundDataSessionListener
fun onError( exception:PlanetKitException )
fun onError( errReason:PlanetKitDataSessionFailReason )
-
PlanetKitConferenceParam.Builder
class Group call이전 버전 PlanetKit 5.5 fun stid(stid: String)
fun appServerData(appServerData: String)
fun preferredVideoReceiveHwCodec(isPrefer: Boolean)
fun preferredPeerVideoHwCodec(isPrefer: Boolean)
-
PlanetKitConferenceParam
class 1-to-1 call이전 버전 PlanetKit 5.5 val stid: String
val appServerData: String
val preferredVideoReceiveHwCodec: Boolean
val preferredPeerVideoHwCodec: Boolean
val myVideoSendCapability: PlanetKitVideoCapability?
val myVideoSendCapability: PlanetKitVideoCapability
-
PlanetKitCallParam
class 1-to-1 call이전 버전 PlanetKit 5.5 data class PlanetKitCallParam
data class PlanetKitMakeCallParam
val stid: String
val appServerData: String
val callInitData: String
val callStartMessage: PlanetKitCallStartMessage?
val isResponderPrepare: Boolean
val useResponderPreparation: Boolean
-
PlanetKitCallParam.Builder
class 1-to-1 call이전 버전 PlanetKit 5.5 class PlanetKitCallParam.Builder
class PlanetKitMakeCallParam.Builder
fun stid(stid: String)
fun appServerData(appServerData: String)
fun callInitData(callInitData: String)
fun callStartMessage(callStartMessage: PlanetKitCallStartMessage)
fun responderPrepare(isResponderPrepare: Boolean)
fun responderPreparation(useResponderPreparation: Boolean)
-
PlanetKitConfiguration.Builder
class 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 )
-
PlanetKitConference
class 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 :Boolean
PlanetKitSubgroupManager::boolean setPeerVolumeLevelSetting(@NonNull PlanetKitUser peer, @IntRange(from = 0, to = 110) int talkerVolume, @Nullable Object userData, @Nullable PlanetKitRequestCallback callback)
fun leave()
fun leaveConference()
val maxPeerVideoReceiveCount : Int
val peersVideoMaxCount : Int
val maxPeerScreenShareReceiveCount : Int
val peersScreenShareMaxCount : Int
fun unHold(userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
fun unhold(userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
fun changeMyScreenShareGroup(toSubgroupName: String?, userData:Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
fun changeMyScreenShareDestination(toSubgroupName: String, userData:Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
fun changeMyScreenShareDestinationToMainRoom(userData:Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
fun enableVideo(userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
fun enableVideo(initialMyVideoState: PlanetKitInitialMyVideoState = PlanetKitInitialMyVideoState.RESUME, userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
fun setVideoSource(videoSource: VideoSource?)
fun setVideoSource(videoSource: PlanetKitCustomVideoSource)
,fun clearVideoSource()
-
PlanetKitSession
interface 1-to-1 callGroup call이전 버전 PlanetKit 5.5 interface PlanetKitSession
interface PlanetKitCall
,interface PlanetKitConference
sid: Int
instanceId: Int
val isMicMuted: Boolean
val isMyAudioMuted: Boolean
val isAllPeersAudioPlayoutSilenced: Boolean
PlanetKitCall::val isPeerAudioSilenced: Boolean
PlanetKitConference::val isPeersAudioSilenced: Boolean
val isSendVideoHwCodecEnabled: Boolean
CallListener.onConnected
ConferenceListener.onConnected
fun setMicMute(isMute: Boolean, userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
fun muteMyAudio(isMute: Boolean, userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
fun startAECReferenceData(userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
fun startUserAcousticEchoCancellerReference(userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
fun stopAECReferenceData(userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
fun stopUserAcousticEchoCancellerReference(userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
fun requestPeerMute(isMute: Boolean, userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
PlanetKitCall::fun requestPeerMute(isMute: Boolean, userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
PlanetKitConference::fun requestPeersMute(isMute: Boolean, userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
fun requestPeerMute(isMute: Boolean): Boolean
PlanetKitCall::fun requestPeerMute(isMute: Boolean): Boolean
PlanetKitConference::fun requestPeersMute(isMute: Boolean): Boolean
fun silenceAllPeersAudioPlayout(isSilence: Boolean, userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
PlanetKitCall::fun silencePeerAudio(isSilence: Boolean, userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
PlanetKitConference::fun silencePeersAudio(isSilence: Boolean, userData: Any? = null, callback: PlanetKitRequestCallback? = null): 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 unsupportedReceiveDataSession(streamId: Int): Boolean
fun unsupportInboundDataSession(streamId: Int): Boolean
fun 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?
-
PlanetKitAudioVolume
class 1-to-1 callGroup call이전 버전 PlanetKit 5.5 class PlanetKitAudioVolume
class PlanetKitAudioDescription
val averageVolume: Int
val averageVolumeLevel: Int
val subgroupName:String?
val sentSubgroupName:String?
-
PlanetKitAudioVolumes
class 1-to-1 callGroup call이전 버전 PlanetKit 5.5 class PlanetKitAudioVolumes
class PlanetKitAudioDescriptions
-
PlanetKitVerifyCallParam.Builder
class 1-to-1 call이전 버전 PlanetKit 5.5 fun messageData(messageData: String)
fun cCParam(cCParam: PlanetKitCCParam)
-
PlanetKitConferencePeerInfo
class Group call이전 버전 PlanetKit 5.5 val serviceId: String
PlanetKitConferencePeer::val serviceId: String
val user: PlanetKitUser
PlanetKitConferencePeer::val user: PlanetKitUser
val userId: String
PlanetKitConferencePeer::val userId: String
var videoSubgroupName: String?
PlanetKitConferencePeer::val currentVideoSubgroupName: String?
val mediaType:PlanetKitMediaType
PlanetKitConferencePeer::val mediaType:PlanetKitMediaType
val subgroupNames: Set<String>
PlanetKitConferencePeer::val subgroupNames:Set<String>
val isDataSessionSupport: Boolean
PlanetKitConferencePeer::val isDataSessionSupported: Boolean
val isAudioMuted:Boolean: Boolean
PlanetKitConferencePeer::val isAudioMuted: Boolean
val isOnHold:Boolean
PlanetKitConferencePeer::val holdStatus: HoldStatus
val displayName:String?
PlanetKitConferencePeer::val displayName:String?
val userEquipmentType: PlanetKitUserEquipmentType
PlanetKitConferencePeer::val userEquipmentType: PlanetKitUserEquipmentType
val sipLocalIP: String?
PlanetKitConferencePeer::val sipLocalIP: String?
val sipDeviceInfo:String?
PlanetKitConferencePeer::val sipDeviceInfo:String?
fun isSameMember(member:PlanetKitConferencePeerInfo): Boolean
PlanetKitConferencePeer::fun isSameMember(member:PlanetKitConferencePeer):Boolean
-
PlanetKitConferenceExceptionMessage
class Group call이전 버전 PlanetKit 5.5 val peer: PlanetKitConferencePeerInfo
val peer: PlanetKitConferencePeer
-
PlanetKitConferencePeerHoldReceivedParam
class Group call이전 버전 PlanetKit 5.5 val peer:PlanetKitConferencePeerInfo
val peer:PlanetKitConferencePeer
-
PlanetKitConferencePeerSetSharedContentsParam
class Group call이전 버전 PlanetKit 5.5 val peer:PlanetKitConferencePeerInfo
val peer:PlanetKitConferencePeer
-
OnNoVideoSourceListener
class 1-to-1 callGroup call이전 버전 PlanetKit 5.5 fun onNoVideoSource(session: PlanetKitSession)
fun onMyVideoNoSourceDetected(call: PlanetKitCall)
,fun onMyVideoNoSourceDetected(conference: PlanetKitConference)
추가
ConferenceListener
class Group callfun onMyAudioDescriptionUpdated(conference: PlanetKitConference, audioDescription: PlanetKitAudioDescription)
fun onPeersAudioDescriptionUpdated(conference: PlanetKitConference, peersAudioDescription:PlanetKitAudioDescriptions)
fun onMyScreenShareStoppedByHold(conference: PlanetKitConference)
fun removePeerVideoView(view: PlanetKitVideoView)
PlanetKitCCParam
class 1-to-1 callval peerId: String
val peerServiceId: String
val mediaType: PlanetKitMediaType
fun create(messageData: String): PlanetKitCCParam?
PlanetKitConferencePeer
class Group callval screenShareSubgroupName:String?
enum class PeerGetFailReason
data class VideoStatusResult
data class ScreenShareStateResult
data class AudioVolumeResult
data class HoldStatus
fun createPeerControl(): PlanetKitPeerControl?
PlanetKitPeerView
class Group callPlanetKitMyMediaStatusListener
interface 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()
PlanetKitDisconnectedParam
data class 1-to-1 callGroup callval reason: PlanetKitDisconnectReason
val source: PlanetKitDisconnectSource
val byRemote: Boolean
val userCode: String?
PlanetKitStartFailReason
enum 1-to-1 callGroup callTOO_LONG_APP_SERVER_DATA
NOT_INITIALIZED
PlanetKitDisconnectReason
enum 1-to-1 callGroup callINTERNAL_ERROR
USER_ERROR
INTERNAL_KIT_ERROR
AUDIO_TX_NO_SRC
UNAVAILABLE_NETWORK
APP_DESTROY
SYSTEM_SLEEP
SYSTEM_LOGOFF
SERVICE_ACCESS_TOKEN_ERROR
MTU_EXCEEDED
APP_SERVER_DATA_ERROR
MAX_CALL_TIME_EXCEEDED
SERVICE_TOO_MANY_REQUESTS
DESKTOP_SCREEN_LOCKED
PlanetKitDisconnectSource
enum 1-to-1 callGroup callUNDEFINED
CALLEE
CALLER
PARTICIPANT
CLOUD_SERVER
APP_SERVER
PlanetKitCall
class 1-to-1 callval isPeerAudioMuted:Boolean
val myUseResponderPreparation: Boolean
val myCallStartMessage: PlanetKitCallStartMessage?
val peerUseResponderPreparation: Boolean
val peerCallStartMessage: PlanetKitCallStartMessage?
fun acceptCall( listener: AcceptCallListener, useResponderPreparation: Boolean = false )
fun acceptCall( listener: AcceptCallListener, callStartMessage: PlanetKitCallStartMessage, useResponderPreparation: Boolean = false )
fun setMyScreenShareVideoShareMode(videoShareMode: Boolean): Boolean
fun isMyScreenShareVideoShareModeEnabled(): Boolean
fun isRecordOnCloudActivated(): Boolean
fun setOnAudioRouteAvailableListChangeListener(listener: OnAudioRouteAvailableListChangeListener?)
fun getMyMediaStatus() : PlanetKitMyMediaStatus?
PlanetKitCallConnectedParam
data class 1-to-1 callval isDataSessionSupported: Boolean
val isVideoHwCodecEnabled: Boolean
val peerStartMessage: PlanetKitCallStartMessage?
val isInResponderPreparation: Boolean
val shouldFinishPreparation: Boolean
val isVideoShareModeSupported: Boolean
PlanetKitCallStartMessage
data class 1-to-1 callval data: String
PlanetKitConference
class Group callfun getConferencePeer(peerUser: PlanetKitUser): PlanetKitConferencePeer?
fun getConferencePeer(peerId: String, peerServiceId: String): PlanetKitConferencePeer?
fun removePeerScreenShareView(view: PlanetKitVideoView)
val isOnHold: Boolean
fun setMyScreenShareVideoShareMode(videoShareMode: Boolean): Boolean
fun isMyScreenShareVideoShareModeEnabled(): Boolean
fun setOnAudioRouteAvailableListChangeListener(listener: OnAudioRouteAvailableListChangeListener?)
fun getMyMediaStatus() : PlanetKitMyMediaStatus?
PlanetKitMyView
class 1-to-1 callGroup callfun fillColor(@ColorInt color : Int)
fun setMe(conference: PlanetKitConference, myViewListener: MyViewListener? =null, userData:Any? =null, ) : Boolean
fun setMe(call: PlanetKitCall, myViewListener: MyViewListener? =null, userData:Any?=null): Boolean
var scaleType : PlanetKitViewScaleType
var blurFactor : Int
val myVideoStatus: PlanetKitVideoStatus
val myVideoSubgroupName: String?
val myScreenShareState: PlanetKitScreenShareState
val myScreenShareSubgroupName: String?
val myDisplayName: String?
val myEquipmentType: PlanetKitUserEquipmentType
val isOnHold: Boolean?
val isMyAudioMuted: Boolean?
val me:PlanetKitUser?
fun clearMe()
fun resetFirstFrameRendered()
interface MyViewListener
var mirroredType: PlanetKitMirroredType
PlanetKitMyView.MyViewListener
interface 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()
PlanetKitPeerScreenShareView
class Group callval isScreenShareStarted : Boolean
var scaleType : PlanetKitViewScaleType
var blurFactor : Int
var mirroredType: PlanetKitMirroredType
val peer : PlanetKitConferencePeer?
fun fillColor(@ColorInt color : Int)
fun setPeer( session: PlanetKitConference, newConferencePeer: PlanetKitConferencePeer, peerScreenShareViewListener: PeerScreenShareViewListener? =null, userData:Any?=null, ) : Boolean
fun clearPeer()
fun startScreenShare( subgroupName: String? = null, callback: PlanetKitVideoRequestCallback?= null, userData: Any?=null, ) : Boolean
fun stopScreenShare(userData: Any?=null, callback: PlanetKitVideoRequestCallback?=null) : Boolean
interface PeerScreenShareViewListener
PlanetKitPeerScreenShareView.PeerScreenShareViewListener
interface Group callfun onInitialized(peer: PlanetKitConferencePeer, userData: Any?)
fun onRenderFirstFrame(peer: PlanetKitConferencePeer)
fun onScreenShareUpdated(peer: PlanetKitConferencePeer, state: PlanetKitScreenShareState, subgroupName: String?)
fun onDisconnected(peer: PlanetKitConferencePeer)
PlanetKitDataSessionFailReason
enum 1-to-1 callGroup callNONE
INTERNAL
NOT_INCOMING
ALREADY_EXIST
INVALID_ID
INVALID_TYPE
PlanetKitConferenceParam
class Group callval playEndToneRegardlessOfConferenceState: Boolean
val enableAudioDescription: Boolean
val audioDescriptionInterval:Long
PlanetKitConferenceParam.Builder
class Group callfun enableAudioDescription(enable:Boolean)
fun setAudioDescriptionInterval(intervalMS:Long)
fun enablePlayEndToneRegardlessOfConferenceState(value: Boolean)
fun setInitialMyVideoState(value: PlanetKitInitialMyVideoState)
CallListener
class 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)
PlanetKitSubgroup
class Group callval attribute: PlanetKitSubgroupAttribute?
val isSendingScreenShare: Boolean
PlanetKit
class 1-to-1 callGroup callfun interface OnInitializeCompleteListener
VideoSource
abstract class 1-to-1 callGroup callprotected fun postingFrameDataAvailable(nanoSecondsTimestamp: Long): Boolean
protected val isMaxFpsLimitEnabled: Boolean
protected val maxFpsLimit: Int
protected abstract fun onMaxFpsLimitUpdated(isLimitEnabled: Boolean, maxFps: Int)
PlanetKitSubgroupAttribute
data class Group callPlanetKitMakeCallParam
data class 1-to-1 callval enableAudioDescription: Boolean
val audioDescriptionInterval:Long
val recordOnCloud: Boolean
val playEndToneRegardlessOfCallState: Boolean
PlanetKitMakeCallParam.Builder
class 1-to-1 callfun enableAudioDescription(enable:Boolean)
fun setAudioDescriptionInterval(intervalMS:Long)
fun enableRecordOnCloud(value: Boolean)
fun enablePlayEndToneRegardlessOfCallState(value: Boolean)
fun setInitialMyVideoState(value: PlanetKitInitialMyVideoState)
PlanetKitRecordOnCloudDeactivateReason
enum class 1-to-1 callPlanetKitLogSizeLimit
enum class 1-to-1 callGroup callPlanetKitConfiguration.Builder
class 1-to-1 callGroup callfun setLogSizeLimit(logSizeLimit: PlanetKitLogSizeLimit)
PlanetKitVerifyCallParam
class 1-to-1 callval enableAudioDescription: Boolean
val audioDescriptionInterval:Long
val playEndToneRegardlessOfCallState: Boolean
PlanetKitVerifyCallParam.Builder
class 1-to-1 callfun enableAudioDescription(enable:Boolean)
fun setAudioDescriptionInterval(intervalMS:Long)
fun enablePlayEndToneRegardlessOfCallState(value: Boolean)
PlanetKitVideoView
class 1-to-1 callGroup callvar mirroredType: PlanetKitMirroredType
PlanetKitMirroredType
enum class 1-to-1 callGroup callPlanetKitDataSessionClosedReason
enum class 1-to-1 callGroup callOutboundDataSessionListener
interface 1-to-1 callGroup callvoid onClosed(@NonNull PlanetKitOutboundDataSession dataSession, @NonNull PlanetKitDataSessionClosedReason closedReason)
InboundDataSessionListener
interface 1-to-1 callGroup callvoid onClosed(@NonNull PlanetKitInboundDataSession dataSession, @NonNull PlanetKitDataSessionClosedReason closedReason)
PlanetKitPeerControl
class Group callval peer: PlanetKitConferencePeer
fun startScreenShare(subgroupName: String? = null, callback: PlanetKitVideoRequestCallback?= null, userData: Any?=null) : Boolean
fun stopScreenShare(userData: Any?=null, callback: PlanetKitVideoRequestCallback?=null) : Boolean
fun startVideo(resolution: PlanetKitVideoResolution, subgroupName: String? = null, callback: PlanetKitVideoRequestCallback?= null, resolutionCallback: PlanetKitPeerVideoResolutionCallback?=null, userData: Any?=null) : Boolean
fun stopVideo(userData: Any?=null, callback: PlanetKitVideoRequestCallback?=null) : Boolean
fun register(peerControlListener: PeerControlListener, userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
fun unregister(userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
PlanetKitPeerControl.PeerControlListener
interface 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)
PlanetKitMyMediaStatus
class 1-to-1 callGroup callval myVideoStatus: PlanetKitVideoStatus
val myVideoSubgroupName: String?
val myScreenShareState: PlanetKitScreenShareState
val myScreenShareSubgroupName: String?
val isMyAudioMuted: Boolean
fun addHandler(listener: PlanetKitMyMediaStatusListener, userData:Any?, callback: PlanetKitRequestCallback)
fun removeHandler(listener: PlanetKitMyMediaStatusListener, userData:Any?, callback: PlanetKitRequestCallback)
OnAudioRouteAvailableListChangeListener
interface 1-to-1 callGroup callfun onAudioRouteAvailableListChanged(connectedList: List<PlanetKitAudioRoute>)
PlanetKitCameraManager
interface 1-to-1 callGroup callval resolution: PlanetKitVideoResolution
var cameraType: PlanetKitCameraType
val isStarted: Boolean
val fps: Int
fun setStateListener(listener: StateListener?)
fun setManualResolution(resolution: PlanetKitVideoResolution)
fun setDefaultResolution()
fun setVirtualBackgroundPlugin(plugin: PlanetKitPluginVirtualBackground) :Boolean
fun addCameraTypeChangedListener(listener: CameraTypeChangedListener)
fun removeCameraTypeChangedListener(listener: CameraTypeChangedListener)
fun setVideoSourceInterceptor(interceptor: PlanetKitVideoInterceptor?)
fun startPreview(view: PlanetKitVideoView): Boolean
fun stopPreview(view: PlanetKitVideoView): Boolean
fun enableDumpFrame(enable: Boolean)
PlanetKitCameraManager.StateListener
interface 1-to-1 callGroup callfun onStart()
fun onStop()
fun onError(@ErrorCode code: Int)
PlanetKitCameraManager.CameraTypeChangedListener
interface 1-to-1 callGroup callfun onChanged(isFrontCamera: Boolean)
PlanetKitPluginVirtualBackground
interface 1-to-1 callGroup callfun getCurrentVirtualBackgroundType(): VirtualBackgroundType
fun setVirtualBackgroundWithBlur(@IntRange(from = 1, to = 25) radius: Int)
fun setVirtualBackgroundWithImage(inputImage: Bitmap)
fun clearVirtualBackground()
PlanetKitPluginVirtualBackground.VirtualBackgroundType
enum class 1-to-1 callGroup callNONE(0)
BLUR(1)
IMAGE(2)
PlanetKitPluginProviderVirtualBackground
class 1-to-1 callGroup callfun getPlugin(): PlanetKitPluginVirtualBackground
PlanetKitInitialMyVideoState
enum class 1-to-1 callGroup callRESUME(0)
PAUSE(1)
PlanetKitCustomVideoSource
abstract class 1-to-1 callGroup callvar maxFps: Int? = null
fun addMyVideoView(view: PlanetKitVideoView)
fun removeMyVideoView(view: PlanetKitVideoView)
protected fun postFrameData(frameData: FrameData): Boolean
protected fun postingFrameDataAvailable(): Boolean
abstract fun onMaxFpsLimitUpdated(isLimitEnabled: Boolean, maxFps: Int)
PlanetKitCustomVideoSource.FrameData
abstract class 1-to-1 callGroup callPlanetKitCameraResolution
enum class 1-to-1 callGroup callQVGA
VGA
HD
삭제
ScreenCapturerVideoSource
class 1-to-1 callGroup callfun stop(reason: VideoSource.VideoSourceStopReason): Boolean
fun useDeviceRotation(): Boolean
PlanetKitMediaDisableReason
enum class 1-to-1 callGroup callNOT_SUPPORT
NO_MEDIA_SRC
NO_RECV_MEDIA
CameraVideoSource
class 1-to-1 callGroup callPlanetKitVideoView
class 1-to-1 callGroup calloverride fun getRenderView(): AndromedaRenderView
PlanetKitVerifyCallParam.Builder
class 1-to-1 callfun myScreenShareSendCapability(capability: PlanetKitVideoCapability)
PlanetKitVerifyCallParam
data class 1-to-1 callval myScreenShareSendCapability: PlanetKitVideoCapability?
PlanetKitConferenceRoomType
enum class Group callPlanetKitMakeCallParam.Builder
class 1-to-1 callfun myScreenShareSendCapability(capability: PlanetKitVideoCapability)
PlanetKitMakeCallParam
data class 1-to-1 callval myScreenShareSendCapability: PlanetKitVideoCapability?
SendDataSessionListener
interface 1-to-1 callGroup callvoid onUnsupportedDataSession(@NonNull PlanetKitSendDataSession dataSession)
PlanetKitConferenceParam
class Group callval apiKey: String?
val roomType: PlanetKitConferenceRoomType
val myScreenShareSendCapability: PlanetKitVideoCapability?
val disconnectOnBadNetwork: Boolean
PlanetKitConferenceParam.Builder
class Group callfun apiKey(apiKey: String)
fun roomType(roomType: PlanetKitConferenceRoomType)
fun myScreenShareSendCapability(capability: PlanetKitVideoCapability)
fun disconnectOnBadNetwork(disconnectOnBadNetwork: Boolean)
PlanetKitCallParam.Builder
class 1-to-1 callfun apiKey(apiKey: String)
PlanetKitCallParam
class 1-to-1 callval apiKey: String?
PlanetKitCallInitData
class 1-to-1 callPlanetKitError
enum 1-to-1 callGroup callSESSION_FAIL_REASON_ALREADY_EXIST
SESSION_FAIL_REASON_INVALID_SESSION_TYPE
SESSION_FAIL_REASON_FAILED_TO_MAKE_DATA_SESSION
PlanetKitConfiguration.Builder
class 1-to-1 callGroup callfun logToConsole( isEnabled: Boolean )
PlanetKitConference
class Group callfun initialize(context: Context)
val memberVolumes: PlanetKitAudioVolumes?
val isHighPriorityAudio: Boolean
fun sendShortData( targetUsers: List<PlanetKitUser>, type: String, shortData: ByteArray, userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
fun sendShortData( targetUsers: List<PlanetKitUser>, type: String, shortData: ByteArray): Boolean
fun setAudioHighPrioritySend( isHighPriority: Boolean, userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
val roomType: PlanetKitConferenceRoomType
PlanetKitCall
class 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()
PlanetKitLogStorage
class 1-to-1 callGroup callPlanetKitLogStorageType
enum 1-to-1 callGroup callPlanetKitConferencePeer
class Group callvar audioSubgroupName: String?
var audioTaggedSubgroupName: String?
PlanetKitSession
class 1-to-1 callGroup callval myVolume: PlanetKitAudioVolume
PlanetKitIntent
class 1-to-1 callPlanetKitStartFailReason
enum 1-to-1 callGroup callKIT_CALL_INIT_DATA_INVALID_SIZE
PlanetKitDisconnectReason
enum 1-to-1 callGroup callLOCAL_MIC_NO_SRC
REMOTE_MIC_NO_SRC
LOCAL_INTERNAL_ERROR
REMOTE_INTERNAL_ERROR
LOCAL_USER_ERROR
REMOTE_USER_ERROR
LOCAL_INTERNAL_KIT_ERROR
REMOTE_INTERNAL_KIT_ERROR
BAD_NETWORK_IN_CONFERENCE
UNAVAILABLE_NETWORK_IN_CALL
SERVICE_APIKEY_ERROR
WRONG_ROOM_ATTRIBUTE
PlanetKitSubgroupManager
class Group callboolean tagMainRoomVideoSend(@Nullable String subgroupName, @Nullable java.lang.Object userData, @Nullable PlanetKitRequestCallback callback)
PlanetKitSubgroup getMyTagVideoSubgroup()
PlanetKitConferencePeerInfo
class Group callvar videoTaggedSubgroupName: String?
DefaultCameraVideoSource
class 1-to-1 callGroup call