2012-03-25 4 views
2

Я хотел бы помочь с сохранением фотографий, снятых с моей камеры, в определенную папку на SD-карте. Моя камера открывается, снимает фотографии и сохраняет их; но он сохраняет их в стандартной папке. Код у меня так как для:сохранение фотографий, сделанных в определенной папке

public class Camera extends Activity { 
public static final int MEDIA_TYPE_IMAGE = 1; 
public static final int MEDIA_TYPE_VIDEO = 2; 
private static final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 100; 
String Path; 
private Uri fileUri; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Bundle extras=getIntent().getExtras(); 
    Path= extras.getString("Path"); 
    Log.d("camear","path: "+Path); 
    //File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "MyCameraApp"); 

    Intent intent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA); 
     this.startActivity(intent); 
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
    //mediaFile = new File(mediaStorageDir.getPath() + File.separator +"IMG_"+ timeStamp + ".jpg"); 

    //fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE); 
    Uri outputFileUri= Uri.fromFile(new File(Path+"/camera/"+timeStamp+".jpg"));// create a file to save the image 
    intent.putExtra("output", outputFileUri); // set the image file name 

    // start the image capture Intent 
    startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE); 

путь исходит от другой деятельности по применению, и он передает его значения в порядке. В предыдущем действии он создает папки, в которые я хочу сохранить фотографии.

Я рассмотрел следующий ответ и попытался реализовать некоторые из предложений: How to save images from Camera in Android to specific folder?. Одна вещь, которую я не пробовал, была в последнем предложении OnActivityResult. Это ключ или есть что-то еще, что мне не хватает? Эта страница здесь упоминает ContentResolver The Camera Intent is simply not working, одна вещь состоит в том, что обе страницы выглядят так, как будто они хотят сделать то же самое, но по-иному по-разному.

+1

Paul, добавьте это 'intent.putExtra (MediaStore.EXTRA_OUTPUT, outputFileUri);' –

+0

вы предлагаете добавить его в файл или заменить другие намерения.putExtra, которые у меня уже есть? Когда я пытаюсь добавить и заменить его, все равно делает то же самое. Используя мой отладчик, я вижу, что outputFileUri указывает на: file: /// mnt/sdcard/BucketMonkey/32rm215/camera. Это просто стандарт, чтобы добавить последний файл камеры в путь? У меня нет mkdir для пути, включая камеру, это будет причиной моей проблемы? –

+0

Я не могу отредактировать свое предыдущее сообщение, но проигнорирую свой комментарий о том, что камера прикреплена к концу, это была моя собственная ошибка. Но даже если путь к законной папке, он по-прежнему сохраняется в основной папке камеры. –

ответ

1

Я понял, что я делал неправильно. Если вы посмотрите на код, я допустил две ошибки. Первая ошибка была на моем пути. Я получил правильный путь от предыдущего действия, однако я не создал путь к папке здесь. Это код, который работал для меня:

File Folder=new File(Path); 
File picFile= new File(Folder.getPath()+"/"+timeStamp+".jpg"); 

Первые проверки строки для папки, то вторая строка создает файл, используя путь к папке. У меня не было ни одной части. Если бы он не нашел путь, это было просто спасение, если бы оно хотело.

Еще одна проблема, с которой я столкнулся с моим вызовом Intent, я использовал: MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA. Это без каких-либо @Overrides, по-видимому, действует как фактическое сохранение камеры в своей папке. Я изменил это на:
MediaStore.ACTION_IMAGE_CAPTURE, что позволяет мне немного больше контролировать.

Другой вопрос, который я имел и понял, был с ACTION_IMAGE_CAPTURE, это займет и закрыть. Но если вы реализуете onActivityResult, используя код результата, возвращенный из приложения камеры, вы можете повторно вызвать камеру и снова запустить ее, или вы можете закрыть ее и вернуться к другому действию. Это не было частью первоначального вопроса, но это был вопрос, который у меня был.

+0

Можете ли вы разместить решение, пожалуйста? –

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