Не удается разрешить символ "PICTURE_RESULT" в Android

Я пытаюсь написать фрагмент кода, который хранит изображение, захваченное устройством Android, сохраняет это изображение, а затем отображает изображение в ImageView. Я нашел некоторый код в Stackru ( низкое качество изображения / изображения при захвате с камеры), у которого был хороший прием, но я не могу реализовать этот код из-за того, что Android говорит, что не может разрешить символ "PICTURE_RESULT". Я хочу использовать этот код, чтобы изображение могло отображаться с лучшим качеством изображения, чем при более низком качестве, которое получается при отображении прямо из захвата изображения.

Вот как я реализовал код, который точно такой же, как он был описан в посте, который я связал:

public void launchCamera(View view){
    values = new ContentValues();
    values.put(MediaStore.Images.Media.TITLE, "New Picture");
    values.put(MediaStore.Images.Media.DESCRIPTION, "From your camera");
    imageUri = getContentResolver().insert(
            MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
    //use standard intent to capture an image
    Intent captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    //output captureIntent to imageUri
    captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
    //Take a picture and pass results along to onActivityResult
    PICTURE_RESULT = 1;
    startActivityForResult(captureIntent, PICTURE_RESULT);
}

Вот код для onActivityResult():

protected void onActivityResult(int requestCode, int resultCode, Intent data){
    switch (requestCode) {

            if (PICTURE_RESULT == 1)
                if (resultCode == Activity.RESULT_OK) {
                    try {
                        Bitmap thumbnail = MediaStore.Images.Media.getBitmap(
                                getContentResolver(), imageUri);
                        imageView.setImageBitmap(thumbnail);
                        URI imageurl = getRealPathFromURI(imageUri);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }

                }
    }

А вот код для getRealPathFromURI():

public String getRealPathFromURI(Uri contentUri) {
    String[] proj = { MediaStore.Images.Media.DATA };
    Cursor cursor = managedQuery(contentUri, proj, null, null, null);
    int column_index = cursor
            .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);
}

1 ответ

Вы должны использовать приведенный ниже код.

 try {
        String path = getRealPathFromURI(data.getData());
     } catch (Exception e) {
           e.printStackTrace();
     }

вместо этого кода.

 try {
     Bitmap thumbnail = MediaStore.Images.Media.getBitmap(
                                getContentResolver(), imageUri);
     imageView.setImageBitmap(thumbnail);
     URI imageurl = getRealPathFromURI(imageUri);
     } catch (Exception e) {
    e.printStackTrace();
     }

Также я заметил, что вы отображаете изображение в imageview. Вы должны отображать изображение из пути, используя загрузчик изображений или библиотеку Picasso. В противном случае каждый раз, когда вы будете загружать растровое изображение, ваше приложение будет аварийно завершать работу с ошибкой нехватки памяти.

Другие вопросы по тегам