В сообщении журнала указывается, что камера не открылась - PullRequest
0 голосов
/ 17 февраля 2019

Я пытаюсь создать приложение, которое использует экран предварительного просмотра камеры во фрагменте.Я решил использовать этот код в качестве отправной точки, так как мне нужно, чтобы камера была во фрагменте:

https://github.com/rexstjohn/UltimateAndroidCameraGuide/blob/master/camera/src/main/java/com/ultimate/camera/fragments/NativeCameraFragment.java

При запуске приложения я получаю следующее сообщение: D / CameraGuide: Ошибка, камера не открылась

Я думаю, это будет означать, что объект камеры не открыт, но код учитывает это.Поэтому я спрашиваю, не хватает ли чего-то, когда пытаюсь понять, почему камера не открывается.

Вот мои разрешения:

    <uses-permission android:name="android.permission.CAMERA" />
    <uses-feature android:name="android.hardware.camera"/>
    <uses-feature android:name="android.hardware.camera.autofocus" />

Вот фрагмент кода из GitHub:

  public View onCreateView(LayoutInflater inflater, ViewGroup container,

                         Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.fragment_camera_test, container, false);



    requestPermission();

    if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED)  {
        Toast.makeText(getActivity(), "Please provide Camera Permission to continue ", Toast.LENGTH_LONG).show();

    }





    // Create our Preview view and set it as the content of our activity.

    boolean opened = safeCameraOpenInView(view);



    if(opened == false){

        Log.d("CameraGuide","Error, Camera failed to open");

        return view;

    }



    // Trap the capture button.

    Button captureButton = (Button) view.findViewById(R.id.button_capture);

    captureButton.setOnClickListener(

            new View.OnClickListener() {

                @Override

                public void onClick(View v) {

                    // get an image from the camera

                    mCamera.takePicture(null, null, mPicture);

                }

            }

    );


 private boolean safeCameraOpenInView(View view) {

    boolean qOpened = false;

    releaseCameraAndPreview();

    mCamera = getCameraInstance();

    mCameraView = view;

    qOpened = (mCamera != null);



    if(qOpened == true){

        mPreview = new CameraPreview(getActivity().getBaseContext(), mCamera,view);

        FrameLayout preview = (FrameLayout) view.findViewById(R.id.camera_preview);

        preview.addView(mPreview);

        mPreview.startCameraPreview();

    }

    return qOpened;

}



/**

 * Safe method for getting a camera instance.

 * @return

 */

public static Camera getCameraInstance(){

    Camera c = null;

    try {

        c = Camera.open(); // attempt to get a Camera instance

    }

    catch (Exception e){

        e.printStackTrace();

    }

    return c; // returns null if camera is unavailable

}
...