Moderación — Android
Cuando conectarse a una sesión Con un token que incluya privilegios de moderador, puedes obligar a otros clientes a desconectarse de una sesión o silenciar su audio:
- Comprobación de los privilegios de moderación
- Forzar la desconexión de un cliente
- Silenciar el audio de los flujos de una sesión
Comprobación de los privilegios de moderación
Una vez que te hayas conectado a una sesión, puedes comprobar si el cliente tiene permisos de moderador. Comprueba el valor de la canForceDisconnect o el canForceMute propiedad del objeto devuelto por Session.getCapabilities(). Si se establece en trueel cliente puede 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.
}
Forzar la desconexión de un cliente
Los moderadores pueden obligar a cualquier cliente a desconectarse de la sesión. Para obligar a un cliente a desconectarse, llama a la función forceDisconnect() método del objeto `Session`, pasando como parámetro el objeto `Connection` correspondiente al cliente que deseas desconectar:
session.forceDisconnect(connection);
Puede obtener referencias a objetos Connection cuando el onConnectionCreated(Session session, Connection connection) método del Session.ConnectionListener es llamado. Véase Detección de la conexión y desconexión de otros clientes. También puedes obtener un objeto Connection desde el getConnection() de un objeto Stream.
Cuando se realiza la llamada a la Session.forceDisconnect() falla, el método Session.SessionListener.onError() se invoca el método. Por ejemplo, si el cliente no tiene privilegios de moderación, el code El parámetro del objeto `OpentokError` pasado a este método está establecido en SessionUnableToForceDisconnect. En este contexto, el éxito indica que las opciones introducidas en el método son válidas y que se ha enviado la solicitud para desconectar la conexión. No garantiza que la solicitud se haya ejecutado correctamente.
Silenciar el audio de los flujos de una sesión
Los moderadores pueden obligar a todos los clientes o a un editor de un flujo específico a silenciar su audio publicado.
Para obligar a un editor de un flujo específico a silenciar su audio, llame a la función forceMuteStream() del objeto Session, pasando el objeto Stream correspondiente al flujo que se desea silenciar:
mSession.forceMuteStream(mStream);
Cuando se realiza la llamada a la Session.forceMuteStream() falla, el método Session.SessionListener.onError() se invoca el método. Por ejemplo, si el cliente no tiene privilegios de moderación, el code El parámetro del objeto `OpentokError` pasado a este método está establecido en SessionUnableToForceMute. En este contexto, el éxito indica que los parámetros pasados al método son válidos y que se ha enviado la solicitud para silenciar la transmisión. No garantiza que la solicitud se haya ejecutado correctamente.
Los moderadores también pueden forzar que todas las secuencias (excepto una lista opcional de secuencias) de una sesión silencien el audio publicado. Cree una matriz de flujos excluidos:
List<com.opentok.android.Stream> mExcludedStreams = new ArrayList<com.opentok.android.Stream>();
mExcludedStreams.add(stream1);
mExcludedStreams.add(stream2);
A continuación, llama al forceMuteAll() del objeto Session, pasando la matriz de flujos excluidos:
mSession.forceMuteAll(mExcludedStreams);
Una retransmisión publicada por el moderador en la que se hace referencia al forceMuteAll() se silencia junto con los demás flujos de la sesión, a menos que añada el flujo (o los flujos) del moderador a la lista de flujos excluidos.
Si omites el excludedStreams todas las secuencias de la sesión (incluidas las del moderador) dejarán de publicar audio:
mSession.forceMuteAll();
Además, cualquier flujo que se publique después de la llamada a la función forceMuteAll() se publican con el audio silenciado. Puede eliminar el estado de silencio de una sesión llamando al método disableForceMute() del objeto Session:
mSession.disableForceMute();
Después de llamar a la Session.disableForceMute() De esta forma, las nuevas retransmisiones publicadas en la sesión ya no tendrán el audio silenciado.
Puede obtener referencias a objetos Stream cuando el onStreamReceived(Session session, Stream stream) de la Session.SessionListener es llamado. Véase Detección de flujos en una sesión. También puede obtener un objeto Stream de la función getStream() de un objeto Editor o Suscriptor.
Cuando el flujo se silencia como resultado de uno de estos métodos (o de un forzar llamada a flujo mudo en otro cliente SDK), en cada cliente que publique un flujo silenciado, el onMuteForced(PublisherKit publisher, MuteForcedInfo info) método del PublisherKit.MuteListener es llamado.
Del mismo modo, en respuesta a una llamada al Session.forceMuteAll() método (o a un Forzar el silencio de todas las llamadas en otro Client SDK), onMuteForced(Session session, MuteForcedInfo info) método del Session.MuteListener en cada cliente conectado a la sesión, y el objeto active del objeto MuteForcedInfo pasado se establece en true.
Y en respuesta a una llamada a la Session.disableForceMute() método (o a un desactivar la llamada forzada al silencio en otro cliente SDK), el onMuteForced(Session session, MuteForcedInfo info) método del Session.MuteListener en cada cliente conectado a la sesión, y el objeto active del objeto MuteForcedInfo pasado se establece en false.