本文にスキップする
Version: 6.0

リリースノート

Android向けPlanetKit 6.0のリリースノートです。

PlanetKit 6.0

リリース日:2025-05-16

Android OSバージョンをAndroid 15(APIレベル35)にアップグレード

  • PlanetKitは今後、Android 15(APIレベル35)を対象とします。
  • 参考:アプリケーションは、引き続きAPIレベル35より低い対象SDKバージョン(targetSdkVersion)を使用できます。

API

  • 変更なし

通話中のマイク使用有無によってマイクデバイスを制御

  • 通話中にマイクを使用しないとき(例:ミュートまたは通話一時停止)、PlanetKitがマイクデバイスをオフにするように変更されました。
  • PlanetKitでは、マイク制御のための2つの方法を提供します。setMicMuteControlMethodを通じて希望する方法を選択できます。デフォルト値は、AUDIO_MANAGERです。
  • 詳しくは、APIドキュメントを参照してください。

API

追加
  • PlanetKitMicMuteControlMethod enum class 1-to-1 callGroup call
    • AUDIO_MANAGER
    • AUDIO_DRIVER
  • PlanetKitVerifyCallParam.Builder class 1-to-1 call
    • fun setMicMuteControlMethod(value: PlanetKitMicMuteControlMethod)
  • PlanetKitMakeCallParam.Builder class 1-to-1 call
    • fun setMicMuteControlMethod(value: PlanetKitMicMuteControlMethod)
  • PlanetKitConferenceParam.Builder class Group call
    • fun setMicMuteControlMethod(value: PlanetKitMicMuteControlMethod)

カスタムオーディオソースのためのAudioSourcePlanetKitCustomAudioSourceに置き換え

  • 以前のバージョンでカスタムオーディオソースを実装するには、AudioSourceを拡張する必要がありましたが、AudioSourceはPlanetKit内部でも使用され、インターフェースが複雑でした。
  • PlanetKit 6.0バージョンから新しいPlanetKitCustomAudioSourceを導入し、カスタムオーディオソースの開発を簡素化しました。既存のAudioSourceはdeprecatedされました。

API

変更
  • PlanetKitCall interface 1-to-1 call

    以前バージョンPlanetKit 6.0.0
    fun setAudioSource(audioSource: AudioSource?)fun setCustomAudioSource(audioSource: PlanetKitCustomAudioSource)
  • PlanetKitConference interface Group call

    以前バージョンPlanetKit 6.0.0
    fun setAudioSource(audioSource: AudioSource?)fun setCustomAudioSource(audioSource: PlanetKitCustomAudioSource)
追加
  • PlanetKitCustomAudioSource class 1-to-1 call
  • PlanetKitCall interface 1-to-1 call
    • fun clearCustomAudioSource()
  • PlanetKitConference interface Group call
    • fun clearCustomAudioSource()
削除
  • AudioSource class 1-to-1 call

サンプルコード

  • ステップ1:カスタムオーディオソースのクラスを実装します。

    object CustomAudioSource : PlanetKitCustomAudioSource() {
    private const val FRAME_DURATION_MS: Long = 20
    private var thread: Thread? = null
    fun start() {
    thread = Thread {
    while(true) {
    val frame: AudioFrame = makeYourAudioFrame()
    postFrameData(frame)
    Thread.sleep(FRAME_DURATION_MS)
    }
    }
    thread?.start()
    }
    fun stop() {
    thread?.interrupt()
    thread?.join()
    }
    }
  • ステップ2:カスタムオーディオソースを設定して開始します。

    fun setCustomAudioSource(call: PlanetKitCall, audioSource: CustomAudioSource) {
    call.setCustomAudioSource(audioSource)
    audioSource.start()
    }
  • ステップ3:カスタムオーディオソースを解除して停止します。

    fun clearCustomAudioSource(call: PlanetKitCall, audioSource: CustomAudioSource) {
    call.clearCustomAudioSource()
    audioSource.stop()
    }

PlanetKitCCParamを使用して通話受信中にクラウド通話の録音有効化の可否を確認

  • 通話受信時にクラウド通話の録音が有効になっているかどうかを示すフィールドをPlanetKitCCParamに追加しました。

API

追加
  • PlanetKitCCParam class 1-to-1 call
    • val isRecordOnCloudEnabled: Boolean

