Configuring Audio, Video Input and Output devices - Android 5.x
In this guide we’ll show you how to configure Audio, Video input and output devices from your Twilio Video Rooms API application. Taking advantage of the ability to control input and output devices lets you build a better end user experience.
Selecting a specific Video Input
CameraCapturer
The CameraCapturer
provides video frames via the Camera API for a LocalVideoTrack
from a given CameraCapturer.CameraSource
.
// Share your camera
CameraCapturer cameraCapturer = new CameraCapturer(context, CameraSource.FRONT_CAMERA);
LocalVideoTrack localVideoTrack = LocalVideoTrack.create(context, true, cameraCapturer);
VideoView primaryVideoView = (VideoView) findViewById(R.id.local_video);
// Mirror front camera
primaryVideoView.setMirror(true);
// Render camera to view
localVideoTrack.addRenderer(primaryVideoView);
// Switch the camera source
CameraSource cameraSource = cameraCapturer.getCameraSource();
cameraCapturer.switchCamera();
primaryVideoView.setMirror(cameraSource == CameraSource.BACK_CAMERA);
Camera2Capturer
The Camera2Capturer
provides video frames via the Camera 2 API for a LocalVideoTrack
from a given camera ID.
// Get the device camera IDs
CameraManager cameraManager =
(CameraManager) cameraCapturerActivity.getSystemService(Context.CAMERA_SERVICE);
String[] cameraIds = cameraManager.getCameraIdList();
// This example uses the first Camera ID but applications can make their own decisions
// about which Camera ID to use
String cameraId = cameraIds[0];
// Share your camera
Camera2Capturer camera2Capturer = new Camera2Capturer(context, cameraId, camera2Listener);
LocalVideoTrack localVideoTrack = LocalVideoTrack.create(context, true, camera2Capturer);
// Render camera to a view
VideoView primaryVideoView = (VideoView) findViewById(R.id.local_video);
localVideoTrack.addRenderer(primaryVideoView);
// Switch the camera source from the first camera ID to the second camera ID
camera2Capturer.switchCamera(cameraIds[1]);
For more details and other best practices capturing video from the camera capturers, please reference the Video Android Quickstart.
Selecting a specific Audio input
The Twilio Video Android SDK does not officially support switching the AudioSource and just defaults to the native Android API MediaRecorder.AudioSource.VOICE_COMMUNICATION
Selecting a specific Audio output
Using the AudioManager
class provided by Android, you can specify if audio is routed through the headset or speaker.
// Get AudioManager
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
// Route audio through speaker
audioManager.setSpeakerphoneOn(true);
// Route audio through headset
audioManager.setSpeakerphoneOn(false);
Need some help?
We all do sometimes; code is hard. Get help now from our support team, or lean on the wisdom of the crowd by visiting Twilio's Stack Overflow Collective or browsing the Twilio tag on Stack Overflow.