2014-01-21 6 views
1

Пробовал много методов, но не достиг положительного результата. В TableLayout имеет ImageView:Загрузить изображение с SDCard на изображение не работает

<TableLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@color/photo_layout_background" 
    android:stretchColumns="*" > 

    <TableRow 
     android:background="@color/photo_layoutrow_background" 
     android:layout_weight="1" 
     android:layout_marginBottom="4dp" 
     android:gravity="center" > 

    <ImageView 
     android:id="@+id/photo1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_marginRight="4dp" 
     android:src="@drawable/icon_photo" 
     android:background="@color/photo_background" 
     android:clickable="true" 
     android:onClick="addPhoto_Click"/> 

При нажатии на процедуре стандартного ImageView предложения для получения изображений и файл сохраняется на SD карте:

public void addPhoto_Click(View v){ 
    select_add_photo_id = v.getId(); 
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, generateFilePhotoUri()); 
    startActivityForResult(takePictureIntent, CAMERA_RESULT); 
} 

@SuppressLint("SimpleDateFormat") 
private Uri generateFilePhotoUri() { 
    File file = null; 
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
    file = new File(MEDIA_PATH + String.valueOf(id) + File.separator + timeStamp + ".jpg"); 
    select_add_photo_file = file.getAbsolutePath(); 
    return Uri.fromFile(file); 
} 

Фотография сохраняется обычно хранятся в переменных select_add_photo_id id ImageView, на котором нажата переменная select_add_photo_file, содержит полный путь к файловой фотографии.

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == CAMERA_RESULT) { 
     if (resultCode == RESULT_OK){ 
      ImageView imgView = (ImageView) findViewById(select_add_photo_id); 
      imgView.setImageDrawable(Drawable.createFromPath(select_add_photo_file)); 

     } 

    } 
} 

Но когда файл получает только ImageView ImageView с фоном и увеличенным размером. Фотография не загружается. Ошибок нет.

Как все еще установлены фотографии?

ответ

1

после взять телефон в onActivityResult, data.getData может быть пустым, в этом случае, попробуйте data.getExtras()

Bitmap photo = null; 
Uri photoUri = data.getData(); 
String filePath = ""; 
if (photoUri != null) { 
    //mFilePath = getRealPathFromURI(photoUri); 
    filePath = getRealPathFromURI(photoUri); 
    photo = BitmapFactory.decodeFile(photoUri.getPath()); 
} 
if (photo == null) { 
    Bundle extra = data.getExtras(); 
    if (extra != null) { 
     photo = (Bitmap)extra.get("data"); 
... 
+0

Ошибка на Uri photoUri = data.getData(); – SmallSani

+0

@SmallSani более подробно? Я использовал этот код в одном из моих проектов, и он работает. – jiashie

+0

Произошла ошибка в логике программы. Да, ваш код работает. Спасибо! – SmallSani

Смежные вопросы