【问题标题】:Is there any way to listen for when the camera has loaded in? cwac-camera有什么方法可以监听相机何时加载? cwac 相机
【发布时间】:2014-08-07 18:45:12
【问题描述】:

我已经完成了 CWAC 相机片段设置,一切正常。我想做一些自定义。

  1. 我想在相机片段加载到它的宿主 Activity/Fragment 时显示一个 ProgressBar
  2. 用户拍照后,我想在拍照按钮上再次显示一个 ProgressBar,以便他们明白在相机再次准备好之前无法立即拍照

通过查看 CWAC Camera 的文档,我没有找到任何支持这种回调的东西。这种事情甚至可以听吗?如果是这样,图书馆是否有一种我没有看到的简单方法?

提前感谢您的帮助。

【问题讨论】:

    标签: android camera commonsware-cwac


    【解决方案1】:

    要在加载相机并开始预览时收到通知,请使用以下代码:

    public class MyCameraFragment extends CameraFragment {
    
        CameraView cameraView;
    
        Camera.PreviewCallback previewCallback = new Camera.PreviewCallback() {
            @Override
            public void onPreviewFrame(byte[] data, Camera camera) {
                // camera is "loaded" and first preview is sent to the screen
                // do whatever you want to do
            }
        };
    
        @Override
        public void onViewCreated(View view, Bundle savedInstanceState) {
            super.onViewCreated(view, savedInstanceState);
            cameraView = // code to find your CameraView
        }
    
        @Override
        public void onResume() {
            super.onResume();
            Camera camera = cameraView.getCamera();
            if (null != camera) {
                camera.setOneShotPreviewCallback(previewCallback);
            }
        }
    
        private void somehowRestartedCameraViewForWhateverReason() {
            if (null != cameraView) {
                cameraView.onResume(); // force it to restart
                Camera camera = cameraView.getCamera();
                if (null != camera) {
                    camera.setOneShotPreviewCallback(previewCallback);
                }
            }
        }
    }
    

    我使用此代码更新 UI,以便仅在支持相机时才会出现闪光灯按钮:

    camera.getParameters().getSupportedFlashModes()
    

    返回非空列表和大小> 0。通常前置摄像头没有闪光灯,但谁知道呢?

    如果你想切换相机,也请在此处查看我的其他答案: CWAC Camera - Multiple camera views in one layout (and switching between them)

    【讨论】:

      【解决方案2】:

      我想在相机加载到 Activity/Fragment 时显示一个 ProgressBar

      我不知道“加载到 Activity/Fragment”是什么意思。

      用户拍照后,我想在拍照按钮上再次显示一个 ProgressBar,这样他们就知道在相机再次准备好之前不能立即拍照

      你知道你什么时候打电话给takePicture()。通过创建自己的CameraHost 实现或SimpleCameraHost 的子类,您可以知道何时在CameraHost 上调用saveImage()。你可以在那个时候做你的ProgressBar 工作。您可以在 the demo app 中看到这一点,我出于相同目的禁用并重新启用操作栏项。

      【讨论】:

      • 很抱歉给您带来了困惑。我在上面编辑。我只是想说在启动 Activity 时第一次将相机加载到视图中时显示一个进度条。谢谢你的提示。我会检查一下,看看它是否有效。
      • @RyanSimon:“我的意思是说,在启动 Activity 时,当相机第一次加载到视图中时显示进度条”——在 Activity 中输入 ProgressBar,然后让片段在它上面(Z轴),我猜。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-20
      • 1970-01-01
      相关资源
      最近更新 更多