remove the previous weird way of setting photo/video resolution

This commit is contained in:
tibbi 2017-03-19 18:43:51 +01:00
parent 7fadf48b4f
commit e29717da20
17 changed files with 12 additions and 243 deletions

View File

@ -5,7 +5,6 @@ import android.graphics.Point;
import android.graphics.Rect;
import android.hardware.Camera;
import android.media.AudioManager;
import android.media.CamcorderProfile;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.media.MediaScannerConnection;
@ -37,7 +36,6 @@ public class Preview extends ViewGroup
public static final int PHOTO_PREVIEW_LENGTH = 1000;
private static final String TAG = Preview.class.getSimpleName();
private static final int FOCUS_AREA_SIZE = 100;
private static final float RATIO_TOLERANCE = 0.1f;
private static SurfaceHolder mSurfaceHolder;
private static Camera mCamera;
@ -159,7 +157,6 @@ public class Preview extends ViewGroup
}
mConfig = Config.Companion.newInstance(mContext);
mForceAspectRatio = mConfig.getForceRatioEnabled();
return true;
}
@ -224,8 +221,8 @@ public class Preview extends ViewGroup
int rotation = Utils.Companion.getMediaRotation(mActivity, mCurrCameraId);
rotation += Utils.Companion.compensateDeviceRotation(mCurrCameraId, mCallback.getCurrentOrientation());
final Camera.Size maxSize = getOptimalPictureSize();
mParameters.setPictureSize(maxSize.width, maxSize.height);
/*final Camera.Size maxSize = getOptimalPictureSize();
mParameters.setPictureSize(maxSize.width, maxSize.height);*/
mParameters.setRotation(rotation % 360);
if (mConfig.isSoundEnabled()) {
@ -274,58 +271,6 @@ public class Preview extends ViewGroup
mCanTakePicture = true;
}
private Camera.Size getOptimalPictureSize() {
final int maxResolution = mConfig.getMaxPhotoResolution();
final List<Camera.Size> sizes = mParameters.getSupportedPictureSizes();
Collections.sort(sizes, new SizesComparator());
Camera.Size maxSize = sizes.get(0);
for (Camera.Size size : sizes) {
final boolean isProperRatio = isProperRatio(size);
final boolean isProperResolution = isProperResolution(size, maxResolution);
if (isProperResolution && isProperRatio) {
maxSize = size;
break;
}
}
return maxSize;
}
private boolean isProperResolution(Camera.Size size, int maxRes) {
return maxRes == 0 || size.width * size.height < maxRes;
}
private boolean isProperRatio(Camera.Size size) {
final float currRatio = (float) size.height / size.width;
float wantedRatio = (float) 3 / 4;
if (mForceAspectRatio || mIsVideoMode)
wantedRatio = (float) 9 / 16;
final float diff = Math.abs(currRatio - wantedRatio);
return diff < RATIO_TOLERANCE;
}
private Camera.Size getOptimalVideoSize() {
final int maxResolution = Utils.Companion.getMaxVideoResolution(mConfig);
final List<Camera.Size> sizes = getSupportedVideoSizes();
Collections.sort(sizes, new SizesComparator());
Camera.Size maxSize = sizes.get(0);
final int cnt = sizes.size();
for (int i = 0; i < cnt; i++) {
Camera.Size size = sizes.get(i);
final boolean isProperRatio = !mForceAspectRatio || isProperRatio(size);
final boolean isProperResolution = isProperResolution(size, maxResolution);
if (isProperResolution && isProperRatio) {
maxSize = size;
break;
}
if (i == cnt - 1) {
Utils.Companion.showToast(mContext, R.string.no_valid_resolution_found);
}
}
return maxSize;
}
public List<Camera.Size> getSupportedVideoSizes() {
if (mParameters.getSupportedVideoSizes() != null) {
return mParameters.getSupportedVideoSizes();
@ -575,11 +520,11 @@ public class Preview extends ViewGroup
return false;
}
final Camera.Size videoSize = getOptimalVideoSize();
/*final Camera.Size videoSize = getOptimalVideoSize();
final CamcorderProfile cpHigh = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
cpHigh.videoFrameWidth = videoSize.width;
cpHigh.videoFrameHeight = videoSize.height;
mRecorder.setProfile(cpHigh);
mRecorder.setProfile(cpHigh);*/
if (Utils.Companion.needsStupidWritePermissions(getContext(), mCurrVideoPath)) {
if (mConfig.getTreeUri().isEmpty()) {

View File

@ -26,18 +26,6 @@ class Config(context: Context) : BaseConfig(context) {
get() = prefs.getBoolean(SHOW_PREVIEW, false)
set(enabled) = prefs.edit().putBoolean(SHOW_PREVIEW, enabled).apply()
var forceRatioEnabled: Boolean
get() = prefs.getBoolean(FORCE_RATIO, true)
set(enabled) = prefs.edit().putBoolean(FORCE_RATIO, enabled).apply()
var maxPhotoResolution: Int
get() = prefs.getInt(MAX_PHOTO_RESOLUTION, FIVE_MPX)
set(maxRes) = prefs.edit().putInt(MAX_PHOTO_RESOLUTION, maxRes).apply()
var maxVideoResolution: Int
get() = prefs.getInt(MAX_VIDEO_RESOLUTION, P720)
set(maxRes) = prefs.edit().putInt(MAX_VIDEO_RESOLUTION, maxRes).apply()
var isSoundEnabled: Boolean
get() = prefs.getBoolean(SOUND, true)
set(enabled) = prefs.edit().putBoolean(SOUND, enabled).apply()

View File

@ -6,20 +6,9 @@ object Constants {
val ORIENT_LANDSCAPE_RIGHT = 2
}
val TWO_MPX = 3000000
val FIVE_MPX = 6000000
val EIGHT_MPX = 9000000
val P480 = 400000
val P720 = 1000000
val P1080 = 2100000
// shared preferences
val SAVE_PHOTOS = "save_photos"
val SHOW_PREVIEW = "show_preview"
val SOUND = "sound"
val FORCE_RATIO = "force_ratio"
val MAX_PHOTO_RESOLUTION = "max_photo_resolution"
val MAX_VIDEO_RESOLUTION = "max_video_resolution"
val LAST_USED_CAMERA = "last_used_camera"
val LAST_FLASHLIGHT_STATE = "last_flashlight_state"

View File

@ -156,15 +156,5 @@ class Utils {
rotation += Utils.compensateDeviceRotation(currCameraId, deviceOrientation)
return rotation % 360
}
fun getMaxVideoResolution(config: Config): Int {
return when (config.maxVideoResolution) {
0 -> 400000
1 -> 1000000
2 -> 2100000
else -> 0
}
}
}
}

View File

@ -3,7 +3,8 @@ package com.simplemobiletools.camera.activities
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import com.simplemobiletools.camera.*
import com.simplemobiletools.camera.BuildConfig
import com.simplemobiletools.camera.R
import com.simplemobiletools.camera.extensions.config
import com.simplemobiletools.commons.dialogs.FilePickerDialog
import com.simplemobiletools.commons.extensions.humanizePath
@ -25,7 +26,6 @@ class SettingsActivity : SimpleActivity() {
setupSavePhotosFolder()
setupShowPreview()
setupSound()
setupForceRatio()
setupMaxPhotoResolution()
setupMaxVideoResolution()
updateTextColors(settings_holder)
@ -77,72 +77,17 @@ class SettingsActivity : SimpleActivity() {
}
}
private fun setupForceRatio() {
settings_force_ratio.isChecked = config.forceRatioEnabled
settings_force_ratio_holder.setOnClickListener {
settings_force_ratio.toggle()
config.forceRatioEnabled = settings_force_ratio.isChecked
}
}
private fun setupMaxPhotoResolution() {
/*settings_max_photo_resolution.setSelection(getMaxPhotoSelection())
settings_max_photo_resolution.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
config.maxPhotoResolution = getMaxPhotoPx(settings_max_photo_resolution.selectedItemPosition)
}
settings_max_photo_resolution.text = ""
settings_max_photo_resolution_holder.setOnClickListener {
override fun onNothingSelected(parent: AdapterView<*>?) {
}
}*/
}
private fun getMaxPhotoSelection(): Int {
val maxRes = config.maxPhotoResolution
return when (maxRes) {
TWO_MPX -> 0
FIVE_MPX -> 1
EIGHT_MPX -> 2
else -> 3
}
}
private fun getMaxPhotoPx(index: Int): Int {
return when (index) {
0 -> TWO_MPX
1 -> FIVE_MPX
2 -> EIGHT_MPX
else -> -1
}
}
private fun setupMaxVideoResolution() {
/*settings_max_video_resolution.setSelection(getMaxVideoSelection())
settings_max_video_resolution.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onNothingSelected(parent: AdapterView<*>?) {
}
settings_max_photo_resolution.text = ""
settings_max_photo_resolution_holder.setOnClickListener {
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
config.maxVideoResolution = getMaxVideoPx(settings_max_video_resolution.selectedItemPosition)
}
}*/
}
private fun getMaxVideoSelection(): Int {
return when (config.maxVideoResolution) {
P480 -> 0
P720 -> 1
P1080 -> 2
else -> 3
}
}
private fun getMaxVideoPx(index: Int): Int {
return when (index) {
0 -> P480
1 -> P720
2 -> P1080
else -> -1
}
}
}

View File

@ -105,26 +105,6 @@
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_force_ratio_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/medium_margin"
android:background="?attr/selectableItemBackground"
android:padding="@dimen/activity_margin">
<com.simplemobiletools.commons.views.MySwitchCompat
android:id="@+id/settings_force_ratio"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@null"
android:clickable="false"
android:paddingLeft="@dimen/medium_margin"
android:paddingStart="@dimen/medium_margin"
android:text="@string/force_ratio"/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_max_photo_resolution_holder"
android:layout_width="match_parent"
@ -144,8 +124,7 @@
android:layout_toLeftOf="@+id/settings_max_photo_resolution"
android:layout_toStartOf="@+id/settings_max_photo_resolution"
android:paddingLeft="@dimen/medium_margin"
android:paddingRight="@dimen/medium_margin"
android:text="@string/max_photo_size"/>
android:paddingRight="@dimen/medium_margin"/>
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/settings_max_photo_resolution"
@ -180,8 +159,7 @@
android:layout_toLeftOf="@+id/settings_max_video_resolution"
android:layout_toStartOf="@+id/settings_max_video_resolution"
android:paddingLeft="@dimen/medium_margin"
android:paddingRight="@dimen/medium_margin"
android:text="@string/max_video_size"/>
android:paddingRight="@dimen/medium_margin"/>
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/settings_max_video_resolution"

View File

@ -12,15 +12,10 @@
<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_gallery_app_available">Keine Galerie App verfügbar</string>
<string name="no_valid_resolution_found">Keine gültige Auflösung mit gewähltem Seitenverhältnis gefunden, nutze maximale Auflösung</string>
<!-- Settings -->
<string name="save_photos">Save photos and videos to</string>
<string name="force_ratio">Erzwinge 16:9 Format</string>
<string name="show_preview">Zeige eine Vorschau des Photos nach der Aufnahme</string>
<string name="max_photo_size">Maximale Fotoauflösung</string>
<string name="max_video_size">Maximale Videoauflösung</string>
<string name="no_limit">Kein Limit</string>
<string name="shutter_sound">Auslösegeräusch</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->

View File

@ -12,15 +12,10 @@
<string name="no_permissions">No hay mucho que hacer sin los permisos para acceder a la cámara y al almacenamiento</string>
<string name="no_audio_permissions">Se necesita el permiso de micrófono para grabar vídeos</string>
<string name="no_gallery_app_available">No hay disponible una aplicación de galería</string>
<string name="no_valid_resolution_found">Resolución no válida con la proporción de aspecto seleccionada, usando máxima resolución</string>
<!-- Settings -->
<string name="save_photos">Guardar fotografías y vídeos en</string>
<string name="force_ratio">Usar proporción de aspecto 16:9</string>
<string name="show_preview">Show a photo preview after capturing</string>
<string name="max_photo_size">Resolución máxima para fotografía</string>
<string name="max_video_size">Resolución máxima para vídeo</string>
<string name="no_limit">Sin límite</string>
<string name="shutter_sound">Sonido del obturador</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->

View File

@ -12,15 +12,10 @@
<string name="no_permissions">Peu de choses à faire sans accès à ni la caméra ni la mémoire</string>
<string name="no_audio_permissions">Nous avons besoin de l\'autorisation sur l\'audio pour enregistrer des vidéos</string>
<string name="no_gallery_app_available">Pas d\'application album disponible</string>
<string name="no_valid_resolution_found">Pas de résolution valide trouvé avec le ratio sélectionné; utilisation de la résolution maximale</string>
<!-- Settings -->
<string name="save_photos">Sauvegarder les photos et vidéos vers</string>
<string name="force_ratio">Ratio 16:9</string>
<string name="show_preview">Apercevoir la photo après la prise</string>
<string name="max_photo_size">Limite max de résolution des photos</string>
<string name="max_video_size">Limite max de résolution de vidéo</string>
<string name="no_limit">aucun</string>
<string name="shutter_sound">Son de l\'obturateur</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->

View File

@ -12,15 +12,10 @@
<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_gallery_app_available">Nessuna app galleria disponibile</string>
<string name="no_valid_resolution_found">No valid resolution with selected aspect ratio found, using max resolution</string>
<!-- Settings -->
<string name="save_photos">Save photos and videos to</string>
<string name="force_ratio">Forza proporzione 16:9</string>
<string name="show_preview">Show a photo preview after capturing</string>
<string name="max_photo_size">Limite risoluzione foto</string>
<string name="max_video_size">Video resolution limit</string>
<string name="no_limit">nessuno</string>
<string name="shutter_sound">Suono otturatore</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->

View File

@ -12,15 +12,10 @@
<string name="no_permissions">お使いのカメラやストレージにアクセスしないと、ほとんど行うことはありません</string>
<string name="no_audio_permissions">ビデオを記録するためにオーディオのアクセス許可が必要です</string>
<string name="no_gallery_app_available">利用可能なギャラリーアプリがありません</string>
<string name="no_valid_resolution_found">選択したアスペクト比で有効な解像度が見つかりません。最大解像度を使用しています</string>
<!-- Settings -->
<string name="save_photos">写真とビデオの保存先</string>
<string name="force_ratio">強制的に 16:9 レシオにする</string>
<string name="show_preview">キャプチャ後に写真のプレビューを表示</string>
<string name="max_photo_size">写真解像度の限度</string>
<string name="max_video_size">ビデオ解像度の限度</string>
<string name="no_limit">なし</string>
<string name="shutter_sound">シャッター音</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->

View File

@ -12,15 +12,10 @@
<string name="no_permissions">Nėra ką daryti kai kamera ir saugykla neprieinama</string>
<string name="no_audio_permissions">Mums reikia audio leidimo, kad įrašyti vaizdo bylas</string>
<string name="no_gallery_app_available">Nėra galerijos programėlės</string>
<string name="no_valid_resolution_found">Nerasta tinkamos raiškos su with pasirinktu kraštinių santykiu, naudojant maksimalią raišką</string>
<!-- Settings -->
<string name="save_photos">Išsaugoti nuotraukas ir vaizdo įrašus į</string>
<string name="force_ratio">Naudoti 16:9 santykį</string>
<string name="show_preview">Show a photo preview after capturing</string>
<string name="max_photo_size">Maksimalios nuotraukos raiškos limitas</string>
<string name="max_video_size">Maksimalios vaizdo įrašo raiškos limitas</string>
<string name="no_limit">nieko</string>
<string name="shutter_sound">Užrakto garsas</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->

View File

@ -12,15 +12,10 @@
<string name="no_permissions">É necessária a permissão para aceder à câmara e ao armazenamento</string>
<string name="no_audio_permissions">Necessitamos da permissão de áudio para gravar os vídeos</string>
<string name="no_gallery_app_available">Nenhuma aplicação de galeria disponível</string>
<string name="no_valid_resolution_found">Nenhuma resolução encontrada que seja compatível com o rácio selecionado, a utilizar a resolução máxima</string>
<!-- Settings -->
<string name="save_photos">Guardar fotos e vídeos em</string>
<string name="force_ratio">Utilizar rácio 16:9</string>
<string name="show_preview">Mostrar pré-visualização após a captura</string>
<string name="max_photo_size">Resolução máxima das fotos</string>
<string name="max_video_size">Resolução máxima dos vídeos</string>
<string name="no_limit">sem limite</string>
<string name="shutter_sound">Som do obturador</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->

View File

@ -12,15 +12,10 @@
<string name="no_permissions">Не так много можно сделать без доступа к камере и хранилищу</string>
<string name="no_audio_permissions">Нам нужно аудио разрешение для записи видео</string>
<string name="no_gallery_app_available">Нет доступного приложения-галереи</string>
<string name="no_valid_resolution_found">Для выбранного соотношения сторон не существует подходящего разрешения. Будет использовано максимально возможное</string>
<!-- Settings -->
<string name="save_photos">Сохранять фото и видео в</string>
<string name="force_ratio">Принудительное соотношение сторон 16:9</string>
<string name="show_preview">Показывать сделанное фото</string>
<string name="max_photo_size">Лимит разрешения фото</string>
<string name="max_video_size">Лимит разрешения видео</string>
<string name="no_limit">нет</string>
<string name="shutter_sound">Звук затвора</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->

View File

@ -12,15 +12,10 @@
<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_gallery_app_available">Ingen galleri-app finns tillgänglig</string>
<string name="no_valid_resolution_found">No valid resolution with selected aspect ratio found, using max resolution</string>
<!-- Settings -->
<string name="save_photos">Save photos and videos to</string>
<string name="force_ratio">Tvinga 16:9-förhållande</string>
<string name="show_preview">Show a photo preview after capturing</string>
<string name="max_photo_size">Bildupplösningsgräns</string>
<string name="max_video_size">Video resolution limit</string>
<string name="no_limit">inga</string>
<string name="shutter_sound">Slutarljud</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->

View File

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="max_photo_resolutions" translatable="false">
<item>2 MP</item>
<item>5 MP</item>
<item>8 MP</item>
<item>@string/no_limit</item>
</string-array>
<string-array name="max_video_resolutions" translatable="false">
<item>480p</item>
<item>720p</item>
<item>1080p</item>
<item>@string/no_limit</item>
</string-array>
</resources>

View File

@ -12,15 +12,10 @@
<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_gallery_app_available">No gallery app available</string>
<string name="no_valid_resolution_found">No valid resolution with selected aspect ratio found, using max resolution</string>
<!-- Settings -->
<string name="save_photos">Save photos and videos to</string>
<string name="force_ratio">Use 16:9 ratio</string>
<string name="show_preview">Show a photo preview after capturing</string>
<string name="max_photo_size">Max photo resolution limit</string>
<string name="max_video_size">Max video resolution limit</string>
<string name="no_limit">none</string>
<string name="shutter_sound">Shutter sound</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->