From 7e709bebfbcba5fba622a06f6af821c7e45baea4 Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 10 Jul 2018 11:56:05 +0200 Subject: [PATCH] show a video resolution picker if recording fails --- .../camera/dialogs/ChangeResolutionDialog.kt | 8 +++-- .../camera/views/PreviewCameraOne.kt | 2 +- .../camera/views/PreviewCameraTwo.kt | 34 +++++++++++++------ app/src/main/res/values-ar/strings.xml | 1 + app/src/main/res/values-az/strings.xml | 1 + app/src/main/res/values-de/strings.xml | 1 + app/src/main/res/values-es/strings.xml | 1 + app/src/main/res/values-fr/strings.xml | 1 + app/src/main/res/values-gl/strings.xml | 1 + app/src/main/res/values-hr/strings.xml | 1 + app/src/main/res/values-it/strings.xml | 1 + app/src/main/res/values-ja/strings.xml | 1 + app/src/main/res/values-ko/strings.xml | 1 + app/src/main/res/values-lt/strings.xml | 1 + app/src/main/res/values-nl/strings.xml | 1 + app/src/main/res/values-pl/strings.xml | 1 + app/src/main/res/values-pt-rBR/strings.xml | 1 + app/src/main/res/values-pt-rPT/strings.xml | 1 + app/src/main/res/values-ru/strings.xml | 1 + app/src/main/res/values-sk/strings.xml | 1 + app/src/main/res/values-sv/strings.xml | 1 + app/src/main/res/values-tr/strings.xml | 1 + app/src/main/res/values-zh-rTW/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 24 files changed, 51 insertions(+), 14 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/camera/dialogs/ChangeResolutionDialog.kt b/app/src/main/kotlin/com/simplemobiletools/camera/dialogs/ChangeResolutionDialog.kt index ffea0bb5..25ffb6fb 100644 --- a/app/src/main/kotlin/com/simplemobiletools/camera/dialogs/ChangeResolutionDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/camera/dialogs/ChangeResolutionDialog.kt @@ -13,7 +13,7 @@ import com.simplemobiletools.commons.models.RadioItem import kotlinx.android.synthetic.main.dialog_change_resolution.view.* class ChangeResolutionDialog(val activity: SimpleActivity, val isFrontCamera: Boolean, val photoResolutions: ArrayList, - val videoResolutions: ArrayList, val callback: () -> Unit) { + val videoResolutions: ArrayList, val openVideoResolutions: Boolean, val callback: () -> Unit) { private var dialog: AlertDialog private val config = activity.config @@ -27,7 +27,11 @@ class ChangeResolutionDialog(val activity: SimpleActivity, val isFrontCamera: Bo .setPositiveButton(R.string.ok, null) .setOnDismissListener { callback() } .create().apply { - activity.setupDialogStuff(view, this, if (isFrontCamera) R.string.front_camera else R.string.back_camera) + activity.setupDialogStuff(view, this, if (isFrontCamera) R.string.front_camera else R.string.back_camera) { + if (openVideoResolutions) { + view.change_resolution_video_holder.performClick() + } + } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/camera/views/PreviewCameraOne.kt b/app/src/main/kotlin/com/simplemobiletools/camera/views/PreviewCameraOne.kt index a5bb68a6..6aa619d0 100644 --- a/app/src/main/kotlin/com/simplemobiletools/camera/views/PreviewCameraOne.kt +++ b/app/src/main/kotlin/com/simplemobiletools/camera/views/PreviewCameraOne.kt @@ -500,7 +500,7 @@ class PreviewCameraOne : ViewGroup, SurfaceHolder.Callback, MyPreview { val photoResolutions = mCamera!!.parameters.supportedPictureSizes.map { MySize(it.width, it.height) } as ArrayList val videoSizes = mCamera!!.parameters.supportedVideoSizes ?: mCamera!!.parameters.supportedPreviewSizes val videoResolutions = videoSizes.map { MySize(it.width, it.height) } as ArrayList - ChangeResolutionDialog(mActivity!!, getIsUsingFrontCamera(), photoResolutions, videoResolutions) { + ChangeResolutionDialog(mActivity!!, getIsUsingFrontCamera(), photoResolutions, videoResolutions, false) { if (oldResolution != getSelectedResolution()) { refreshPreview() } diff --git a/app/src/main/kotlin/com/simplemobiletools/camera/views/PreviewCameraTwo.kt b/app/src/main/kotlin/com/simplemobiletools/camera/views/PreviewCameraTwo.kt index 4caa3783..f8d083eb 100644 --- a/app/src/main/kotlin/com/simplemobiletools/camera/views/PreviewCameraTwo.kt +++ b/app/src/main/kotlin/com/simplemobiletools/camera/views/PreviewCameraTwo.kt @@ -25,6 +25,8 @@ import android.view.MotionEvent import android.view.Surface import android.view.TextureView import android.view.ViewGroup +import android.widget.Toast +import com.simplemobiletools.camera.R import com.simplemobiletools.camera.activities.MainActivity import com.simplemobiletools.camera.dialogs.ChangeResolutionDialog import com.simplemobiletools.camera.extensions.config @@ -36,6 +38,7 @@ import com.simplemobiletools.camera.models.FocusArea import com.simplemobiletools.camera.models.MySize import com.simplemobiletools.commons.extensions.rescanPaths import com.simplemobiletools.commons.extensions.showErrorToast +import com.simplemobiletools.commons.extensions.toast import com.simplemobiletools.commons.helpers.isJellyBean1Plus import java.io.File import java.lang.IllegalArgumentException @@ -899,17 +902,22 @@ class PreviewCameraTwo : ViewGroup, TextureView.SurfaceTextureListener, MyPrevie } mIsRecording = false - mMediaRecorder!!.stop() - mMediaRecorder!!.reset() - mActivity.rescanPaths(arrayListOf(mLastVideoPath)) { - mActivity.videoSaved(Uri.fromFile(File(mLastVideoPath))) + try { + mMediaRecorder!!.stop() + mMediaRecorder!!.reset() + mActivity.rescanPaths(arrayListOf(mLastVideoPath)) { + mActivity.videoSaved(Uri.fromFile(File(mLastVideoPath))) + } + } catch (e: Exception) { + mActivity.toast(R.string.video_recording_failed, Toast.LENGTH_LONG) + openResolutionsDialog(true) + } finally { + Thread { + closeCamera() + openCamera(mTextureView.width, mTextureView.height) + }.start() + mActivity.setRecordingState(false) } - - Thread { - closeCamera() - openCamera(mTextureView.width, mTextureView.height) - }.start() - mActivity.setRecordingState(false) } private fun getAvailableVideoSizes(configMap: StreamConfigurationMap) = configMap.getOutputSizes(MediaRecorder::class.java).filter { @@ -934,11 +942,15 @@ class PreviewCameraTwo : ViewGroup, TextureView.SurfaceTextureListener, MyPrevie override fun getCameraState() = mCameraState override fun showChangeResolutionDialog() { + openResolutionsDialog(false) + } + + private fun openResolutionsDialog(openVideoResolutions: Boolean) { val oldResolution = getCurrentResolution() val configMap = getCameraCharacteristics().get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP) val photoResolutions = configMap.getOutputSizes(ImageFormat.JPEG).map { MySize(it.width, it.height) } as ArrayList val videoResolutions = getAvailableVideoSizes(configMap).map { MySize(it.width, it.height) } as ArrayList - ChangeResolutionDialog(mActivity, mUseFrontCamera, photoResolutions, videoResolutions) { + ChangeResolutionDialog(mActivity, mUseFrontCamera, photoResolutions, videoResolutions, openVideoResolutions) { if (oldResolution != getCurrentResolution()) { if (mIsRecording) { stopRecording() diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index de76a767..5f97a495 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -11,6 +11,7 @@ انقر على الصورة لاستئناف المعاينة تعذر حفظ الصورة Setting proper resolution failed + Video recording failed, try using a different resolution آخرى diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index bf62b9a6..9af550e7 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -11,6 +11,7 @@ Önbaxışa davam etmək üçün şəkilə toxun Şəkli yaddaşa salmaq olmur Uyğun görüntü imkanını seçmək olmur + Video recording failed, try using a different resolution digər diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index b5a84383..815349ed 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -11,6 +11,7 @@ Klicke auf das Bild, um bei der Vorschau zu bleiben Das Foto konnte nicht gespeichert werden Korrekte Auflösung konnte nicht eingestellt werden + Video recording failed, try using a different resolution andere diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 36c70b46..2ff49b28 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -11,6 +11,7 @@ Haga clic en la imagen para reanudar la vista previa The photo could not be saved Setting proper resolution failed + Video recording failed, try using a different resolution otro diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 57af7082..5fd09def 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -11,6 +11,7 @@ Cliquez sur l\'image pour reprendre l\'aperçu La photo ne peut pas être sauvegardée La définition de la résolution a échoué + Video recording failed, try using a different resolution autre diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index ba86144b..cb96cdf0 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -11,6 +11,7 @@ Pulse na imaxe para voltar a vista previa Non se puido gardar a fotografía Fallou o establecemento da resolución + Video recording failed, try using a different resolution outro diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 8c48023b..e19ed4ca 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -11,6 +11,7 @@ Kliknite sliku kako biste nastavili pregled Fotografiju nije moguće spremiti Postavljanje ispravne rezolucije nije uspjelo + Video recording failed, try using a different resolution ostalo diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index e088f42f..35e9a667 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -11,6 +11,7 @@ Click on the image to resume preview The photo could not be saved Setting proper resolution failed + Video recording failed, try using a different resolution other diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index de024ee1..3aab1446 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -11,6 +11,7 @@ プレビューを再開するには画像をタップ この画像は保存されていません 適切な解像度の設定に失敗しました + Video recording failed, try using a different resolution その他 diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 6dbbb2ba..0fddffc7 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -11,6 +11,7 @@ 미리보기를 다시 시작하려면 이미지를 클릭하십시오. 사진을 저장할 수 없습니다. 해상도 설정에 실패했습니다. + Video recording failed, try using a different resolution other diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index b5b43819..eb842913 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -11,6 +11,7 @@ Paspausti ant paveikslėlio peržiūros pratęsimui Nuotrauka negali būti išsaugota Nustatant tinkamą raišką įvyko klaida + Video recording failed, try using a different resolution Kita diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 043a2233..28dbd304 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -11,6 +11,7 @@ Click on the image to resume preview The photo could not be saved Setting proper resolution failed + Video recording failed, try using a different resolution Ander diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 331de5c4..d85f63c5 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -11,6 +11,7 @@ Kliknij obraz, aby wznowić podgląd Nie mogłem zapisać zdjęcia    Nie mogłem ustawić poprawnej rozdzielczości + Video recording failed, try using a different resolution inne diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 1114bc74..3d3249ab 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -11,6 +11,7 @@ Clique na imagem para resumir a pré-visualização A foto não pôde ser salva Setting proper resolution failed + Video recording failed, try using a different resolution outra diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index fc234e49..8f0f98c7 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -11,6 +11,7 @@ Clique na imagem para continuar com a pré-visualização Não foi possível guardar a foto Falha ao definir a resolução ideal + Video recording failed, try using a different resolution outra diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index f8d1332c..2b6c67a1 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -11,6 +11,7 @@ Чтобы возобновить предпросмотр, нажмите на изображение Не удалось сохранить фото Не удалось установить правильное разрешение + Video recording failed, try using a different resolution другое diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 07a38d53..8bccc807 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -11,6 +11,7 @@ Pre pokračovanie prehliadania kliknite na obrázok Fotografiu sa nepodarilo uložiť Nepodarilo sa nastaviť správne rozlíšenie + Nahrávanie videa zlyhalo, skúste použiť iné rozlíšenie iný diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 71b859e8..d6476a36 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -11,6 +11,7 @@ Tryck på bilden för att återuppta förhandsgranskningen Fotot kunde inte sparas Det gick inte att ställa in den valda upplösningen + Video recording failed, try using a different resolution annat diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 97be3079..390f2667 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -11,6 +11,7 @@ Önizlemeye devam etmek için resmin üzerine tıklayın Fotoğraf kaydedilemedi Doğru çözünürlük ayarı başarısız oldu + Video recording failed, try using a different resolution diğer diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 7d8e5bf5..8968b1f8 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -11,6 +11,7 @@ 點擊圖片回到拍攝預覽 相片無法儲存 設定合適解析度失敗 + Video recording failed, try using a different resolution 其它 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index bdaa0309..33f5c784 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -11,6 +11,7 @@ Click on the image to resume preview The photo could not be saved Setting proper resolution failed + Video recording failed, try using a different resolution other