Mute / Unmute Mic - Android
This feature allows hosts to communicate with each other during the livestream by enabling or disabling their microphones. While only hosts (participants in SEND_AND_RECV mode) can speak, audience members (in RECV_ONLY mode) can listen to the conversation in real time.
unmuteMic()
​
-
By using the
unmuteMic()
function of theMeeting
class, the host can publish their audio to other hosts and audience members. -
You can also pass a customised audio track in the
unmuteMic()
method by using Custom Audio Track.
muteMic()
​
- By using the
muteMic()
function of theMeeting
class, the host can stop publishing their audio to other hosts and audience members.
Example​
- Kotlin
- Java
private var micEnabled = false
btnMic!!.setOnClickListener { _: View? ->
if (micEnabled) {
// Muting Mic
liveStream!!.muteMic()
micEnabled=false
} else {
// Unmuting Mic
liveStream!!.unmuteMic()
micEnabled=true
}
}
private boolean micEnabled = false;
btnMic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (micEnabled) {
// Muting Mic
liveStream.muteMic();
micEnabled = false;
} else {
// Unmuting Mic
liveStream.unmuteMic();
micEnabled = true;
}
}
});
Events associated with unmuteMic​
- Every Participant—including all the hosts and audience members will receive a callback on
onStreamEnabled()
of theParticipant
withStream
object.
Events associated with muteMic​
- Every Participant—including all the hosts and audience members will receive a callback on
onStreamDisabled()
of theParticipant
withStream
object.
- Kotlin
- Java
meeting!!.localParticipant.addEventListener(object : ParticipantEventListener() {
//Callback for when the participant starts a stream
override fun onStreamEnabled(stream: Stream) {
if(stream.getKind().equals("audio")){
Log.d("VideoSDK","Audio Stream On: onStreamEnabled $stream");
}
}
//Callback for when the participant stops a stream
override fun onStreamDisabled(stream: Stream) {
if(stream.getKind().equals("audio")){
Log.d("VideoSDK","Audio Stream On: onStreamDisabled $stream");
}
}
});
participant.addEventListener(new ParticipantEventListener() {
//Callback for when the participant starts a stream
@Override
public void onStreamEnabled(Stream stream) {
if(stream.getKind().equals("audio")){
Log.d("VideoSDK","Audio Stream On: onStreamEnabled" + stream);
}
}
//Callback for when the participant stops a stream
@Override
public void onStreamDisabled(Stream stream) {
if(stream.getKind().equals("audio")){
Log.d("VideoSDK","Audio Stream Off: onStreamDisabled" + stream);
}
}
});
Audio Permissions​
- To use the microphone in a live stream, you need to add permission in
app/src/main/AndroidManifest.xml
after</application>
.
AndroidManifest.xml
<uses-permission android:name="android.permission.RECORD_AUDIO" />
- You need to set up a permission request that provides this access.
- Kotlin
- Java
import android.Manifest
import android.content.pm.PackageManager
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
class LiveStreamActivity : AppCompatActivity() {
private val PERMISSION_REQUEST_CODE: Int = 1;
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_live_stream);
if (checkPermission()) {
// . write your main code to execute, It will execute if the permission is already given.
} else {
requestPermission()
}
}
private fun checkPermission(): Boolean {
return ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED
}
private fun requestPermission() {
ActivityCompat.requestPermissions(
this, arrayOf(Manifest.permission.RECORD_AUDIO),
PERMISSION_REQUEST_CODE
)
}
override
fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
when (requestCode) {
PERMISSION_REQUEST_CODE -> if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(applicationContext, "Permission Granted", Toast.LENGTH_SHORT).show()
// main logic
} else {
Toast.makeText(applicationContext, "Permission Denied", Toast.LENGTH_SHORT).show()
}
}
}
}
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class LiveStreamActivity extends AppCompatActivity {
private static final int PERMISSION_REQUEST_CODE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_live_stream);
if (checkPermission()) {
// . write your main code to execute, It will execute if the permission is already given.
} else {
requestPermission();
}
}
private boolean checkPermission() {
return ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED;
}
private void requestPermission() {
List<String> permissionList = new ArrayList<String>();
String[] permissions = {};
permissionList.add(Manifest.permission.RECORD_AUDIO);
ActivityCompat.requestPermissions(
this, permissionList.toArray(permissions),
PERMISSION_REQUEST_CODE
);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case PERMISSION_REQUEST_CODE:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(MainActivity.this, "Permission Granted", Toast.LENGTH_SHORT).show();
// main logic
} else {
Toast.makeText(MainActivity.this, "Permission Denied", Toast.LENGTH_SHORT).show();
}
break;
}
}
}
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