Не удается разрешить символ "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. В противном случае каждый раз, когда вы будете загружать растровое изображение, ваше приложение будет аварийно завершать работу с ошибкой нехватки памяти.