在pjsip android中从前向后切换相机

Man*_*noj 5 android sip surfaceview pjsip android-camera

我正在开发pjsip视频通话应用程序。我想在正在进行的通话中切换预览摄像头。

这是我正在尝试的代码。

private void switchCamera(boolean isFront) {
        try {
            int w = (int) SipCallService.currentCall.vidPrev.getVideoWindow()
                    .getInfo().getSize().getW();
            int h = (int) SipCallService.currentCall.vidPrev.getVideoWindow()
                    .getInfo().getSize().getH();
            if (isFront) {
                PjCamera camera = new PjCamera(0, w, h, 0, 0, 0,
                        mSurfaceCapture);
                camera.SwitchDevice(0);
            } else {
                PjCamera camera = new PjCamera(0, w, h, 0, 0, 0,
                        mSurfaceCapture);
                camera.SwitchDevice(1);
            }

        } catch (Exception e) {
            e.printStackTrace();
            showToast("Error while switching camera");
        }
    }
Run Code Online (Sandbox Code Playgroud)

PjCamera是pjsip提供的类。

我无法使用以上代码切换相机。

如果还有其他方法,请指导我。

Ale*_*ohn 0

我从未使用过pjsip库,但是从查看它们的源代码来看,这就是您的方法可以重写的方式:

\n\n
public class PjsipActivity extends Activity {\n\n    PjCamera pjCamera;\n    \xe2\x80\xa6\n    void switchCamera(boolean isFront) {\n        if (pjCamera == null) {\n            int w = (int) SipCallService.currentCall.vidPrev.getVideoWindow()\n                .getInfo().getSize().getW();\n            int h = (int) SipCallService.currentCall.vidPrev.getVideoWindow()\n                .getInfo().getSize().getH();\n            pjCamera = new PjCamera(0, w, h, 0, 0, 0, mSurfaceCapture);\n        }\n\n        CameraInfo ci = new CameraInfo();\n        for (int i = 0; i < Camera.getNumberOfCameras(); i++) {\n            Camera.getCameraInfo(i, ci);\n            if (isFront && ci.facing == CameraInfo.CAMERA_FACING_FRONT ||\n                !isFront && ci.facing == CameraInfo.CAMERA_FACING_BACK) {\n                if (pjCamera.SwitchDevice(i) == 0) {\n                    return;\n                }\n            }\n        }\n        showToast("Error while switching camera");\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

请注意,此代码片段并未解决预览大小问题。据我判断,PjCamera 不支持动态更改宽度和高度。视频窗口的大小可能应该在建立会话之前在两个对等方之间单独协商。如果前置摄像头或后置摄像头不支持此预览尺寸,SwitchDevice()很可能会失败并返回代码-30,但也可能会崩溃或无提示地失败。

\n