сохранение фотографий, сделанных в определенную папку - PullRequest
2 голосов
/ 25 марта 2012

Мне нужна помощь с сохранением снимков, сделанных моей камерой, в определенную папку на 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);

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

Я посмотрел на следующий ответ и попытался реализовать некоторые из предложений: Как сохранить изображения с камеры в Android в определенную папку? . Одна вещь, которую я не пробовал, была в последнем предложении на OnActivityResult. Это ключ или есть что-то еще, что мне не хватает? Здесь на этой странице упоминается ContentResolver Camera Intent просто не работает , одна вещь состоит в том, что обе страницы выглядят так, как будто они хотят сделать то же самое, но делают это по-разному.

1 Ответ

1 голос
/ 27 марта 2012

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

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 с использованием кода результата, возвращенного из приложения камеры, вы можете либо повторно вызвать камеру и запустить ее снова, либо закрыть ее и вернуться к другому действию.Это не было частью первоначального вопроса, но у меня была проблема.

...