Невозможно захватить изображения с помощью фронтальной камеры, при применении setParameters - PullRequest
0 голосов
/ 22 апреля 2019

На самом деле есть две проблемы, с которыми я сталкиваюсь прямо сейчас в моем приложении.

1) Получение RuntimeException при использовании передней камеры.

2) ориентация захвата изображения с помощью задней камеры зависит от устройства, это означает, что в некоторых устройствах у меня была совершенно точная ориентация, а в некоторых - нет.

В соответствии с правилами сайта я не должен задавать два вопроса в одном вопросе, но корень проблемы одинаков в обоих вопросах, то есть setParameters, поэтому я задаю в одном вопросе.

Код:

Ответственный за захват изображения.

    public void TakeImage(){
//        try {
            Camera.Parameters param;
            param = mCamera.getParameters();
            param.setRotation(90);
            Camera.Size bestSize = null;
            List<Camera.Size> sizeList = mCamera.getParameters().getSupportedPreviewSizes();
            bestSize = sizeList.get(0);
            for (int i = 1; i < sizeList.size(); i++) {
                if ((sizeList.get(i).width * sizeList.get(i).height) > (bestSize.width * bestSize.height)) {
                    bestSize = sizeList.get(i);
                }
            }

            List<Integer> supportedPreviewFormats = param.getSupportedPreviewFormats();
            Iterator<Integer> supportedPreviewFormatsIterator = supportedPreviewFormats.iterator();
            while (supportedPreviewFormatsIterator.hasNext()) {
                Integer previewFormat = supportedPreviewFormatsIterator.next();
                if (previewFormat == ImageFormat.YV12) {
                    param.setPreviewFormat(previewFormat);
                }
            }

            param.setPreviewSize(bestSize.width, bestSize.height);

            param.setPictureSize(bestSize.width, bestSize.height);

            mCamera.setParameters(param);
            mCamera.takePicture(null, null, mPicture);
//        }
//        catch (Exception e){
//            Toast.makeText(getApplicationContext(),"camera capture exception",Toast.LENGTH_SHORT).show();
//        }

    }

LogCate при использовании фронтальной камеры. Исключение:

2019-04-19 10:49:14.054 20679-20679/com.example.clapdetection E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.clapdetection, PID: 20679
    java.lang.RuntimeException: setParameters failed
        at android.hardware.Camera.native_setParameters(Native Method)
        at android.hardware.Camera.setParameters(Camera.java:1980)
        at com.example.clapdetection.Activity.CameraActivity.TakeImage(CameraActivity.java:465)
        at com.example.clapdetection.Activity.CameraActivity$1$1.onClick(CameraActivity.java:110)
        at android.view.View.performClick(View.java:5637)
        at android.view.View$PerformClick.run(View.java:22433)
        at android.os.Handler.handleCallback(Handler.java:751)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6126)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
...