Класс OnClickListener не открывает камеру - PullRequest
0 голосов
/ 29 апреля 2020

В настоящее время у меня есть MainActitivty. java и я хочу создать PhotoActitivty. java, чтобы очистить его и позволить каждой кнопке или действию иметь свой собственный класс. По какой-то причине мой новый класс PhotoActivity не открывает намерения камеры.

У меня есть что-то вроде этого:

public class MainActivity extends AppCompatActivity {
    private Button firstPictureButton;

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (Build.VERSION.SDK_INT >= 23) {
            requestPermissions(new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE}, 2);
        }

        firstPictureButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(getApplicationContext(), PhotoActivity.class));
            }
        });
    }
}

Я создал новый класс и назвал его PhotoActivity. java вызывать этот класс каждый раз, когда нажимается кнопка для намерения камеры.

В настоящее время у меня есть:

public class PhotoActivity extends AppCompatActivity implements View.OnClickListener {
    private final int REQUEST = 1;
    private File image;
    private String pathToFile;
    private ImageView imageView;

    @Override
    public void onClick(View view) {
        imageView = findViewById(R.id.imageView);
        dispatchTakePictureIntent();
    }

    public void dispatchTakePictureIntent() {
        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        // Make sure there's camera activity to handle the camera intent
        if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
            // Create an empty File for the soon created File
            File photoFile = null;
            try {
                photoFile = createImageFile();
            } catch (Exception e) {
                // Error when creating the File
                e.printStackTrace();
            }
            // If File created
            if (photoFile != null) {
                Uri photoURI = FileProvider.getUriForFile(this,
                        "com.example.inventorymanager.fileprovider",
                        photoFile);
                takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
                startActivityForResult(takePictureIntent, REQUEST);
            }
        }
    }

    public File createImageFile() throws IOException {
        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());
        String imageFileName = "JPEG_" + timeStamp + "_";
        File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
        image = File.createTempFile(
                imageFileName,  /* prefix */
                ".jpg",   /* suffix */
                storageDir      /* directory */
        );

        // Save the file's path for use with ACTION_VIEW intents
        pathToFile = image.getAbsolutePath();
        return image;
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == REQUEST && resultCode == RESULT_OK) {

            Bitmap myBitmap = BitmapFactory.decodeFile(image.getAbsolutePath());
            imageView.setImageBitmap(myBitmap);

        }

    }
}

Проблема с этим заключается в том, что всякий раз, когда она открывается, onClickListener, камера не открывается, хотя мой метод dispatchTakePictureIntent () есть.

...