リリースノート
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 callAUDIO_MANAGER
AUDIO_DRIVER
PlanetKitVerifyCallParam.Builder
class 1-to-1 callfun setMicMuteControlMethod(value: PlanetKitMicMuteControlMethod)
PlanetKitMakeCallParam.Builder
class 1-to-1 callfun setMicMuteControlMethod(value: PlanetKitMicMuteControlMethod)
PlanetKitConferenceParam.Builder
class Group callfun setMicMuteControlMethod(value: PlanetKitMicMuteControlMethod)
カスタムオーディオソースのためのAudioSource
をPlanetKitCustomAudioSource
に置き換え
- 以前のバージョンでカスタムオーディオソースを実装するには、
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 callPlanetKitCall
interface 1-to-1 callfun clearCustomAudioSource()
PlanetKitConference
interface Group callfun 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 callval isRecordOnCloudEnabled: Boolean
ビデオ通話の有効化時のレスポンスタイプの設定APIを削除
- これで、1対1音声通話で相手がビデオ通話を有効にするとき、ローカルユーザーのビデオは常に一時停止状態に設定されます。
- 以前のバージョンでは、相手が音声通話をビデオ通話に切り替えるとき、ローカルユーザーのビデオ送信を自動的に開始するかどうか
responseOnEnableVideo()
を使用して決定できました。 - しかし、このAPIは個人情報保護の問題と潜在的な誤用の可能性があるため、バージョン6.0から削除し、
onVideoEnabledByPeer
はonVideoEnabledByPeerAndMyVideoPaused
に変更しました。 - したがって、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 callPlanetKitMakeCallParam.Builder
class 1-to-1 callfun responseOnEnableVideo(responseOnEnableVideo: PlanetKitResponseOnEnableVideo)
PlanetKitVerifyCallParam.Builder
class 1-to-1 callfun responseOnEnableVideo(responseOnEnableVideo: PlanetKitResponseOnEnableVideo)
ピアのボリューム設定APIの改善
- 以前のサブグループ基盤のボリューム制御を個々のピアに対する統合ボリューム設定APIに置き換えました。
- 6.0以前のバージョンでは、サブグループごとにボリュームが制御されていました。6.0バージョンからは、サブグループに関係なくボリュームを設定できます。
- この仕様変更に伴い、関連APIを修正しました。
API
変更
-
PlanetKitConferencePeer
class Group call以前バージョン PlanetKit 6.0.0 fun getAudioVolumeLevelSetting(subgroupName: String?): AudioVolumeResult
fun getAudioVolumeLevelSetting(): AudioVolumeResult
追加
PlanetKitPeerControl
class Group callfun setVolumeLevelSetting(@IntRange(from = 0, to = 110) volumeLevel: Int, userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
PlanetKitPeerView
class Group callfun setVolumeLevelSetting(@IntRange(from = 0, to = 110) volumeLevel: Int, userData: Any? = null, callback: PlanetKitRequestCallback? = null): Boolean
削除
PlanetKitSubgroup
interface Group callfun getPeerVolumeLevelSetting(user: PlanetKitUser): Int
PlanetKitSubgroupManager
interface Group callfun 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: PlanetKitVideoResolution
val maxResolution: PlanetKitVideoResolutionCapability
追加
PlanetKitVideoResolutionCapability
enum class 1-to-1 callGroup callQVGA(2)
VGA(3)
HD(4)
PlanetKitPreferredHardwareCodec
data class 1-to-1 callGroup callval callVideoSend: Boolean
val callVideoReceive: Boolean
val conferenceVideoSend: Boolean
val conferenceVideoReceive: Boolean
PlanetKit
object 1-to-1 callGroup callfun getCallDeviceDefaultVideoSendCapability(): PlanetKitVideoCapability?
fun getCallDeviceDefaultVideoReceiveCapability(): PlanetKitVideoCapability?
fun getConferenceDeviceDefaultVideoSendCapability(): PlanetKitVideoCapability?
fun getConferenceDeviceDefaultVideoReceiveCapability(): PlanetKitVideoCapability?
fun setPreferredHardwareCodec(preferredHardwareCodec: PlanetKitPreferredHardwareCodec)
fun getPreferredHardwareCodec(): PlanetKitPreferredHardwareCodec
削除
PlanetKitVideoCapability
class 1-to-1 callGroup callpreferredHwCodec: Boolean
setVideoSource
とclearVideoSource
をsetCustomVideoSource
とclearCustomVideoSource
に名称変更
- 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 callfun onRoomUpdated(joinedPeerCount: Int)
setSpeakerOn
およびisSpeakerOn
メソッドをPlanetKitAudioSwitch
に移動
setSpeakerOn
メソッドをPlanetKitCall
およびPlanetKitConference
でPlanetKitAudioSwitch
に移動しました。これで、このメソッドは成功または失敗を示すBoolean
を返します。isSpeakerOn
メソッドをPlanetKitCall
およびPlanetKitConference
でPlanetKitAudioSwitch
に移動しました。
API
変更
-
PlanetKitCall
class 1-to-1 call以前バージョン PlanetKit 6.0.0 fun setSpeakerOn(isSpeakerOn: Boolean)
PlanetKitAudioSwitch::fun setSpeakerOn(isSpeakerOn: Boolean): Boolean
val isSpeakerOn: Boolean
PlanetKitAudioSwitch::val isSpeakerOn: Boolean
-
PlanetKitConference
class Group call以前バージョン PlanetKit 6.0.0 fun setSpeakerOn(isSpeakerOn: Boolean)
PlanetKitAudioSwitch::fun setSpeakerOn(isSpeakerOn: Boolean): Boolean
val isSpeakerOn: Boolean
PlanetKitAudioSwitch::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"
を使用して確認できます。
- 外付けカメラを使用するには、Android端末が
サンプルコード
- 外付けカメラに切り替える
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 callEXTERNAL
PlanetKitCameraManager
interface 1-to-1 callGroup callval supportDeviceFeatureExternalCamera: Boolean
fun interface UsbCameraAvailabilityListener
fun addUsbCameraAvailabilityListener(listener: UsbCameraAvailabilityListener)
fun removeUsbCameraAvailabilityListener(listener: UsbCameraAvailabilityListener)