ミュート状態の共有および制御
ミュートとは、マイクに入力されたオーディオの送信を無効にすることをいいます。ローカルオーディオのミュート/ミュート解除を操作し、アプリケーションのミュート状態をピアと共有できます。また、特定のピアもしくはすべてのピアにミュート/ミュート解除をリクエストすることもできます。
PlanetKit 6.0以前では、ミュートの制御がマイクの作動に直接的な影響を及ぼすことはありませんでした。しかし、PlanetKit 6.0からミュートの制御が次のようにマイクを制御します。
- ローカルオーディオをミュートにすると、PlanetKitがマイクをオフにしてオーディオ送信を無効にするため、マイクインジケーター(microphone indicator)がオフになります。
- ローカルオーディオのミュートを解除すると、PlanetKitがマイクをオンにしてオーディオ送信を有効にするため、マイクインジケーターがオンになります。
ローカルオーディオのミュート制御および共有
通話タイプ別にローカルオーディオをミュートまたはミュート解除する方法について説明します。
1対1通話
1対1通話でローカルオーディオをミュートまたはミュート解除するには、muteMyAudio()を使用します。ローカルオーディオのミュート状態の変更は、onPeerMicMutedまたはonPeerMicUnmutedを介してピアに転送されます。
次の図は、1対1通話でローカルオーディオをミュートまたはミュート解除するフローを示しています。
関連するサンプルコードは次のとおりです。
ローカルオーディオをミュートまたはミュート解除する
// isMute: true for mute, false for unmute
fun muteMyAudioExample(call: PlanetKitCall, isMute: Boolean) {
call.muteMyAudio(isMute) { result ->
Log.d(TAG, "muteMyAudio(isMute=$isMute) result: ${result.isSuccessful}")
}
}
ピア側で関連イベントを処理する
// Implement related callbacks of the CallListener interface
// MakeCallListener for caller and AcceptCallListener for callee
private val makeAcceptCallListener = object : MakeCallListener, AcceptCallListener {
...
override fun onPeerMicMuted(call: PlanetKitCall) {
// This is called when the peer changed their microphone status to be muted.
// Write your own code here.
}
override fun onPeerMicUnmuted(call: PlanetKitCall) {
// This is called when the peer changed their microphone status to be unmuted.
// Write your own code here.
}
}
グループ通話
グループ通話でローカルオーディオをミュートまたはミュート解除するには、muteMyAudio()を使用します。ローカルオーディオのミュート状態の変更は、onPeersMicMutedまたはonPeersMicUnmutedを介してピアに転送されます。
次の図は、グループ通話でローカルオーディオをミュートまたはミュート解除するフローを示しています。
関連するサンプルコードは次のとおりです。
ローカルオーディオをミュートまたはミュート解除する
// isMute: true for mute, false for unmute
fun muteMyAudioExample(conference: PlanetKitConference, isMute: Boolean) {
conference.muteMyAudio(isMute) { result ->
Log.d(TAG, "muteMyAudio(isMute=$isMute) result: ${result.isSuccessful}")
}
}
ピア側で関連イベントを処理する
// Implement related callbacks of the ConferenceListener interface
private val conferenceListener = object : ConferenceListener {
...
override fun onPeersMicMuted(conference: PlanetKitConference, peers: List<PlanetKitConferencePeer>) {
// This is called when one or more peers changed their microphone status to be muted.
// Write your own code here.
}
override fun onPeersMicUnmuted(conference: PlanetKitConference, peers: List<PlanetKitConferencePeer>) {
// This is called when one or more peers changed their microphone status to be unmuted.
// Write your own code here.
}
}
リモートオーディオにおけるミュートのリクエスト
通話タイプ別にリモートオーディオのミュートまたはミュート解除をリクエストする方法について説明します。
ピアがリクエストを受けた際にオーディオをミュート/ミュート解除するかどうかは、実装によって異なります。
以下の例では、ピアがリクエストに応じてミュートまたはミュート解除を行うと仮定します。
1対1通話
1対1通話でピアにミュートまたはミュート解除をリクエストするには、requestPeerMute()を使用します。このリクエストはonMuteMyAudioRequestedByPeerを介してピアに転送され、リモートオーディオのミュート状態の変更はonPeerMicMutedまたはonPeerMicUnmutedを介してローカルユーザーに転送されます。
次の図は、1対1通話でリモートオーディオのミュートまたはミュート解除をリクエストするフローを示しています。
関連するサンプルコードは次のとおりです。
リモートオーディオのミュートまたはミュート解除をリクエストする
// isMute: true for mute, false for unmute
fun requestPeerMuteExample(call: PlanetKitCall, isMute: Boolean) {
call.requestPeerMute(isMute) { result ->
Log.d(TAG, "requestPeerMute(isMute=$isMute) result: ${result.isSuccessful}")
}
}
ピア側で関連イベントを処理する
private val makeAcceptCallListener = object : MakeCallListener, AcceptCallListener {
...
override fun onMuteMyAudioRequestedByPeer(call: PlanetKitCall, isMute: Boolean) {
// This is called when the peer requests the local user to mute or unmute the microphone.
call.muteMyAudio(isMute) { result ->
Log.d(TAG, "muteMyAudio(isMute=$isMute) result: ${result.isSuccessful}")
}
}
}
グループ通話
グループ通話では、特定のピアまたはすべてのピアにオーディオをミュートまたはミュート解除するようにリクエストできます。
- 特定のピアにミュートまたはミュート解除をリクエストするには、
requestPeerMute()を使用します。 - すべてのピアにミュートまたはミュート解除をリクエストするには、
requestPeersMute()を使用します。
このリクエストはonMuteMyAudioRequestedByPeerを介してピアに転送され、リモートオーディオのミュート状態の変更はonPeersMicMutedまたはonPeersMicUnmutedを介してローカルユーザーに転送されます。
次の図は、グループ通話でリモートオーディオのミュートまたはミュート解除をリクエストするフローを示しています。
関連するサンプルコードは次のとおりです。
リモートオーディオのミュートまたはミュート解除をリクエストする
// Request mute for single peer
// isMute: true for mute, false for unmute
fun requestPeerMuteExample(conference: PlanetKitConference, peer: PlanetKitUser, isMute: Boolean) {
conference.requestPeerMute(peer, isMute) { result ->
Log.d(TAG, "requestPeerMute(peer=$peer, isMute=$isMute) result: ${result.isSuccessful}")
}
}
// Request mute for all peers
// isMute: true for mute, false for unmute
fun requestPeersMuteExample(conference: PlanetKitConference, isMute: Boolean) {
conference.requestPeersMute(isMute) { result ->
Log.d(TAG, "requestPeersMute(isMute=$isMute) result: ${result.isSuccessful}")
}
}
ピア側で関連イベントを処理する
private val conferenceListener = object : ConferenceListener {
...
override fun onMuteMyAudioRequestedByPeer(conference: PlanetKitConference, peer: PlanetKitConferencePeer, isMute: Boolean) {
// This is called when a peer requests the local user to mute or unmute the microphone.
conference.muteMyAudio(isMute) { result ->
Log.d(TAG, "muteMyAudio(isMute=$isMute) result: ${result.isSuccessful}")
}
}
}
関連API
ミュートの制御とミュート状態の共有に関連するAPIは次のとおりです。
1対1通話
メソッド
イベント
グループ通話
メソッド
-
PlanetKitConferenceのmuteMyAudio() -
PlanetKitConferenceのrequestPeerMute() -
PlanetKitConferenceのrequestPeersMute()