On / Off Camera - React Native
Participants in the meeting have the ability to toggle their cameras on or off using the methods outlined below.
enableWebcam()
- 
By using the
enableWebcam()function of theuseMeetinghook, local participant can publish their video to other participants. - 
You can only call this method when the local participant is not broadcasting video to others.
 - 
You can also pass a customised video track in
enableWebcam()by using Custom Video Track. - 
The video stream of a participant can be accessed from the
webcamStreamproperty of theuseParticipanthook. 
disableWebcam()
- 
By using the
disableWebcam()function of theuseMeetinghook, the local participant can stop publishing their video to other participants. - 
You can only call this method when the local participant is broadcasting video to others.
 
toggleWebcam()
- 
By using the
toggleWebcam()function of theuseMeetinghook, local participant can start or stop publishing their video to other participants based on the current state of the camera. - 
You can also pass a customised video track in
toggleWebcam()by using Custom Video Track. - 
The video stream of a participant can be accessed from the
webcamStreamproperty ofuseParticipanthook. 
Example
import { useMeeting } from "@videosdk.live/react-native-sdk";
import { TouchableOpacity, Text } from "react-native";
const MeetingView = () => {
  //Getting the camera methods from hook
  const { enableWebcam, disableWebcam, toggleWebcam } = useMeeting();
  const handleEnableWebcam = () => {
    // Enabling camera
    enableWebcam();
  };
  const handleDisableWebcam = () => {
    // Disabling camera
    disableWebcam();
  };
  const handleToggleWebcam = () => {
    // Toggling webcam
    toggleWebcam();
  };
  return (
    <>
      <TouchableOpacity
        onPress={() => {
          handleEnableWebcam();
        }}
      >
        <Text>Enable Webcam</Text>
      </TouchableOpacity>
      <TouchableOpacity
        onPress={() => {
          handleDisableWebcam();
        }}
      >
        <Text>Disable Webcam</Text>
      </TouchableOpacity>
      <TouchableOpacity
        onPress={() => {
          handleToggleWebcam();
        }}
      >
        <Text>Toggle Webcam</Text>
      </TouchableOpacity>
    </>
  );
};
To learn, how to render video in the meeting, follow this detailed guide.
Getting Participant Camera Status
- You can get the local participant's camera status from the 
useMeetinghook property namedlocalWebcamOn. - If 
localWebcamOnistrue, it means that the local participant's camera is currently active. If it isfalse, it means that the local participant's camera is currently disable or inactive. 
import { useMeeting } from "@videosdk.live/react-native-sdk";
const MeetingView = () => {
  // Get the localWebcamOn property
  const { localWebcamOn } = useMeeting();
  return (
    <>
      <Text>Local Camera is {localWebcamOn}</Text>
    </>
  );
};
- To get the status of any participant's camera you can use the 
webcamOnproperty of theuseParticipanthook. This parameter will betrueif participant'scamera is onelse it will befalse. 
import { useParticipant } from "@videosdk.live/react-native-sdk";
const ParticipantView = (participantId) => {
  // Get the webcamOn property
  const { webcamOn } = useParticipant(participantId);
  return (
    <>
      <Text>Participant Camera is {webcamOn}</Text>
    </>
  );
};
Events associated with enableWebcam
- 
Every Participant will receive a callback on
onStreamEnabled()event of theuseParticipant()hook with theStreamobject. - 
Every Participant will receive a callback on
onMediaStatusChanged()event of theuseParticipant()hook with the type of media and its status. 
Events associated with disableWebcam
- 
Every Participant will receive a callback on
onStreamDisabled()event of theuseParticipant()hook with theStreamobject. - 
Every Participant will receive a callback on
onMediaStatusChanged()event of theuseParticipant()hook with the type of media and its status. 
Events associated with toggleWebcam
- 
Every Participant will receive a callback on
onStreamEnabled()event of theuseParticipant()hook with theStreamobject if the video broadcasting was started. - 
Every Participant will receive a callback on
onStreamDisabled()event of theuseParticipant()hook with theStreamobject if the video broadcasting was stopped. - 
Every Participant will receive a callback on
onMediaStatusChanged()event of theuseParticipant()hook with the type of media and its status. 
import { useParticipant } from "@videosdk.live/react-native-sdk";
const ParticipantView = (participantId) => {
  //Callback for when the participant starts a stream
  function onStreamEnabled(stream) {
    if(stream.kind === 'video'){
      console.log("Video Stream On: onStreamEnabled", stream);
    }
  }
  //Callback for when the participant stops a stream
  function onStreamDisabled(stream) {
    if(stream.kind === 'video'){
      console.log("Video Stream Off: onStreamDisabled", stream);
    }
  }
  //Callback for when participants media gets changed
  function onMediaStatusChanged(data) {
    const { kind, newStatus} = data;
    console.log("Participant Media Kind: ", kind, " newStatus: ", newStatus);
  }
  const {
    displayName
    ...
  } = useParticipant(participantId,{
    onStreamEnabled,
    onStreamDisabled,
    onMediaStatusChanged
    ...
  });
  return <> Participant View </>;
}
API Reference
The API references for all the methods and events utilised in this guide are provided below.
Got a Question? Ask us on discord

