릴리스 노트
Android용 PlanetKit 7.0의 릴리스 노트입니다.
PlanetKit 7.0
릴리스 일자: 2026-04-24
커스텀 오디오 싱크 개선
기존 AudioSink 인터페이스를 더 간결한 PlanetKitCustomAudioSink 클래스로 대체했습니다. 이제 오디오 처리 애플리케이션에서 커스텀 오디오 싱크를 더 간단하게 구현할 수 있습니다.
API
변경
-
PlanetKitCallinterface 1-to-1 call이전 버전 PlanetKit 7.0.0 fun setAudioSink(audioSink: AudioSink?)fun setCustomAudioSink(audioSink: PlanetKitCustomAudioSink),fun clearCustomAudioSink() -
PlanetKitConferenceinterface Group call이전 버전 PlanetKit 7.0.0 fun setAudioSink(audioSink: AudioSink?)fun setCustomAudioSink(audioSink: PlanetKitCustomAudioSink),fun clearCustomAudioSink()
추가
PlanetKitCustomAudioSinkclass 1-to-1 callGroup callprotected fun getFrameData(sampleRate: PlanetKitAudioSampleRate, sampleType: PlanetKitAudioSampleType, sampleCount: Int): AudioFrameprotected fun putUserAcousticEchoCancellerReference(data: AudioFrame): Boolean
PlanetKitCallinterface 1-to-1 callfun clearCustomAudioSink()
PlanetKitConferenceinterface Group callfun clearCustomAudioSink()
삭제
AudioSinkclass 1-to-1 callGroup callDefaultSpeakerAudioSinkclass 1-to-1 callGroup call
예제 코드
object CustomAudioSink : PlanetKitCustomAudioSink() {
override fun putFrameData(frame: AudioFrame) {
// Process audio frame data
val processedData = processAudioFrame(frame)
// Use acoustic echo canceller reference if needed
putUserAcousticEchoCancellerReference(frame)
}
}
// Set custom audio sink
call.setCustomAudioSink(CustomAudioSink)
// Clear when done
call.clearCustomAudioSink()
pauseMyVideo()에서 reason 파라미터 제거
pauseMyVideo 메서드에서 reason 파라미터를 제거했습니다.
- 사용자가 직접 비디오를 일시 중지하는 경우 그 이유는 항상 암묵적으로 "by user"이므로
reason파라미터가 필요하지 않습니다. reason파라미터를 제거하면서 API가 단순해졌고,reason에 어떤 값을 사용해야 하는지 고민할 필요가 없어졌습니다.
API
변경
-
PlanetKitCallinterface 1-to-1 call이전 버전 PlanetKit 7.0.0 fun pauseMyVideo(reason: PlanetKitVideoPauseReason, userData: Any?, callback: PlanetKitRequestCallback?): Booleanfun pauseMyVideo(userData: Any?, callback: PlanetKitRequestCallback?): Boolean -
PlanetKitConferenceinterface Group call이전 버전 PlanetKit 7.0.0 fun pauseMyVideo(reason: PlanetKitVideoPauseReason, userData: Any?, callback: PlanetKitRequestCallback?): Booleanfun pauseMyVideo(userData: Any?, callback: PlanetKitRequestCallback?): Boolean
CallListener 인터페이스 개선
1대1 통화에서 사용하는 CallListener 인터페이스의 상속 구조를 개선했습니다.
- 기존에는
VerifyCallListener,AcceptCallListener,MakeCallListener가 모든 통화 관련 콜백 메서드를 포함한 기반CallListener인터페이스를 상속했습니다. 이로 인해 특정 용도에서는 실제로 호출되지 않는 메서드(유효하지 않은 메서드)까지 포함되는 문제가 발생해 사용자가 혼란스럽게 느낄 수 있었습니다. - 이제 각 리스너(
VerifyCallListener,AcceptCallListener,MakeCallListener)는 자신의 목적에 맞는 유효한 메서드만 제공합니다.
API
변경
-
VerifyListenerinterface 1-to-1 call이전 버전 PlanetKit 7.0.0 interface VerifyListener: CallListenerinterface VerifyListener
삭제
CallListenerinterface 1-to-1 callfun onVerified(call: PlanetKitCall, peerStartMessage: PlanetKitCallStartMessage?, peerUseResponderPreparation: Boolean)fun onWaitConnected(call: PlanetKitCall)
PlanetKitCameraManager.CameraTypeChangedListener 인터페이스 개선
PlanetKitCameraManager.CameraTypeChangedListener는 이제 boolean 플래그 대신 enum 기반의 카메라 타입 감지를 사용합니다.
- 이제 전면 및 후면 카메라뿐 아니라 외부 USB 카메라도 지원할 수 있습니다.
- 카메라 전환에 대한 더 상세한 정보를 제공하며, 향후 추가될 카메라 타입을 지원하기도 더 쉬워졌습니다.
API
변경
-
PlanetKitCameraManager.CameraTypeChangedListenerinterface 1-to-1 callGroup call이전 버전 PlanetKit 7.0.0 fun onChanged(isFrontCamera: Boolean)fun onChanged(cameraType: PlanetKitCameraType)
예제 코드
private val cameraTypeChangedListener = PlanetKitCameraManager.CameraTypeChangedListener { cameraType ->
when (cameraType) {
PlanetKitCameraType.FRONT -> {
// Handle front camera
}
PlanetKitCameraType.BACK -> {
// Handle back camera
}
PlanetKitCameraType.EXTERNAL -> {
// Handle external USB camera
}
}
}
PlanetKit.getCameraManager().addCameraTypeChangedListener(cameraTypeChangedListener)
그룹 통화에서 화면 공유 중지 이유 추가
그룹 통화의 화면 공유 이벤트 콜백에 disabledReason 파라미터를 추가했습니다. 이제 애플리케이션에서 사용자에게 화면 공유가 왜 중지됐는지 더 자세한 정보를 제공할 수 있고, 다양한 종료 상황을 적절히 처리하는 데 참고할 수 있습니다.
API
변경
-
ConferenceListenerinterface Group call이전 버전 PlanetKit 7.0.0 fun onScreenShareUpdated(peer: PlanetKitConferencePeer, subgroupName: String?, screenShareState: PlanetKitScreenShareState)fun onScreenShareUpdated(peer: PlanetKitConferencePeer, subgroupName: String?, screenShareState: PlanetKitScreenShareState, disabledReason: Int?) -
PlanetKitPeerControl.PeerControlListenerinterface Group call이전 버전 PlanetKit 7.0.0 fun onScreenShareUpdated(peer: PlanetKitConferencePeer, state: PlanetKitScreenShareState, subgroupName: String?)fun onScreenShareUpdated(peer: PlanetKitConferencePeer, state: PlanetKitScreenShareState, subgroupName: String?, disabledReason: Int?) -
PlanetKitPeerScreenShareView.PeerScreenShareViewListenerinterface Group call이전 버전 PlanetKit 7.0.0 fun onScreenShareUpdated(peer: PlanetKitConferencePeer, state: PlanetKitScreenShareState, subgroupName: String?)fun onScreenShareUpdated(peer: PlanetKitConferencePeer, state: PlanetKitScreenShareState, subgroupName: String?, disabledReason: Int?) -
PlanetKitPeerView.PeerViewListenerinterface Group call이전 버전 PlanetKit 7.0.0 fun onScreenShareUpdated(peer: PlanetKitConferencePeer, state: PlanetKitScreenShareState, subgroupName: String?)fun onScreenShareUpdated(peer: PlanetKitConferencePeer, state: PlanetKitScreenShareState, subgroupName: String?, disabledReason: Int?)
샘플링 레이트를 사용하는 오디오 API 개선
타입 안정성을 개선하고자 정수 기반 샘플링 레이트를 구조화된 enum 방식으로 대체했습니다.
- 새로운
PlanetKitAudioSampleRateenum은 16kHz, 32kHz, 48kHz 샘플링 레이트를 명확하게 지원합니다. - API 일관성이 향상됐고, 샘플링 레이트를 더욱 명시적으로 처리함으로써 오류를 방지할 수 있습니다.
API
변경
-
AudioFrameinterface 1-to-1 callGroup call이전 버전 PlanetKit 7.0.0 fun getSamplingRate(): Intfun getSamplingRate(): PlanetKitAudioSampleRate -
PlanetKitHookedAudioclass 1-to-1 call이전 버전 PlanetKit 7.0.0 val sampleRate: Intval sampleRate: PlanetKitAudioSampleRate
추가
PlanetKitAudioSampleRateenum class 1-to-1 callGroup callSAMPLE_RATE_16K(16000)SAMPLE_RATE_32K(32000)SAMPLE_RATE_48K(48000)val sampleRate: Int
더 이상 사용되지 않는 API 제거
- 1대1 통화 및 그룹 통화 설정 API에서 더 이상 사용되지 않는
apiKey파라미터를 제거했습니다. - 그룹 통화에서 더 이상 사용되지 않는 여러 개의 피어 비디오 및 화면 공유 제어 메서드를 제거했습니다.
API
삭제
-
PlanetKitMakeCallParamdata class 1-to-1 callval apiKey: String?
-
PlanetKitMakeCallParam.Builderclass 1-to-1 callfun apiKey(apiKey: String): Builder
-
PlanetKitConferenceParamdata class Group callval apiKey: String?
-
PlanetKitConferenceParam.Builderclass Group callfun apiKey(apiKey: String): Builder
-
PlanetKitConferenceinterface Group callfun requestPeerScreenShare(peer: PlanetKitUser, subgroupName: String?, userData: Any?, callback: PlanetKitVideoRequestCallback?): Booleanfun requestPeerVideo(peer: PlanetKitUser, maxResolution: PlanetKitVideoResolution, userData: Any?, callback: PlanetKitVideoRequestCallback?): Booleanfun requestPeerVideo(peer: PlanetKitUser, maxResolution: PlanetKitVideoResolution): Booleanfun requestPeerVideo(peer: PlanetKitUser, maxResolution: PlanetKitVideoResolution, subgroupName: String?, userData: Any?, callback: PlanetKitVideoRequestCallback?): Booleanfun requestPeerVideo(peer: PlanetKitUser, maxResolution: PlanetKitVideoResolution, subgroupName: String?, userData: Any?, cbResolution: PlanetKitPeerVideoResolutionCallback?): Booleanfun requestPeerVideo(peer: PlanetKitUser, maxResolution: PlanetKitVideoResolution, userData: Any?, cbResolution: PlanetKitPeerVideoResolutionCallback?): Booleanfun stopPeerScreenShare(peer: PlanetKitUser, subgroupName: String?, userData: Any?, callback: PlanetKitVideoRequestCallback?): Booleanfun stopPeerVideo(peer: PlanetKitUser, subgroupName: String?, userData: Any?, callback: PlanetKitVideoRequestCallback?): Booleanfun stopPeerVideo(peer: PlanetKitUser, userData: Any?, callback: PlanetKitVideoRequestCallback?): Booleanfun stopPeerVideo(peer: PlanetKitUser): Boolean
일관성을 위한 미디어 리시버 API 변경
일관성을 높이기 위해 분리되어 있던 리스너 인터페이스를 통합된 리시버 인터페이스로 대체했습니다.
- 새로운 API는 상대방의 미디어를 수신하는 것과 사용자 자신의 미디어를 수신하는 것을 더 명확하게 구분합니다.
- 더 나은 리소스 관리 및 라이프사이클 제어를 위해 명시적인 해제 메서드를 추가했습니다.
API
변경
-
PlanetKitCallinterface 1-to-1 call이전 버전 PlanetKit 7.0.0 fun setOnReceiveVideoListener(listener: OnReceiveVideoListener?)fun setPeerVideoReceiver(receiver: PlanetKitPeerVideoReceiver),fun clearPeerVideoReceiver()fun setOnReceiveAudioListener(listener: OnReceiveAudioListener?)fun setPeerAudioReceiver(receiver: PlanetKitAudioReceiver),fun clearPeerAudioReceiver()fun setOnSentAudioListener(listener: OnSentAudioListener?)fun setMyAudioReceiver(receiver: PlanetKitAudioReceiver),fun clearMyAudioReceiver() -
PlanetKitConferenceinterface Group call이전 버전 PlanetKit 7.0.0 fun setOnReceiveVideoListener(peer: PlanetKitUser, listener: OnReceiveVideoListener?)fun setPeerVideoReceiver(peer: PlanetKitUser, receiver: PlanetKitPeerVideoReceiver),fun clearPeerVideoReceiver(peer: PlanetKitUser)fun setOnReceiveAudioListener(listener: OnReceiveAudioListener?)fun setPeerAudioReceiver(receiver: PlanetKitAudioReceiver),fun clearPeerAudioReceiver()fun setOnSentAudioListener(listener: OnSentAudioListener?)fun setMyAudioReceiver(receiver: PlanetKitAudioReceiver),fun clearMyAudioReceiver()
추가
-
PlanetKitAudioReceiverinterface 1-to-1 callGroup callfun onAudioReceived(data: AudioFrame)
-
PlanetKitPeerVideoReceiverinterface Group callfun onPeerVideoReceived(data: PlanetKitVideoFrameData)
API 오타 수정
- 여러 인터페이스와 클래스 전반에 걸쳐 파라미터 이름이 일치하지 않았던 부분을 수정했습니다.
- 클래스 속성의 대소문자 표기를 올바른 카멜 표기법에 맞게 수정했습니다.
API
변경
-
VerifyListenerinterface 1-to-1 call이전 버전 PlanetKit 7.0.0 fun onVerified(call: PlanetKitCall, peerStartMessage: PlanetKitCallStartMessage?, peerUseResponderPreparation: Boolean)fun onVerified(call: PlanetKitCall, peerCallStartMessage: PlanetKitCallStartMessage?, peerUseResponderPreparation: Boolean) -
PlanetKitCallConnectedParamdata class 1-to-1 call이전 버전 PlanetKit 7.0.0 val peerStartMessage: PlanetKitCallStartMessage?val peerCallStartMessage: PlanetKitCallStartMessage? -
PlanetKitUserTypeContainerclass 1-to-1 callGroup call이전 버전 PlanetKit 7.0.0 val planetkitUserType: PlanetKitUserType?val planetKitUserType: PlanetKitUserType? -
PlanetKitConferencePublicSubgroupUpdateParam.PlanetKitConferenceSubgroupUpdatedPeerdata class Group call이전 버전 PlanetKit 7.0.0 val subscribedSubGroups: List<String>val subscribedSubgroups: List<String>val unsubscribedSubGroups: List<String>val unsubscribedSubgroups: List<String>
짧은 데이터 전송에 상세 오류 보고 기능 추가
1대1 통화와 그룹 통화 모두에서 sendShortData에 포괄적인 실패 이유 보고 기능을 추가했습니다.
- 새로운
PlanetKitSendShortDataFailReasonenum은 개발자가 다양한 실패 시나리오를 더 효과적으로 식별하고 처리할 수 있도록 구체적인 오류 코드를 제공합니다. - 기존의 범용
PlanetKitRequestCallback을 상세 실패 정보를 포함하는 전용PlanetKitSendShortDataResultCallback으로 대체했습니다. - 짧은 데이터 전송 기능을 사용할 때 이 기능을 이용해 오류 처리, 디버깅, 정보 제공 기능을 개선할 수 있습니다.
API
추가
-
PlanetKitSendShortDataFailReasonenum class 1-to-1 callGroup callNONE(0)INVALID_PARAMETER(1)TOO_LONG_DATA_TYPE(2)TOO_LONG_DATA(3)TOO_FREQUENT(4)TIMEOUT(5)
-
PlanetKitSendShortDataResultCallbackinterface 1-to-1 callGroup callfun onResult(isSuccess: Boolean, failReason: PlanetKitSendShortDataFailReason, userdata: Any?)
변경
-
PlanetKitCallinterface 1-to-1 call이전 버전 PlanetKit 7.0.0 fun sendShortData(type: String, shortData: ByteArray, userData: Any?, callback: PlanetKitRequestCallback?): Booleanfun sendShortData(type: String, shortData: ByteArray, userData: Any?, callback: PlanetKitSendShortDataResultCallback?): Boolean -
PlanetKitConferenceinterface Group call이전 버전 PlanetKit 7.0.0 fun sendShortData(targetUser: PlanetKitUser, type: String, shortData: ByteArray, userData: Any?, callback: PlanetKitRequestCallback?): Booleanfun sendShortData(targetUser: PlanetKitUser, type: String, shortData: ByteArray, userData: Any?, callback: PlanetKitSendShortDataResultCallback?): Booleanfun sendShortData(type: String, shortData: ByteArray, userData: Any?, callback: PlanetKitRequestCallback?): Booleanfun sendShortData(type: String, shortData: ByteArray, userData: Any?, callback: PlanetKitSendShortDataResultCallback?): Boolean