2016-02-22 1 views
-1

Je fais une application qui permettra aux utilisateurs de prendre des photos et les enregistrer dans l'application, qui sera protégé par mot de passe. Jusqu'à présent, l'application peut prendre une photo, la récupérer et la définir sur une vue d'image. Cependant, lorsque je redémarre l'application, l'image disparaît. Comment puis-je l'enregistrer?Comment enregistrer une image dans mon application?

int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 0; 
Uri imageUri; 

public void takePic(View view){ 


    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    imageUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "filename_" + 
      String.valueOf(System.currentTimeMillis()) + ".jpg")); 
    intent.putExtra("data", imageUri); 
    startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE); 



} 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

    if (resultCode == RESULT_OK) { 
     if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) { 


      Bundle extras = data.getExtras(); 

      Log.e("URI", imageUri.toString()); 
      Bitmap bmp = (Bitmap) extras.get("data"); 
      ImageView imageView = (ImageView) findViewById(R.id.imageView); 

      imageView.setImageBitmap(bmp); 




     } 
     else if (resultCode == RESULT_CANCELED) { 
      Toast.makeText(this, "Picture was not taken", Toast.LENGTH_SHORT); 
     } 
    } 


} 

Répondre

0

Cette image est transmise à l'intention - le fichier image y est enregistré. Enregistrez simplement l'URI dans SharedPreferences ou tout autre stockage persistant et vérifiez ce stockage la prochaine fois que vous lancerez votre application.

0

Ce code fonctionne sur moi:

private void takePicture() { 

    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

    try { 
     mImageCaptureUri = null; 
     String state = Environment.getExternalStorageState(); 
     if (Environment.MEDIA_MOUNTED.equals(state)) { 
      mImageCaptureUri = Uri.fromFile(mFileTemp); 

     } 
     else { 

      mImageCaptureUri = InternalStorageContentProvider.CONTENT_URI; 

     } 
     intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mImageCaptureUri); 
     intent.putExtra("return-data", true); 
     startActivityForResult(intent, REQUEST_CODE_TAKE_PICTURE); 
    } catch (Exception e) { 

     Log.d("error", "cannot take picture", e); 
    } 
} 

Voici comment définir mFileTemp

String state = Environment.getExternalStorageState(); 
File mFileTemp; 
if (Environment.MEDIA_MOUNTED.equals(state)) { 
//this is like that 
//any folder name/you can add inner folders like that/your photo name122412414124.jpg 
mFileTemp = new File(Environment.getExternalStorageDirectory()+File.separator+"any folder name"+File.separator+"you can add inner folders like that" 
     , "your photo name"+System.currentTimeMillis()+".jpg"); 
mFileTemp.getParentFile().mkdirs(); 
} 
else { 
mFileTemp = new File(getFilesDir()+"any folder name"+ 
     File.separator+"myphotos")+File.separator+"profilephotos", "your photo name"+System.currentTimeMillis()+".jpg"); 
mFileTemp.getParentFile().mkdirs(); 
} 

variables globales

private Uri mImageCaptureUri; 
private File mFileTemp; 

1) Définir vos variables globales

2) Définissez ensuite mFileTemp

3) déclenche ensuite takePicture() méthode