2015-02-18 1 views
0

я м выбора изображения из галереи и урожая в моем телефоне и загружать на сервер ..Как выбрать изображение из галереи

Когда им тестирование Someother устройств, то изображения было поднято Невозможно к некоторым устройствам

public void selectImageFromGallery() { 
    String TEMP_PHOTO_FILE = "temporary_holder.jpg"; 

    Intent photoPickerIntent = new Intent(Intent.ACTION_PICK, 
      android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
    photoPickerIntent.setType("image/*"); 
    photoPickerIntent.putExtra("crop", "true"); 
    photoPickerIntent.putExtra(MediaStore.EXTRA_OUTPUT, getTempUri()); 
    photoPickerIntent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString()); 
    startActivityForResult(photoPickerIntent, PICK_IMAGE); 


} 

private Uri getTempUri() { 
    return Uri.fromFile(getTempFile()); 
} 

private File getTempFile() { 

    if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { 

     File file = new File(Environment.getExternalStorageDirectory(),"temporary_holder.jpg"); 
     try { 
      file.createNewFile(); 
     } catch (IOException e) {} 

     return file; 
    } else { 

     return null; 
    } 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, 
      Intent imageReturnedIntent) { 

     super.onActivityResult(requestCode, resultCode, imageReturnedIntent); 

     switch (requestCode) 
     { 
      case PICK_IMAGE: 
       if (resultCode == RESULT_OK) { 
        if (imageReturnedIntent!=null) { 

         File tempFile = getTempFile(); 

         String filePath= Environment.getExternalStorageDirectory() 
          +"/"+"temporary_holder.jpg"; 
         System.out.println("path "+filePath); 


         decodeFile(filePath); 

         if (tempFile.exists()) tempFile.delete(); 
        } 
       } 
     } 
     } 

/** 
* The method decodes the image file to avoid out of memory issues. Sets the 
* selected image in to the ImageView. 
* 
* @param filePath 
*/ 
public void decodeFile(String filePath) { 
// Decode image size 
BitmapFactory.Options o = new BitmapFactory.Options(); 
o.inJustDecodeBounds = true; 
BitmapFactory.decodeFile(filePath, o); 

// The new size we want to scale to 
final int REQUIRED_SIZE = 1024; 

// Find the correct scale value. It should be the power of 2. 
int width_tmp = o.outWidth, height_tmp = o.outHeight; 
int scale = 1; 
while (true) { 
    if (width_tmp < REQUIRED_SIZE && height_tmp < REQUIRED_SIZE) 
    break; 
    width_tmp /= 2; 
    height_tmp /= 2; 
    scale *= 2; 
} 

// Decode with inSampleSize 
BitmapFactory.Options o2 = new BitmapFactory.Options(); 
o2.inSampleSize = scale; 
bitmap = BitmapFactory.decodeFile(filePath, o2); 

roundedImage=new RoundedImage(bitmap); 
    image.setImageDrawable(roundedImage); 
} 

вот мой код пожалуйста, скажите мне, где я делаю Wrong

Я хочу удалить, чтобы создать новый файл на SD-карту, если SD-карта не доступна ни в пространстве приложение Crashed

+4

Возможный дубликат [Как выбрать изображение из галереи (SD-карта) для моего приложения?] (Http://stackoverflow.com/questions/2507898/how-to-pick-an-image-from-gallery- sd-card-for-my-app) – Tobrun

+0

Это то, что происходит, когда вы копируете/вставляете код из устаревших/неполных руководств, не понимая, что делает код ... – 2Dee

+0

@ 2Dee ..I m new На Android учебник должен был выбрать изображение из галереи и загрузка на сервер – user3825086

ответ

0

// Инициализировать переменную

int select_photo = 1; 

// Сделать этот метод, чтобы начать Намерение

void Profile_Image_Pick() { 
     Intent in = new Intent(Intent.ACTION_PICK); 
     in.setType("image/*"); 
     startActivityForResult(in, select_photo); 
    } 

// Сейчас на ActivityforResult

@Override 
    protected void onActivityResult(int requestCode, int resultCode, 

     super.onActivityResult(requestCode, resultCode, imagereturnintent); 
     switch (requestCode) { 
     case select_photo: 
      if (resultCode == RESULT_OK) { 

       final Uri imageuri = imagereturnintent.getData(); 


      final InputStream imageStream = getContentResolver() 
        .openInputStream(imageUri); 
      bitmap = BitmapFactory.decodeStream(imageStream); 


      Bitmap bt = Bitmap.createScaledBitmap(bitmap, 70, 70, false); 
      profile_image.setImageBitmap(bt); 

      } 
     } 
    } 

// для проверки SDCard присутствует или не можете использовать

if(android.os.Environment.getExternalStorageState().equals(
       android.os.Environment.MEDIA_MOUNTED)) 
//sdcard present 

else 
//not present 

и, наконец, вызвать метод запуска. Надеюсь, это поможет.