Как изменить путь сохранения камеры? - PullRequest
2 голосов
/ 15 декабря 2011

Фотографии и видео с помощью приложения камеры по умолчанию сохраняются на SD-карте.

Мне действительно нужно знать, есть ли способ (простой или сложный), чтобы изменить путь, чтобы я мог сохранить эти файлы во внутренней памяти .

Или, если вы знаете другое приложение камеры с Android Market, в котором есть возможность изменить путь.

Мне не нужны решения для SD-карт.

Ответы [ 2 ]

6 голосов
/ 15 декабря 2011

Вы можете сделать что-то вроде,

Это работает в моем случае ..

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, getImageUri());
startActivityForResult(intent, TAKE_PHOTO_CODE);

И getImageUri ()

/**
 * Get the uri of the captured file
 * @return A Uri which path is the path of an image file, stored on the dcim folder
 */
private Uri getImageUri() {
    // Store image in dcim
    // Here you can change yourinternal storage path to store those images..
    File file = new File(Environment.getExternalStorageDirectory() + "/DCIM", CAPTURE_TITLE);
    Uri imgUri = Uri.fromFile(file);

    return imgUri;
}

Для получения дополнительной информации смотрите Как сделать снимок и сохранить его с помощью собственной камеры Android

РЕДАКТИРОВАТЬ:

В моем коде я храню изображения на SDCARD, но вы можете указать Внутренний путь хранения в соответствии с вашими потребностями, например, /data/data/<package_name>/files/ ..

Вы можете использовать Context.getFilesDir(). Но имейте в виду, что даже это по умолчанию является частным для вашего приложения, поэтому другие приложения (в том числе хранилище мультимедиа) не смогут получить к нему доступ. Тем не менее, у вас всегда есть возможность сделать файлы доступными для чтения или записи.

также Context.getDir() с Context.MODE_WORLD_WRITEABLE для записи каталога, в который могут писать другие приложения. Но опять же, я подвергаю сомнению необходимость хранить данные изображения в локальном хранилище. Пользователям это не понравится, если только от пользователей не ожидается, что их SD-карта будет установлена ​​во время использования вашего приложения (что не является распространенным).

0 голосов
/ 15 декабря 2011

Да, я верю, что это можно проверить в руководстве для разработчиков.

public static final int MEDIA_TYPE_IMAGE = 1;
public static final int MEDIA_TYPE_VIDEO = 2;

/** Create a file Uri for saving an image or video */
private static Uri getOutputMediaFileUri(int type){
  return Uri.fromFile(getOutputMediaFile(type));
}

/** Create a File for saving an image or video */
private static Uri getOutputMediaFile(int type){
// To be safe, you should check that the SDCard is mounted
// using Environment.getExternalStorageState() before doing this.

File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
          Environment.DIRECTORY_PICTURES), "MyCameraApp");
// This location works best if you want the created images to be shared
// between applications and persist after your app has been uninstalled.

// Create the storage directory if it does not exist
if (! mediaStorageDir.exists()){
    if (! mediaStorageDir.mkdirs()){
        Log.d("MyCameraApp", "failed to create directory");
        return null;
    }
}

// Create a media file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
File mediaFile;
if (type == MEDIA_TYPE_IMAGE){
    mediaFile = new File(mediaStorageDir.getPath() + File.separator +
    "IMG_"+ timeStamp + ".jpg");
} else if(type == MEDIA_TYPE_VIDEO) {
    mediaFile = new File(mediaStorageDir.getPath() + File.separator +
    "VID_"+ timeStamp + ".mp4");
} else {
    return null;
}

return mediaFile;

}

подробнее здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...