ビデオ通話の有効化時のレスポンスタイプの設定APIを削除

  • これで、1対1音声通話で相手がビデオ通話を有効にするとき、ローカルユーザーのビデオは常に一時停止状態に設定されます。
    • 以前のバージョンでは、相手が音声通話をビデオ通話に切り替えるとき、ローカルユーザーのビデオ送信を自動的に開始するかどうかresponseOnEnableVideo()を使用して決定できました。
    • しかし、このAPIは個人情報保護の問題と潜在的な誤用の可能性があるため、バージョン6.0から削除し、onVideoEnabledByPeeronVideoEnabledByPeerAndMyVideoPausedに変更しました。
    • したがって、6.0 バージョンからは、相手がビデオ通話を有効にするとき、ローカルユーザーのビデオは一時停止された状態のままになります。
  • この変更により、以前PlanetKitResponseOnEnableVideo.SENDを利用していたコードは、onVideoEnabledByPeerAndMyVideoPausedイベントを受信した後、手動でビデオを再生する方式にアップデートする必要があります。
    • 詳しくは、以下のサンプルコードを参照してください。

サンプルコード

  • 6.0バージョンで以前PlanetKitResponseOnEnableVideo.SENDを使用して実装していた動作を再現するには、次のように実装します。
private val callListener = object: MakeCallListener, AcceptCallListener {
override fun onVideoEnabledByPeerAndMyVideoPaused(call: PlanetKitCall) {
...
call.resumeMyVideo()
}
}

API

変更
  • CallListener class 1-to-1 call

    以前バージョンPlanetKit 6.0.0
    fun onVideoEnabledByPeer(call: PlanetKitCall)fun onVideoEnabledByPeerAndMyVideoPaused(call: PlanetKitCall)
削除
  • PlanetKitResponseOnEnableVideo enum class 1-to-1 call
  • PlanetKitMakeCallParam.Builder class 1-to-1 call
    • fun responseOnEnableVideo(responseOnEnableVideo: PlanetKitResponseOnEnableVideo)
  • PlanetKitVerifyCallParam.Builder class 1-to-1 call
    • fun responseOnEnableVideo(responseOnEnableVideo: PlanetKitResponseOnEnableVideo)

ピアのボリューム設定APIの改善

  • 以前のサブグループ基盤のボリューム制御を個々のピアに対する統合ボリューム設定APIに置き換えました。
  • 6.0以前のバージョンでは、サブグループごとにボリュームが制御されていました。6.0バージョンからは、サブグループに関係なくボリュームを設定できます。
  • この仕様変更に伴い、関連APIを修正しました。

API

変更
  • PlanetKitConferencePeer class Group call

    以前バージョンPlanetKit 6.0.0
    fun getAudioVolumeLevelSetting(subgroupName: String?): AudioVolumeResultfun getAudioVolumeLevelSetting(): AudioVolumeResult
