Moderação — Android

Quando você conectar-se a uma sessão Com um token que inclua privilégios de moderador, você pode forçar outros clientes a se desconectarem de uma sessão ou silenciar o áudio deles:

Verificando se há privilégios de moderação

Depois de se conectar a uma sessão, você pode verificar se o cliente tem permissão para moderar. Verifique o valor do canForceDisconnect ou o canForceMute propriedade do objeto retornado por Session.getCapabilities(). Se estiver definido como true, o cliente pode moderar:

if (session.getCapabilities().canForceDisconnect) {
    // The client can force disconnect. See the next section.
} else {
    // The client cannot force disconnect.
}
if (session.getCapabilities().canForceMute) {
    // The client can force mute. See the next section.
} else {
    // The client cannot force mute.
}

Forçar a desconexão de um cliente

Os moderadores podem forçar qualquer cliente a se desconectar da sessão. Para forçar um cliente a se desconectar, chame a função forceDisconnect() método do objeto Session, passando o objeto Connection correspondente ao cliente que você deseja desconectar:

session.forceDisconnect(connection);

É possível obter referências a objetos Connection quando o onConnectionCreated(Session session, Connection connection) método do Session.ConnectionListener o objeto é chamado. Veja Detectar quando outros clientes se conectaram e se desconectaram. Você também pode obter um objeto Connection a partir do getConnection() método de um objeto Stream.

Quando a chamada para o Session.forceDisconnect() Se o método falhar, o Session.SessionListener.onError() método é chamado. Por exemplo, se o cliente não tiver privilégios de moderação, o code O parâmetro do objeto OpentokError passado para este método está definido como SessionUnableToForceDisconnect. Nesse contexto, o sucesso indica que os parâmetros passados ao método são válidos e que a solicitação para desconectar a conexão foi enviada. Isso não garante que a solicitação tenha sido processada com sucesso.

Silenciar o áudio das transmissões em uma sessão

Os moderadores podem forçar todos os usuários ou um editor de uma transmissão específica a silenciar o áudio publicado.

Para forçar um emissor de uma transmissão específica a silenciar seu áudio, chame a função forceMuteStream() método do objeto Session, passando o objeto Stream correspondente ao fluxo a ser silenciado:

mSession.forceMuteStream(mStream);

Quando a chamada para o Session.forceMuteStream() Se o método falhar, o Session.SessionListener.onError() método é chamado. Por exemplo, se o cliente não tiver privilégios de moderação, o code O parâmetro do objeto OpentokError passado para este método está definido como SessionUnableToForceMute. Nesse contexto, o sucesso indica que os parâmetros passados ao método são válidos e que a solicitação para silenciar o fluxo foi enviada. Isso não garante que a solicitação tenha sido atendida com sucesso.

Os moderadores também podem forçar todas as transmissões (exceto uma lista opcional de transmissões) em uma sessão a silenciar o áudio publicado. Crie uma matriz de transmissões excluídas:

List<com.opentok.android.Stream> mExcludedStreams = new ArrayList<com.opentok.android.Stream>();
mExcludedStreams.add(stream1);
mExcludedStreams.add(stream2);

Em seguida, chame o forceMuteAll() método do objeto Session, passando o array de fluxos excluídos:

mSession.forceMuteAll(mExcludedStreams);

Uma transmissão publicada pelo moderador chamando o forceMuteAll() O método é silenciado junto com outras transmissões da sessão, a menos que você adicione a transmissão (ou transmissões) do moderador à lista de transmissões excluídas.

Se você deixar de fora o excludedStreams parâmetro, todas as transmissões da sessão (incluindo as do moderador) deixarão de transmitir áudio:

mSession.forceMuteAll();

Além disso, quaisquer streams publicados após a chamada à função forceMuteAll() As sessões são publicadas com o áudio silenciado. É possível desativar o silenciamento de uma sessão chamando a função disableForceMute() método do objeto Session:

mSession.disableForceMute();

Depois de chamar a Session.disableForceMute() Com esse método, as novas transmissões publicadas na sessão não terão mais o áudio silenciado.

É possível obter referências a objetos Stream quando o onStreamReceived(Session session, Stream stream) do Session.SessionListener o objeto é chamado. Veja Detecção de fluxos em uma sessão. Você também pode obter um objeto Stream a partir do getStream() método de um objeto Publisher ou Subscriber.

Quando a transmissão é silenciada como resultado de um desses métodos (ou a partir de um forçar o silenciamento da chamada de streaming em outro Client SDK), em cada cliente que publica um fluxo silenciado, o onMuteForced(PublisherKit publisher, MuteForcedInfo info) método do PublisherKit.MuteListener o objeto é chamado.

Da mesma forma, em resposta a uma ligação para o Session.forceMuteAll() método (ou a um silenciar à força todas as chamadas em outro Client SDK), onMuteForced(Session session, MuteForcedInfo info) método do Session.MuteListener O objeto é chamado em cada cliente conectado à sessão, e o active a propriedade do objeto MuteForcedInfo passado como parâmetro está definida como true.

E em resposta a uma ligação para o Session.disableForceMute() método (ou a um desativar o silenciamento forçado de chamadas em outro Client SDK), o onMuteForced(Session session, MuteForcedInfo info) método do Session.MuteListener objeto em cada cliente conectado à sessão, e o active a propriedade do objeto MuteForcedInfo passado como parâmetro está definida como false.