2009-10-14 4 views
2

Je capturais des images avant qu'elles n'apparaissent dans la galerie, mais maintenant elles ne le sont pas et je n'arrive pas à comprendre pourquoi. Voici mon code:Comment puis-je capturer une image dans Android et l'afficher dans la galerie?

 ContentValues values = new ContentValues(); 
    values.put(android.provider.MediaStore.Images.Media.IS_PRIVATE, false); 
    String name = "ugc_" + String.valueOf(System.currentTimeMillis()); 
    values.put(android.provider.MediaStore.Images.Media.TITLE, name); 
    imageURI = getContentResolver().insert(android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); 

J'ai aussi essayé: values.put (android.provider.MediaStore.Images.Media.IS_PRIVATE, 0); ainsi que de laisser à cette valeur, mais rien ne semble fonctionner maintenant.

Répondre

6

Pas très joli, mais c'est comme ça que je le fais. Notez que due to a bug, le fichier enregistré est 1/16 de la pleine résolution (1/4 dans chaque dimension).

String SD_CARD_TEMP_DIR = Environment.getExternalStorageDirectory() + File.separator + "tmpPhoto.jpg"; 
Intent takePictureFromCameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
takePictureFromCameraIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, Uri.fromFile(new 
      File(SD_CARD_TEMP_DIR))); 
startActivityForResult(takePictureFromCameraIntent, TAKE_PICTURE_WITH_CAMERA); 

. . .

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     // Picture taken from camera 
     if (requestCode == TAKE_PICTURE_WITH_CAMERA) { 
      if (resultCode == Activity.RESULT_OK) { 

       // http://code.google.com/p/android/issues/detail?id=1480 
       //Toast.makeText(AddPhotos.this, "" + data, Toast.LENGTH_SHORT).show(); 

       // on activity return 
       File f = new File(SD_CARD_TEMP_DIR); 
       try { 
        Uri capturedImage = 
         Uri.parse(android.provider.MediaStore.Images.Media.insertImage(getContentResolver(), 
           f.getAbsolutePath(), null, null)); 


         Log.i("camera", "Selected image: " + capturedImage.toString()); 

        f.delete(); 
       } catch (FileNotFoundException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 


      } 
      else { 
       Log.i("Camera", "Result code was " + resultCode); 

      } 
     } 
    } 
Questions connexes