Почему я получаю нулевое растровое изображение, если передаю ему допустимые параметры? - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь создать приложение, которое при нажатии кнопки запускает камеру телефона. когда снимок сделан, он отобразит изображение на маленьком квадрате с использованием Bitmap and BitmapFactory. Я использовал тот же код таким же образом в другом приложении, которое я сделал, и это сработало. но в этом приложении камера открывается, делает снимок, дает мне путь и файл, но когда я создаю Bitmap, он возвращает ноль. Camera and Read and Write External Permissions предоставляется.

код:

public void takePicture() {
    //use in debug mode, strict policy, on avoid UI Thread consumption
    StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
    StrictMode.setVmPolicy(builder.build());


    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    // tell where the file will be (file path)
    filename = Environment.getExternalStorageDirectory() + File.separator + date.getTime() + ".jpg";
    // create the file
    File file = new File(filename);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
    try {
        this.startActivityForResult(intent, CAMERA_IMAGE);
    } catch (Exception e) {
        Toast.makeText(context, e.getMessage(), Toast.LENGTH_SHORT).show();
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
        case CAMERA_IMAGE:
            if (resultCode != RESULT_OK) {
                Toast.makeText(context, "SomeText", Toast.LENGTH_SHORT).show();
            } else {
                File file = new File(filename);
                Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
                Log.d("TAG", "onActivityResult: " + bitmap); -> **this prints 'null'**
                viewList.get(viewsCount++).setImageBitmap(bitmap);

                connectionClass.uploadToStorage(filename, new FirebaseUploadingListener() {
                    @Override
                    public void onSucessUpload(UploadTask.TaskSnapshot taskSnapshot) {
                        Log.d("fromMain", "onSucessUpload: " + taskSnapshot);
                    }

                    @Override
                    public void onFailure(Exception e) {
                        Log.e("fromMain", "onFailure: " + e.getMessage());
                    }
                });
                break;
            }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...