API камеры в android вылетает - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь открыть камеру в android приложении нажатием кнопки. Оно открывается в методе starActivity (), но приложение вылетает при использовании метода startActivityForResult ().

package com.enigmacoder.cameratest;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    ImageView cameraimage;
    Button camerabtn;
    Intent cameratake;

    final int REQUEST_NUMBER = 1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        camerabtn = findViewById(R.id.cbtn);
        cameraimage = findViewById(R.id.cameraimageview);

        camerabtn.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
   try {
       cameratake = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
       if(cameratake.resolveActivity(getPackageManager())!=null)
       {
           startActivityForResult(cameratake,REQUEST_NUMBER);
       }
   }

   catch (Exception e)
   {
       Toast.makeText(this,e.toString(),Toast.LENGTH_LONG).show();
   }

    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {

        super.onActivityResult(requestCode, resultCode, data);
        try {
            if (requestCode == REQUEST_NUMBER && resultCode == RESULT_OK) {
                Bundle image = data.getExtras();
                Bitmap imagebitmap = (Bitmap) image.get("data");
                cameraimage.setImageBitmap(imagebitmap);

            }
        }
        catch (Exception e)
        {
            Toast.makeText(this,e.toString(),Toast.LENGTH_LONG).show();
        }

    }
}

Я добавил эту строку в файле манифеста

 <uses-feature android:name="android.hardware.Camera2"
        android:required="true"/>

Я также использовал Camera вместо Camera2, но приложение по-прежнему зависает.

enter image description here

Нет возможность разрешить разрешение камеры вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...