首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CWAC相机-实现切换相机按钮

CWAC相机-实现切换相机按钮
EN

Stack Overflow用户
提问于 2014-02-21 03:09:45
回答 3查看 1.4K关注 0票数 1

我正在尝试创建一个切换相机按钮与我的自定义图形用户界面。在我的CustomCam extends SherlockFragmentActivity中,有一个名为onSwitch()的方法,它是从xml android:onClick="onSwitch“调用的。

下面是方法:

代码语言:javascript
复制
public void onClickSwitchButton(View view) {
        if (current == std) {
            ffc = CustomCamFragment.newInstance(true);
            current = ffc;
            getSupportFragmentManager().beginTransaction()
            .replace(R.id.container, current).commit();
            isFrontCamera=true;

            return;

        }


        if (current == ffc) {
            std = CustomCamFragment.newInstance(false);
            current = std;
            isFrontCamera=false;
        }

        getSupportFragmentManager().beginTransaction()
                .replace(R.id.container, current).commit();
    }

我知道该方法是因为断点和日志语句而触发的,但我的屏幕只是变黑了,然后以相同的std视图返回。

注意:我意识到我必须检测手机是否有多个摄像头,或者根本没有摄像头。但现在,这个应用程序不是我要发布的东西。我只想把它用在我自己身上。

我的CustomCamFragment:

代码语言:javascript
复制
public class CustomCamFragment extends CameraFragment {

private static final String KEY_USE_FFC = "com.commonsware.cwac.camera.demo.USE_FFC";

public static CustomCamFragment newInstance(boolean useFFC) {
    CustomCamFragment f = new CustomCamFragment();
    Bundle args = new Bundle();

    args.putBoolean(KEY_USE_FFC, useFFC);
    f.setArguments(args);
    return (f);
}
EN

回答 3

Stack Overflow用户

发布于 2014-02-21 03:27:56

好吧,我不知道CustomCamFragment是什么。不过,您的代码似乎并没有真正切换到另一个摄像头。您正在通过其构造函数创建CustomCamFragment,但没有告诉它要使用哪个相机。您将注意到这不是the demo app的工作方式,我使用工厂方法并传入要使用的摄像头(DemoCameraFragment.newInstance(false)用于后置摄像头,DemoCameraFragment.newInstance(true)用于前置摄像头)。

票数 0
EN

Stack Overflow用户

发布于 2014-08-15 17:16:31

回答你上一个关于片段嵌入的评论:我已经从库中的CameraView构造函数禁用了throw new IllegalArgumentException(...),并且我自己在onCreateView中从我的自定义CameraFragment调用setHost。这样,CameraView的上下文不必是CameraHostProvider,您可以将视图托管在片段中。

票数 0
EN

Stack Overflow用户

发布于 2014-11-02 08:02:24

我想在不推送新片段的情况下切换前后摄像头。在研究了CameraView和CameraHost (SimpleCameraHost)的代码后,我认为最好的解决方案是删除当前的CameraView实例并添加一个新实例:

代码语言:javascript
复制
public class MyCameraFragment extends CameraFragment {

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    addCameraView(view);
}

private void addCameraView(View view) {
    FrameLayout frame = (FrameLayout)v.findViewById(R.id.cameraFrame);
    frame.removeAllViews();
    cameraView = new CameraView(getActivity());
    cameraView.setHost(cameraHost = new MyCameraHost(getActivity()));
    setCameraView(cameraView);
    frame.addView(cameraView);
}

private void doSwitchCamera() {
    // do some change to the settings.
    useFrontFacingCamera = !useFrontFacingCamera;
    if (null != cameraView) {
        cameraView.onPause();
    }
    addCameraView(getView());
 cameraView.onResume();
}

}

我希望这能帮助那些想让他们的片段保持不变/简单代码的人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21917251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档