@@ -627,6 +627,7 @@ private void getUserMedia(
627
627
result .success (successResult .toMap ());
628
628
}
629
629
630
+ private boolean isFacing =true ;
630
631
private VideoTrack getUserVideo (ConstraintsMap constraints ) {
631
632
ConstraintsMap videoConstraintsMap = null ;
632
633
ConstraintsMap videoConstraintsMandatory = null ;
@@ -657,7 +658,7 @@ private VideoTrack getUserVideo(ConstraintsMap constraints) {
657
658
}
658
659
659
660
String facingMode = getFacingMode (videoConstraintsMap );
660
- boolean isFacing = facingMode == null || !facingMode .equals ("environment" );
661
+ isFacing = facingMode == null || !facingMode .equals ("environment" );
661
662
String sourceId = getSourceIdConstraint (videoConstraintsMap );
662
663
663
664
VideoCapturer videoCapturer = createVideoCapturer (cameraEnumerator , isFacing , sourceId );
@@ -761,19 +762,37 @@ void switchCamera(String id, Result result) {
761
762
return ;
762
763
}
763
764
764
- CameraVideoCapturer cameraVideoCapturer = (CameraVideoCapturer ) videoCapturer ;
765
- cameraVideoCapturer .switchCamera (
766
- new CameraVideoCapturer .CameraSwitchHandler () {
767
- @ Override
768
- public void onCameraSwitchDone (boolean b ) {
769
- result .success (b );
770
- }
765
+ CameraEnumerator cameraEnumerator ;
771
766
772
- @ Override
773
- public void onCameraSwitchError (String s ) {
774
- resultError ("switchCamera" , "Switching camera failed: " + id , result );
775
- }
776
- });
767
+ if (Camera2Enumerator .isSupported (applicationContext )) {
768
+ Log .d (TAG , "Creating video capturer using Camera2 API." );
769
+ cameraEnumerator = new Camera2Enumerator (applicationContext );
770
+ } else {
771
+ Log .d (TAG , "Creating video capturer using Camera1 API." );
772
+ cameraEnumerator = new Camera1Enumerator (false );
773
+ }
774
+ // if sourceId given, use specified sourceId first
775
+ final String [] deviceNames = cameraEnumerator .getDeviceNames ();
776
+ for (String name : deviceNames ) {
777
+ if (cameraEnumerator .isFrontFacing (name ) == !isFacing ) {
778
+ CameraVideoCapturer cameraVideoCapturer = (CameraVideoCapturer ) videoCapturer ;
779
+ cameraVideoCapturer .switchCamera (
780
+ new CameraVideoCapturer .CameraSwitchHandler () {
781
+ @ Override
782
+ public void onCameraSwitchDone (boolean b ) {
783
+ isFacing =!isFacing ;
784
+ result .success (b );
785
+ }
786
+
787
+ @ Override
788
+ public void onCameraSwitchError (String s ) {
789
+ resultError ("switchCamera" , "Switching camera failed: " + id , result );
790
+ }
791
+ },name );
792
+ return ;
793
+ }
794
+ }
795
+ resultError ("switchCamera" , "Switching camera failed: " + id , result );
777
796
}
778
797
779
798
/**
0 commit comments