2013-08-14 2 views
2

Я работаю над приложением, которое использует камеру и сохраняет фотографии в DCIM/MyAppFolder. Мой первый вопрос заключается в том, следует ли сохранять его в DCIM или Pictures? Если это имеет значение. Мой второй вопрос: я заметил, что для того, чтобы папка/картинки отображались в собственном приложении галереи, требуется некоторое время. После тестирования с другими приложениями (Instagram, Snapseed, ect) эти фотографии появляются сразу. Есть ли какой-то фрагмент кода, который мне не хватает, чтобы выполнить это? Мой код выглядит следующим образом:Пользовательская папка с фотографиями, отображаемая в Галерее

public void takePhoto() { 
    Intent imageIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 

    //folder stuff 
    File imagesFolder = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), "MyAppFolder"); 
    imagesFolder.mkdirs(); 

    //String filePath = "/MyImages/QR_" + timeStamp + ".png" ; 
    File image = new File(imagesFolder, "IMG_" + timeStamp + ".jpg"); 
    imageUri = Uri.fromFile(image); 

    imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); 
    startActivityForResult(imageIntent, TAKE_PICTURE); 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    switch (requestCode) { 
    case 1: 
     if (resultCode == Activity.RESULT_OK) { 
      Uri selectedImage = imageUri; 
      getContentResolver().notifyChange(selectedImage, null); 
      ContentResolver cr = getContentResolver(); 
      Bitmap bitmap; 
      try { 
       bitmap = android.provider.MediaStore.Images.Media 
       .getBitmap(cr, selectedImage); 

       Toast.makeText(this, selectedImage.toString(), 
         Toast.LENGTH_LONG).show(); 
      } catch (Exception e) { 
       Toast.makeText(this, "Failed to load", Toast.LENGTH_SHORT) 
         .show(); 
       Log.e("Camera", e.toString()); 
      } 
     } 
    } 
} 

ответ

4

обновить приложение галереи. просто после того, как вы нажмете «Сохранить», просто поместите этот простой код после сохранения.

  sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, 
       Uri.parse("file://" 
         + Environment.getExternalStorageDirectory()))); 

Этот код скажет приложению о галерее, что что-то было добавлено, поэтому, пожалуйста, сканируйте носитель сейчас: D.

+0

Должен ли я изменить 'Environment.getExternalStorageDirectory()' на 'Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_DCIM)'? –

+0

nope. потому что он будет сканировать всю SD-карту. так что держите его как есть. и, пожалуйста, примите ответ, поскольку он может помочь другим позже. – k0sh

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