2016-02-22 2 views
-1

Я делаю приложение, которое позволит пользователям делать фотографии и сохранять их в приложении, которое будет защищено паролем. До сих пор приложение может делать снимок, извлекать его и устанавливать на изображение. Однако, когда я перезапускаю приложение, изображение уходит. Как я могу его сохранить?Как сохранить изображение в моем приложении?

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); 
     } 
    } 


} 

ответ

0

Этот образ, который вы передаете в Intent - файл изображения сохраняется там. Просто сохраните URI в SharedPreferences или другом постоянном хранилище и проверьте это хранилище при следующем запуске приложения.

0

Этот код работает на меня:

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); 
    } 
} 

Это как определить 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(); 
} 

ваши глобальные переменные

private Uri mImageCaptureUri; 
private File mFileTemp; 

1) Определите ваши глобальные переменные

2) Затем определяют mFileTemp

3) Затем вызвать метод takePicture()