Android相机示例

时间:2015-10-03 10:26:23

标签: java android camera

我正在开发Android相机应用程序,我找到了一个代码:

http://examples.javacodegeeks.com/android/core/hardware/camera-hardware/android-camera-example/

但是我遇到了两个我无法理解的问题。第一个是这一部分:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    myContext = this;
    initialize();
}

实际上,我不明白什么是initialize()和它的目的是什么?我搜索了它,但我没找到任何东西!

第二个问题出在这一部分:

public void onResume() {
    super.onResume();

    if (!hasCamera(myContext)) {

        Toast toast = Toast.makeText(myContext, "Sorry, your phone does not have a camera!", Toast.LENGTH_LONG);
        toast.show();
        finish();
    }
    if (mCamera == null) {

        //if the front facing camera does not exist

        if (findFrontFacingCamera()  1) {

            //release the old camera instance

            //switch camera, from the front and the back and vice versa

            releaseCamera();
            chooseCamera();

        } else {
            Toast toast = Toast.makeText(myContext, "Sorry, your phone has only one camera!", Toast.LENGTH_LONG);
            toast.show();
        }
    }
};

我不理解这个表达式:if (findFrontFacingCamera() 1).因为findFrontFacingCamera()不是boolean而且1中存在问题!

3 个答案:

答案 0 :(得分:1)

教程中存在拼写错误和遗漏。每个下载项目的onResume是

super.onResume();
    if (!hasCamera(myContext)) {
        Toast toast = Toast.makeText(myContext, "Sorry, your phone does not have a camera!", Toast.LENGTH_LONG);
        toast.show();
        finish();
    }
    if (mCamera == null) {
        if (findFrontFacingCamera() < 0) {
            Toast.makeText(this, "No front facing camera found.", Toast.LENGTH_LONG).show();
            switchCamera.setVisibility(View.GONE);
        }
        mCamera = Camera.open(findBackFacingCamera());
        mPicture = getPictureCallback();
        mPreview.refreshCamera(mCamera);
    }

BTW,初始化方法也没有包含在教程中。代码如下:

public void initialize() {
    cameraPreview = (LinearLayout) findViewById(R.id.camera_preview);
    mPreview = new CameraPreview(myContext, mCamera);
    cameraPreview.addView(mPreview);

    capture = (Button) findViewById(R.id.button_capture);
    capture.setOnClickListener(captureListener);

    switchCamera = (Button) findViewById(R.id.button_ChangeCamera);
    switchCamera.setOnClickListener(switchCameraListener);
}

答案 1 :(得分:0)

initialize()

确保您的相机已初始化

  

不理解这个表达式:if(findFrontFacingCamera()1)。   因为findFrontFacingCamera()不是布尔值而且存在问题   1!

在这种情况下,当你试图找到相机时(通常在设备上有2个相机,但在某些情况下只有后置或前置相机) 因此“1”标志表示您要选择第二个摄像头,而“0”将选择第一个(通常是后部)摄像头

答案 2 :(得分:0)

我相信这是一个错字?来自评论专栏,

//if the front facing camera does not exist 
在if条件之前,我可以看到需要进行以下更改。 改变行

if (findFrontFacingCamera() 1) 

if (findFrontFacingCamera()== -1) 

正如我在示例中看到的,这是一个返回摄像机id的方法。

请注意,对于前置摄像头id = 1和后置摄像头,其为0。