allow picking any folder for storing the photos and videos

This commit is contained in:
tibbi 2016-11-01 12:54:37 +01:00
parent 70c07f9688
commit 229f7111f2
12 changed files with 22 additions and 59 deletions

View File

@ -3,6 +3,7 @@ package com.simplemobiletools.camera;
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.hardware.Camera; import android.hardware.Camera;
import android.os.Environment;
public class Config { public class Config {
private SharedPreferences mPrefs; private SharedPreferences mPrefs;
@ -31,12 +32,12 @@ public class Config {
mPrefs.edit().putBoolean(Constants.IS_DARK_THEME, isDarkTheme).apply(); mPrefs.edit().putBoolean(Constants.IS_DARK_THEME, isDarkTheme).apply();
} }
public boolean getUseDCIMFolder() { public String getSavePhotosFolder() {
return mPrefs.getBoolean(Constants.USE_DCIM, true); return mPrefs.getString(Constants.SAVE_PHOTOS, Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).toString());
} }
public void setUseDCIMFolder(boolean useDCIM) { public void setSavePhotosFolder(String path) {
mPrefs.edit().putBoolean(Constants.USE_DCIM, useDCIM).apply(); mPrefs.edit().putString(Constants.SAVE_PHOTOS, path).apply();
} }
public boolean getForceRatioEnabled() { public boolean getForceRatioEnabled() {

View File

@ -9,7 +9,7 @@ public class Constants {
public static final String PREFS_KEY = "Camera"; public static final String PREFS_KEY = "Camera";
public static final String IS_FIRST_RUN = "is_first_run"; public static final String IS_FIRST_RUN = "is_first_run";
public static final String IS_DARK_THEME = "is_dark_theme"; public static final String IS_DARK_THEME = "is_dark_theme";
public static final String USE_DCIM = "use_dcim"; public static final String SAVE_PHOTOS = "save_photos";
public static final String SOUND = "sound"; public static final String SOUND = "sound";
public static final String FORCE_RATIO = "force_ratio"; public static final String FORCE_RATIO = "force_ratio";
public static final String MAX_RESOLUTION = "max_resolution"; public static final String MAX_RESOLUTION = "max_resolution";

View File

@ -7,7 +7,6 @@ import android.content.pm.PackageManager;
import android.content.res.Resources; import android.content.res.Resources;
import android.graphics.Point; import android.graphics.Point;
import android.hardware.Camera; import android.hardware.Camera;
import android.os.Environment;
import android.support.v4.content.ContextCompat; import android.support.v4.content.ContextCompat;
import android.view.Display; import android.view.Display;
import android.widget.Toast; import android.widget.Toast;
@ -50,7 +49,7 @@ public class Utils {
} }
public static String getOutputMediaFile(Context context, boolean isPhoto) { public static String getOutputMediaFile(Context context, boolean isPhoto) {
final File mediaStorageDir = getFolderName(context, isPhoto); final File mediaStorageDir = new File(Config.newInstance(context).getSavePhotosFolder());
if (!mediaStorageDir.exists()) { if (!mediaStorageDir.exists()) {
if (!mediaStorageDir.mkdirs()) { if (!mediaStorageDir.mkdirs()) {
@ -66,28 +65,6 @@ public class Utils {
} }
} }
private static File getFolderName(Context context, boolean isPhoto) {
if (Config.newInstance(context).getUseDCIMFolder()) {
return Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
}
final Resources res = context.getResources();
String typeDirectory = res.getString(R.string.photo_directory);
if (!isPhoto) {
typeDirectory = res.getString(R.string.video_directory);
}
return new File(getMainDirectory(isPhoto), typeDirectory);
}
private static File getMainDirectory(boolean isPhoto) {
String type = Environment.DIRECTORY_MOVIES;
if (isPhoto) {
type = Environment.DIRECTORY_PICTURES;
}
return Environment.getExternalStoragePublicDirectory(type);
}
public static String formatSeconds(int duration) { public static String formatSeconds(int duration) {
final StringBuilder sb = new StringBuilder(8); final StringBuilder sb = new StringBuilder(8);
final int hours = duration / (60 * 60); final int hours = duration / (60 * 60);

View File

@ -48,10 +48,9 @@ class SettingsActivity : SimpleActivity() {
} }
private fun setupUseDCIM() { private fun setupUseDCIM() {
settings_use_dcim.isChecked = mConfig.useDCIMFolder settings_save_photos.text = mConfig.savePhotosFolder.substring(mConfig.savePhotosFolder.lastIndexOf("/") + 1)
settings_use_dcim_holder.setOnClickListener { settings_save_photos_holder.setOnClickListener {
settings_use_dcim.toggle()
mConfig.useDCIMFolder = settings_use_dcim.isChecked
} }
} }

View File

@ -39,7 +39,7 @@
</RelativeLayout> </RelativeLayout>
<RelativeLayout <RelativeLayout
android:id="@+id/settings_use_dcim_holder" android:id="@+id/settings_save_photos_holder"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/settings_padding" android:layout_marginTop="@dimen/settings_padding"
@ -47,15 +47,15 @@
android:padding="@dimen/activity_margin"> android:padding="@dimen/activity_margin">
<TextView <TextView
android:id="@+id/settings_use_dcim_label" android:id="@+id/settings_save_photos_label"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:paddingLeft="@dimen/settings_padding" android:paddingLeft="@dimen/settings_padding"
android:text="@string/use_dcim_folder"/> android:text="@string/save_photos"/>
<android.support.v7.widget.SwitchCompat <TextView
android:id="@+id/settings_use_dcim" android:id="@+id/settings_save_photos"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentRight="true" android:layout_alignParentRight="true"

View File

@ -7,8 +7,6 @@
<string name="video_saving_error">Beim Speichern des Videos ist ein Fehler aufgetreten</string> <string name="video_saving_error">Beim Speichern des Videos ist ein Fehler aufgetreten</string>
<string name="video_setup_error">Beim Starten der Aufnahme ist ein Fehler aufgetreten</string> <string name="video_setup_error">Beim Starten der Aufnahme ist ein Fehler aufgetreten</string>
<string name="video_mode_error">Beim Umschalten zum Videomodus ist ein Fehler aufgetreten</string> <string name="video_mode_error">Beim Umschalten zum Videomodus ist ein Fehler aufgetreten</string>
<string name="video_directory">Simple Videos</string>
<string name="photo_directory">Simple Photos</string>
<string name="camera_switch_error">Kamerawechsel fehlgeschlagen</string> <string name="camera_switch_error">Kamerawechsel fehlgeschlagen</string>
<string name="no_permissions">Ohne Zugriff auf Kamera und Speicher ist hier nicht viel zu tun</string> <string name="no_permissions">Ohne Zugriff auf Kamera und Speicher ist hier nicht viel zu tun</string>
<string name="no_audio_permissions">Wir benötigen Zugriff auf das Mirkofon um Videos aufnehmen zu können</string> <string name="no_audio_permissions">Wir benötigen Zugriff auf das Mirkofon um Videos aufnehmen zu können</string>
@ -18,7 +16,7 @@
<!-- Settings --> <!-- Settings -->
<string name="settings">Einstellungen</string> <string name="settings">Einstellungen</string>
<string name="dark_theme">Dunkles Design</string> <string name="dark_theme">Dunkles Design</string>
<string name="use_dcim_folder">Speichere Dateien im vorgegebenen DCIM Ordner</string> <string name="save_photos">Save photos and videos to</string>
<string name="force_ratio">Erzwinge 16:9 Format</string> <string name="force_ratio">Erzwinge 16:9 Format</string>
<string name="max_photo_size">Maximale Fotoauflösung</string> <string name="max_photo_size">Maximale Fotoauflösung</string>
<string name="max_video_size">Maximale Videoauflösung</string> <string name="max_video_size">Maximale Videoauflösung</string>

View File

@ -7,8 +7,6 @@
<string name="video_saving_error">Errore nel salvataggio del file video</string> <string name="video_saving_error">Errore nel salvataggio del file video</string>
<string name="video_setup_error">Errore nella preparazione del registratore video</string> <string name="video_setup_error">Errore nella preparazione del registratore video</string>
<string name="video_mode_error">Passaggio alla modalità video fallita</string> <string name="video_mode_error">Passaggio alla modalità video fallita</string>
<string name="video_directory">Simple Video</string>
<string name="photo_directory">Simple Foto</string>
<string name="camera_switch_error">Cambio fotocamera fallito</string> <string name="camera_switch_error">Cambio fotocamera fallito</string>
<string name="no_permissions">Non c\'è molto da fare senza l\'accesso alla fotocamera e all\'archiviazione</string> <string name="no_permissions">Non c\'è molto da fare senza l\'accesso alla fotocamera e all\'archiviazione</string>
<string name="no_audio_permissions">È necessario l\'accesso al microfono per registrare i video</string> <string name="no_audio_permissions">È necessario l\'accesso al microfono per registrare i video</string>
@ -18,7 +16,7 @@
<!-- Settings --> <!-- Settings -->
<string name="settings">Impostazioni</string> <string name="settings">Impostazioni</string>
<string name="dark_theme">Tema scuro</string> <string name="dark_theme">Tema scuro</string>
<string name="use_dcim_folder">Store media in the default DCIM folder</string> <string name="save_photos">Save photos and videos to</string>
<string name="force_ratio">Forza proporzione 16:9</string> <string name="force_ratio">Forza proporzione 16:9</string>
<string name="max_photo_size">Limite risoluzione foto</string> <string name="max_photo_size">Limite risoluzione foto</string>
<string name="max_video_size">Video resolution limit</string> <string name="max_video_size">Video resolution limit</string>

View File

@ -7,8 +7,6 @@
<string name="video_saving_error">ビデオファイルの保存時にエラーが発生しました</string> <string name="video_saving_error">ビデオファイルの保存時にエラーが発生しました</string>
<string name="video_setup_error">レコーダーのセットアップ時にエラーが発生しました</string> <string name="video_setup_error">レコーダーのセットアップ時にエラーが発生しました</string>
<string name="video_mode_error">ビデオモードへの切り替えに失敗しました</string> <string name="video_mode_error">ビデオモードへの切り替えに失敗しました</string>
<string name="video_directory">シンプル ビデオ</string>
<string name="photo_directory">シンプル フォト</string>
<string name="camera_switch_error">カメラの切り替えに失敗しました</string> <string name="camera_switch_error">カメラの切り替えに失敗しました</string>
<string name="no_permissions">お使いのカメラやストレージにアクセスしないと、ほとんど行うことはありません</string> <string name="no_permissions">お使いのカメラやストレージにアクセスしないと、ほとんど行うことはありません</string>
<string name="no_audio_permissions">ビデオを記録するためにオーディオのアクセス許可が必要です</string> <string name="no_audio_permissions">ビデオを記録するためにオーディオのアクセス許可が必要です</string>
@ -18,7 +16,7 @@
<!-- Settings --> <!-- Settings -->
<string name="settings">設定</string> <string name="settings">設定</string>
<string name="dark_theme">ダークテーマ</string> <string name="dark_theme">ダークテーマ</string>
<string name="use_dcim_folder">Store media in the default DCIM folder</string> <string name="save_photos">Save photos and videos to</string>
<string name="force_ratio">強制的に 16:9 レシオにする</string> <string name="force_ratio">強制的に 16:9 レシオにする</string>
<string name="max_photo_size">写真解像度の限度</string> <string name="max_photo_size">写真解像度の限度</string>
<string name="max_video_size">Video resolution limit</string> <string name="max_video_size">Video resolution limit</string>

View File

@ -7,8 +7,6 @@
<string name="video_saving_error">Ocorreu um erro ao guardar o ficheiro de vídeo</string> <string name="video_saving_error">Ocorreu um erro ao guardar o ficheiro de vídeo</string>
<string name="video_setup_error">Ocorreu um erro ao configurar a gravação</string> <string name="video_setup_error">Ocorreu um erro ao configurar a gravação</string>
<string name="video_mode_error">Falha ao mudar para o modo vídeo</string> <string name="video_mode_error">Falha ao mudar para o modo vídeo</string>
<string name="video_directory">Vídeos simples</string>
<string name="photo_directory">Fotografias simples</string>
<string name="camera_switch_error">Falha ao mudar de câmara</string> <string name="camera_switch_error">Falha ao mudar de câmara</string>
<string name="no_permissions">É necessária a permissão para aceder à câmara e ao armazenamento</string> <string name="no_permissions">É necessária a permissão para aceder à câmara e ao armazenamento</string>
<string name="no_audio_permissions">A permissão de áudio é necessária para a gravação de vídeos</string> <string name="no_audio_permissions">A permissão de áudio é necessária para a gravação de vídeos</string>
@ -18,7 +16,7 @@
<!-- Settings --> <!-- Settings -->
<string name="settings">Definições</string> <string name="settings">Definições</string>
<string name="dark_theme">Tema escuro</string> <string name="dark_theme">Tema escuro</string>
<string name="use_dcim_folder">Armazenar multimédia na pasta pré-definida \"DCIM\"</string> <string name="save_photos">Save photos and videos to</string>
<string name="force_ratio">Usar rácio 16:9</string> <string name="force_ratio">Usar rácio 16:9</string>
<string name="max_photo_size">Resolução máxima das fotografias</string> <string name="max_photo_size">Resolução máxima das fotografias</string>
<string name="max_video_size">Resolução máxima dos vídeos</string> <string name="max_video_size">Resolução máxima dos vídeos</string>

View File

@ -7,8 +7,6 @@
<string name="video_saving_error">Произошла ошибка записи видео файла</string> <string name="video_saving_error">Произошла ошибка записи видео файла</string>
<string name="video_setup_error">Произошла ошибка настройки рекордера</string> <string name="video_setup_error">Произошла ошибка настройки рекордера</string>
<string name="video_mode_error">Переключение в режим видео не удалось</string> <string name="video_mode_error">Переключение в режим видео не удалось</string>
<string name="video_directory">Просто Видео</string>
<string name="photo_directory">Просто Фото</string>
<string name="camera_switch_error">Переключение камеры не удалось</string> <string name="camera_switch_error">Переключение камеры не удалось</string>
<string name="no_permissions">Не так много можно сделать без доступа к камере и хранилищу</string> <string name="no_permissions">Не так много можно сделать без доступа к камере и хранилищу</string>
<string name="no_audio_permissions">Нам нужно аудио разрешение для записи видео</string> <string name="no_audio_permissions">Нам нужно аудио разрешение для записи видео</string>
@ -18,7 +16,7 @@
<!-- Settings --> <!-- Settings -->
<string name="settings">Настройки</string> <string name="settings">Настройки</string>
<string name="dark_theme">темная тема</string> <string name="dark_theme">темная тема</string>
<string name="use_dcim_folder">Store media in the default DCIM folder</string> <string name="save_photos">Save photos and videos to</string>
<string name="force_ratio">Принудительное соотношение сторон 16:9</string> <string name="force_ratio">Принудительное соотношение сторон 16:9</string>
<string name="max_photo_size">Лимит разрешения фото</string> <string name="max_photo_size">Лимит разрешения фото</string>
<string name="max_video_size">Video resolution limit</string> <string name="max_video_size">Video resolution limit</string>

View File

@ -7,8 +7,6 @@
<string name="video_saving_error">Ett fel uppstod när videofilen skulle sparas</string> <string name="video_saving_error">Ett fel uppstod när videofilen skulle sparas</string>
<string name="video_setup_error">Ett fel uppstod när inspelningen skulle starta</string> <string name="video_setup_error">Ett fel uppstod när inspelningen skulle starta</string>
<string name="video_mode_error">Byte till videoläge misslyckades</string> <string name="video_mode_error">Byte till videoläge misslyckades</string>
<string name="video_directory">Simple videos</string>
<string name="photo_directory">Simple bilder</string>
<string name="camera_switch_error">Byte av kamera misslyckades</string> <string name="camera_switch_error">Byte av kamera misslyckades</string>
<string name="no_permissions">Inte mycket att göra utan tillgång till din kamera och lagring</string> <string name="no_permissions">Inte mycket att göra utan tillgång till din kamera och lagring</string>
<string name="no_audio_permissions">För att spela in video krävs ljudrättigheter</string> <string name="no_audio_permissions">För att spela in video krävs ljudrättigheter</string>
@ -18,7 +16,7 @@
<!-- Settings --> <!-- Settings -->
<string name="settings">Inställningar</string> <string name="settings">Inställningar</string>
<string name="dark_theme">Mörkt tema</string> <string name="dark_theme">Mörkt tema</string>
<string name="use_dcim_folder">Store media in the default DCIM folder</string> <string name="save_photos">Save photos and videos to</string>
<string name="force_ratio">Tvinga 16:9-förhållande</string> <string name="force_ratio">Tvinga 16:9-förhållande</string>
<string name="max_photo_size">Bildupplösningsgräns</string> <string name="max_photo_size">Bildupplösningsgräns</string>
<string name="max_video_size">Video resolution limit</string> <string name="max_video_size">Video resolution limit</string>

View File

@ -7,8 +7,6 @@
<string name="video_saving_error">An error occurred saving the video file</string> <string name="video_saving_error">An error occurred saving the video file</string>
<string name="video_setup_error">An error occurred setting up the recorder</string> <string name="video_setup_error">An error occurred setting up the recorder</string>
<string name="video_mode_error">Switching to video mode failed</string> <string name="video_mode_error">Switching to video mode failed</string>
<string name="video_directory">Simple Videos</string>
<string name="photo_directory">Simple Photos</string>
<string name="camera_switch_error">Switching camera failed</string> <string name="camera_switch_error">Switching camera failed</string>
<string name="no_permissions">Not much to do without accessing your camera and storage</string> <string name="no_permissions">Not much to do without accessing your camera and storage</string>
<string name="no_audio_permissions">We need the audio permission for recording videos</string> <string name="no_audio_permissions">We need the audio permission for recording videos</string>
@ -18,7 +16,7 @@
<!-- Settings --> <!-- Settings -->
<string name="settings">Settings</string> <string name="settings">Settings</string>
<string name="dark_theme">Dark theme</string> <string name="dark_theme">Dark theme</string>
<string name="use_dcim_folder">Store media in the default DCIM folder</string> <string name="save_photos">Save photos and videos to</string>
<string name="force_ratio">Use 16:9 ratio</string> <string name="force_ratio">Use 16:9 ratio</string>
<string name="max_photo_size">Max photo resolution limit</string> <string name="max_photo_size">Max photo resolution limit</string>
<string name="max_video_size">Max video resolution limit</string> <string name="max_video_size">Max video resolution limit</string>