追加
  • PlanetKitPeerControl class Group call
    • fun setVolumeLevelSetting(@IntRange(from = 0, to = 110) volumeLevel: Int, userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
  • PlanetKitPeerView class Group call
    • fun setVolumeLevelSetting(@IntRange(from = 0, to = 110) volumeLevel: Int, userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
削除
  • PlanetKitSubgroup interface Group call
    • fun getPeerVolumeLevelSetting(user: PlanetKitUser): Int
  • PlanetKitSubgroupManager interface Group call
    • fun setPeerVolumeLevelSetting(peer: PlanetKitUser, subgroupName: String?, @IntRange(from = 0, to = 110) talkerVolume: Int, userData: Any?, callback: PlanetKitRequestCallback?): Boolean
    • fun setPeerVolumeLevelSetting(peer: PlanetKitUser, @IntRange(from = 0, to = 110) talkerVolume: Int, userData: Any?, callback: PlanetKitRequestCallback?): Boolean

ビデオ性能の設定APIの改善

  • ビデオ性能(capability)の設定APIでサムネイル解像度はサポートされなくなりました。
  • ビデオハードウェアコーデックの設定は、これにより各1対1通話またはグループ通話ごとに設定する代わりに、PlanetKitを通じて設定されます。

API

変更
  • PlanetKitVideoCapability class 1-to-1 callGroup call

    以前バージョンPlanetKit 6.0.0
    val maxResolution: PlanetKitVideoResolutionval maxResolution: PlanetKitVideoResolutionCapability
追加
  • PlanetKitVideoResolutionCapability enum class 1-to-1 callGroup call
    • QVGA(2)
    • VGA(3)
    • HD(4)
  • PlanetKitPreferredHardwareCodec data class 1-to-1 callGroup call
    • val callVideoSend: Boolean
    • val callVideoReceive: Boolean
    • val conferenceVideoSend: Boolean
    • val conferenceVideoReceive: Boolean
  • PlanetKit object 1-to-1 callGroup call
    • fun getCallDeviceDefaultVideoSendCapability(): PlanetKitVideoCapability?
    • fun getCallDeviceDefaultVideoReceiveCapability(): PlanetKitVideoCapability?
    • fun getConferenceDeviceDefaultVideoSendCapability(): PlanetKitVideoCapability?
    • fun getConferenceDeviceDefaultVideoReceiveCapability(): PlanetKitVideoCapability?
    • fun setPreferredHardwareCodec(preferredHardwareCodec: PlanetKitPreferredHardwareCodec)
    • fun getPreferredHardwareCodec(): PlanetKitPreferredHardwareCodec
削除
  • PlanetKitVideoCapability class 1-to-1 callGroup call
    • preferredHwCodec: Boolean

setVideoSourceclearVideoSourcesetCustomVideoSourceclearCustomVideoSourceに名称変更

  • API名をより明確に変更しました。

API

変更
  • PlanetKitCall interface 1-to-1 call

    以前バージョンPlanetKit 6.0.0
    fun setVideoSource(videoSource: PlanetKitCustomVideoSource)fun setCustomVideoSource(videoSource: PlanetKitCustomVideoSource)
    fun clearVideoSource()fun clearCustomVideoSource()
  • PlanetKitConference interface Group call

    以前バージョンPlanetKit 6.0.0
    fun setVideoSource(videoSource: PlanetKitCustomVideoSource)fun setCustomVideoSource(videoSource: PlanetKitCustomVideoSource)
    fun clearVideoSource()fun clearCustomVideoSource()

ConferenceListenerの使用されないコールバックの除去

  • 使用されなくなったAPIを除去しました。
  • これで、ConferenceListener.onPeerListUpdatedを使用して参加したピア数に対する情報を得ることができます。

API Change

削除
  • ConferenceListener interface Group call
    • fun onRoomUpdated(joinedPeerCount: Int)

setSpeakerOnおよびisSpeakerOnメソッドをPlanetKitAudioSwitchに移動

  • setSpeakerOnメソッドをPlanetKitCallおよびPlanetKitConferencePlanetKitAudioSwitchに移動しました。これで、このメソッドは成功または失敗を示すBooleanを返します。
  • isSpeakerOnメソッドをPlanetKitCallおよびPlanetKitConferencePlanetKitAudioSwitchに移動しました。

API

変更
  • PlanetKitCall class 1-to-1 call

    以前バージョンPlanetKit 6.0.0
    fun setSpeakerOn(isSpeakerOn: Boolean)PlanetKitAudioSwitch::fun setSpeakerOn(isSpeakerOn: Boolean): Boolean
    val isSpeakerOn: BooleanPlanetKitAudioSwitch::val isSpeakerOn: Boolean
  • PlanetKitConference class Group call

    以前バージョンPlanetKit 6.0.0
    fun setSpeakerOn(isSpeakerOn: Boolean)PlanetKitAudioSwitch::fun setSpeakerOn(isSpeakerOn: Boolean): Boolean
    val isSpeakerOn: BooleanPlanetKitAudioSwitch::val isSpeakerOn: Boolean

外付けカメラを提供

  • 今回のリリースでは、外付け(USB)カメラのサポートが追加されました。
  • 外付けカメラのサポート有無はAndroid端末によります。
    • 外付けカメラを使用するには、Android端末がandroid.hardware.camera.external機能に対応している必要があります。
    • これは、packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA_EXTERNAL)またはadb shell pm list features | grep "android.hardware.camera.external"を使用して確認できます。

サンプルコード

  • 外付けカメラに切り替える
  PlanetKit.getCameraManager().startPreview(yourVideoView)
...

if (PlanetKitCameraType.EXTERNAL.isAvailable) {
PlanetKit.getCameraManager().cameraType = PlanetKitCameraType.EXTERNAL
}
  • 外付けカメラの使用可否をモニタリングする
  private val usbCameraAvailabilityListener = UsbCameraAvailabilityListener { isAvailable ->
// For example, update your UI components based on camera availability.
}

fun onViewCreated() {
PlanetKit.getCameraManager().addUsbCameraAvailabilityListener(usbCameraAvailabilityListener)
}

fun onDestroyView() {
PlanetKit.getCameraManager().removeUsbCameraAvailabilityListener(usbCameraAvailabilityListener)
}

API

追加
  • PlanetKitCameraType enum class 1-to-1 callGroup call
    • EXTERNAL
  • PlanetKitCameraManager interface 1-to-1 callGroup call
    • val supportDeviceFeatureExternalCamera: Boolean
    • fun interface UsbCameraAvailabilityListener
    • fun addUsbCameraAvailabilityListener(listener: UsbCameraAvailabilityListener)
    • fun removeUsbCameraAvailabilityListener(listener: UsbCameraAvailabilityListener)