Add button to flip camera (front vs rear). Fixes #6279

This commit is contained in:
Niklas Hambüchen
2018-03-23 20:31:03 +01:00
committed by Greyson Parrelli
parent 6c1a1fb9ad
commit f1c79eaebf
8 changed files with 140 additions and 15 deletions

View File

@@ -27,6 +27,7 @@ public class WebRtcCallControls extends LinearLayout {
private AccessibleToggleButton audioMuteButton;
private AccessibleToggleButton videoMuteButton;
private AccessibleToggleButton cameraFlipButton;
private AccessibleToggleButton speakerButton;
private AccessibleToggleButton bluetoothButton;
@@ -60,6 +61,8 @@ public class WebRtcCallControls extends LinearLayout {
this.bluetoothButton = ViewUtil.findById(this, R.id.bluetoothButton);
this.audioMuteButton = ViewUtil.findById(this, R.id.muteButton);
this.videoMuteButton = ViewUtil.findById(this, R.id.video_mute_button);
this.cameraFlipButton = ViewUtil.findById(this, R.id.camera_flip_button);
this.cameraFlipButton.setVisibility(View.INVISIBLE); // shown once video is enabled
}
public void setAudioMuteButtonListener(final MuteButtonListener listener) {
@@ -75,7 +78,18 @@ public class WebRtcCallControls extends LinearLayout {
videoMuteButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
listener.onToggle(!isChecked);
boolean videoMuted = !isChecked;
listener.onToggle(videoMuted);
cameraFlipButton.setVisibility(videoMuted ? View.INVISIBLE : View.VISIBLE);
}
});
}
public void setCameraFlipButtonListener(final CameraFlipButtonListener listener) {
cameraFlipButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
listener.onToggle(isChecked);
}
});
}
@@ -138,21 +152,25 @@ public class WebRtcCallControls extends LinearLayout {
speakerButton.setAlpha(1.0f);
bluetoothButton.setAlpha(1.0f);
videoMuteButton.setAlpha(1.0f);
cameraFlipButton.setAlpha(1.0f);
audioMuteButton.setAlpha(1.0f);
speakerButton.setEnabled(true);
bluetoothButton.setEnabled(true);
videoMuteButton.setEnabled(true);
cameraFlipButton.setEnabled(true);
audioMuteButton.setEnabled(true);
} else if (!enabled && Build.VERSION.SDK_INT >= 11) {
speakerButton.setAlpha(0.3f);
bluetoothButton.setAlpha(0.3f);
videoMuteButton.setAlpha(0.3f);
cameraFlipButton.setAlpha(0.3f);
audioMuteButton.setAlpha(0.3f);
speakerButton.setEnabled(false);
bluetoothButton.setEnabled(false);
videoMuteButton.setEnabled(false);
cameraFlipButton.setEnabled(false);
audioMuteButton.setEnabled(false);
}
}
@@ -179,6 +197,10 @@ public class WebRtcCallControls extends LinearLayout {
public void onToggle(boolean isMuted);
}
public static interface CameraFlipButtonListener {
public void onToggle(boolean isRear);
}
public static interface SpeakerButtonListener {
public void onSpeakerChange(boolean isSpeaker);
}

View File

@@ -154,6 +154,10 @@ public class WebRtcCallScreen extends FrameLayout implements RecipientModifiedLi
this.controls.setVideoMuteButtonListener(listener);
}
public void setCameraFlipButtonListener(WebRtcCallControls.CameraFlipButtonListener listener) {
this.controls.setCameraFlipButtonListener(listener);
}
public void setSpeakerButtonListener(WebRtcCallControls.SpeakerButtonListener listener) {
this.controls.setSpeakerButtonListener(listener);
}