将CWAC-camera迁移到CWAC-cam2

时间:2015-08-29 16:07:00

标签: android commonsware-cwac

我已经用CWAC-camera实现了cameraview(导入com.commonsware.cwac.camera.CameraView),我想切换到使用CWAC-Cam2,就像我做这个迁移一样,我不再找到CameraHost或者CameraHostProvider。因为我可以在我的活动中使用CWAC-Cam2的相机。

我不能这样做:'(

对不起英语不好,谢谢!

所以我用这个时刻:

 import com.commonsware.cwac.camera.CameraHost;
import com.commonsware.cwac.camera.CameraHostProvider;
import com.commonsware.cwac.camera.CameraView;
import com.commonsware.cwac.camera.PictureTransaction;
import com.commonsware.cwac.camera.SimpleCameraHost;


public class MainActivity extends BaseActivity implements CameraHostProvider
        {


    @InjectView(R.id.cameraView)
    CameraView cameraView;


    @Override
    protected void onResume()
    {
        super.onResume();
        cameraView.onResume();
        //initCamera(varCamera,1);
    }



    @Override
    protected void onPause()
    {
             super.onPause();
             cameraView.onPause();
    }



            @Override
            public CameraHost getCameraHost() {

                return myCameraHost=new MyCameraHost(this);
            }

            class MyCameraHost extends SimpleCameraHost {

                private Camera.Size previewSize;

                public MyCameraHost(Context ctxt) {
                    super(ctxt);
                }

                @Override
                public boolean useFullBleedPreview() {
                    return true;
                }

                @Override
                public Camera.Size getPictureSize(PictureTransaction xact, Camera.Parameters parameters) {
                    return previewSize;
                }

                @Override
                public Camera.Parameters adjustPreviewParameters(Camera.Parameters parameters) {
                    Camera.Parameters parameters1 = super.adjustPreviewParameters(parameters);

                    previewSize = parameters1.getPreviewSize();
                    return parameters1;
                }

                @Override
                public void saveImage(PictureTransaction xact, final Bitmap bitmap) {
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            showTakenPicture(bitmap);
                        }
                    });
                }

                @Override
                public void saveImage(PictureTransaction xact, byte[] image) {
                    super.saveImage(xact, image);
                    photoPath = getPhotoPath();
                }
            }


            private void showTakenPicture(Bitmap bitmap) {
                vUpperPanel.showNext();
                vLowerPanel.showNext();
                newImage=bitmap;
                ivTakenPhoto.setImageBitmap(bitmap);
                updateState(STATE_SETUP_PHOTO);
            }

        }

1 个答案:

答案 0 :(得分:0)

  

我想切换到使用CWAC-Cam2

这是不切实际的,特别是在你的情况下。

CWAC-Cam2旨在填补我所设想的CWAC-Camera将填充的相同角色:使相机API更容易使用,而不必依赖于不可靠的ACTION_IMAGE_CAPTURE / ACTION_VIDEO_CAPTURE实现

但是,CWAC-Cam2的API 完全不同。任何使用过CameraView的人都可以直接使用相机API。

CWAC-Cam2的API更接近ACTION_IMAGE_CAPTUREACTION_VIDEO_CAPTURE的替代品。如果您以前曾使用CameraFragment也许,您可以在没有太多问题的情况下转移到CWAC-Cam2,但我对此表示怀疑。