简体   繁体   English

CWAC CAMERA-切换前后摄像头不起作用

[英]CWAC CAMERA-switching Front-Back camera not working

I have integrated [CWAC-CAMERA][1].I am trying to switch between back and front camera by clicking on the button using the below code but its not working.I can see only the default back camera.Where am I going wrong? 我已经集成了[CWAC-CAMERA] [1]。我尝试通过使用以下代码单击按钮来在前后摄像头之间切换,但是它不起作用。我只能看到默认的后置摄像头。 ?

     private boolean isBackCam=true;
     f = new CameraFragment();
        builder=new SimpleCameraHost.Builder(new DemoCameraHost(getApplicationContext()));
f.setHost(builder.useFullBleedPreview(true).build());
         handleSwitchCamera=(ImageButton)findViewById(R.id.handleSwitchCamera);
          handleSwitchCamera.setOnClickListener(new View.OnClickListener()
                {
                    @Override
                    public void onClick(View view) 
                {


                    if(isBackCam) 
                        {
                            isBackCam=false;
                            builder.useFrontFacingCamera(true);
                        }
                        else
                        {
                            isBackCam=true;
                            builder.useFrontFacingCamera(false);
                        }
                    }
                });

Updated according to CommonsWare answer- 根据CommonsWare回答-

 f = new CameraFragment();
        getFragmentManager().beginTransaction()
                .add(R.id.preview_view, f, TAG_CAMERA_FRAGMENT)
                .commit();
        f2 = new CameraFragment();     
builder=new SimpleCameraHost.Builder(new DemoCameraHost(getApplicationContext()));
        builder2=new SimpleCameraHost.Builder(new DemoCameraHost(getApplicationContext()));
        builder.useFrontFacingCamera(false);
        builder2.useFrontFacingCamera(true);
        f.setHost(builder.useFullBleedPreview(true).build());
        f2.setHost(builder2.useFullBleedPreview(true).build());
handleSwitchCamera.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View view) {
            if(isBackCam) {
                Log.e("bhuvnesh","backcam");
                isBackCam=false;


                getFragmentManager().beginTransaction()
                        .replace(R.id.preview_view, f2, TAG_CAMERA_FRAGMENT)
                        .commit();
            }
            else
            {
                Log.e("bhuvnesh","frontcam");
                isBackCam=true;


                getFragmentManager().beginTransaction()
                        .replace(R.id.preview_view, f, TAG_CAMERA_FRAGMENT)
                        .commit();
            }
        }
    });
  [1]: https://github.com/commonsguy/cwac-camera

You need to call setHost() after fully configuring the Builder . 完全配置Builder 之后,需要调用setHost() You cannot just change the Builder later on and expect a change. 您不能仅稍后更改Builder并期待更改。

Note that setHost() is designed to be called once per fragment. 请注意, setHost()设计为每个片段调用一次。 If you want to switch between cameras, you need to switch fragments (one per camera), as the demo app does. 如果要在摄像机之间切换,则需要像演示应用程序一样切换片段(每个摄像机一个)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM