From 4b002c7b242a11ef2f76230d3f535eb52bbd33fe Mon Sep 17 00:00:00 2001 From: Hardcore Sushi Date: Fri, 7 Jun 2024 16:07:20 +0200 Subject: [PATCH 1/2] Fix SecurityException when importing from exposed volume --- .../sushi/hardcore/droidfs/explorers/ExplorerActivity.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/sushi/hardcore/droidfs/explorers/ExplorerActivity.kt b/app/src/main/java/sushi/hardcore/droidfs/explorers/ExplorerActivity.kt index abdca09..a552c52 100644 --- a/app/src/main/java/sushi/hardcore/droidfs/explorers/ExplorerActivity.kt +++ b/app/src/main/java/sushi/hardcore/droidfs/explorers/ExplorerActivity.kt @@ -68,7 +68,11 @@ class ExplorerActivity : BaseExplorerActivity() { private val pickFiles = registerForActivityResult(ActivityResultContracts.OpenMultipleDocuments()) { uris -> if (uris != null) { for (uri in uris) { - contentResolver.takePersistableUriPermission(uri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION) + try { + contentResolver.takePersistableUriPermission(uri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION) + } catch (e: SecurityException) { + e.printStackTrace() + } } importFilesFromUris(uris) { onImportComplete(uris) From d44601f69fb9b5472a105491fa6fae95d12d0516 Mon Sep 17 00:00:00 2001 From: Hardcore Sushi Date: Mon, 10 Jun 2024 23:39:52 +0200 Subject: [PATCH 2/2] Restore upstream video player controls & Update dependencies --- app/build.gradle | 6 +- app/libcryfs | 2 +- .../androidx/camera/video/originals/README.md | 2 +- .../hardcore/droidfs/SettingsActivity.kt | 11 +- .../droidfs/widgets/DoubleTapPlayerView.kt | 58 +------ .../main/res/layout/exo_center_controls.xml | 30 ---- .../res/layout/exo_player_control_view.xml | 148 ------------------ 7 files changed, 15 insertions(+), 242 deletions(-) delete mode 100644 app/src/main/res/layout/exo_center_controls.xml delete mode 100644 app/src/main/res/layout/exo_player_control_view.xml diff --git a/app/build.gradle b/app/build.gradle index f21c47f..557056c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -118,14 +118,14 @@ dependencies { implementation 'com.github.bumptech.glide:glide:4.16.0' implementation "androidx.biometric:biometric-ktx:1.2.0-alpha05" - def media3_version = "1.1.1" + def media3_version = "1.3.1" implementation "androidx.media3:media3-exoplayer:$media3_version" - implementation 'androidx.media3:media3-ui:1.1.1' + implementation "androidx.media3:media3-ui:$media3_version" implementation "androidx.media3:media3-datasource:$media3_version" implementation "androidx.concurrent:concurrent-futures:1.1.0" - def camerax_version = "1.3.0-rc02" + def camerax_version = "1.3.3" implementation "androidx.camera:camera-camera2:$camerax_version" implementation "androidx.camera:camera-lifecycle:$camerax_version" implementation "androidx.camera:camera-view:$camerax_version" diff --git a/app/libcryfs b/app/libcryfs index 6388eaf..0398d48 160000 --- a/app/libcryfs +++ b/app/libcryfs @@ -1 +1 @@ -Subproject commit 6388eaf433a4196f10389921d5e346c90ee3d793 +Subproject commit 0398d48b0963c01092976c5c7012b02327e564f0 diff --git a/app/src/main/java/androidx/camera/video/originals/README.md b/app/src/main/java/androidx/camera/video/originals/README.md index 9e619dd..d7b0df5 100644 --- a/app/src/main/java/androidx/camera/video/originals/README.md +++ b/app/src/main/java/androidx/camera/video/originals/README.md @@ -5,7 +5,7 @@ Create the `new` folder if needed: mkdir -p new ``` -Put new CameraX files from upstream in the `new` folder. +Put the new CameraX files from upstream (`androidx.camera.video.Recorder`, `androidx.camera.video.Recording`, `androidx.camera.video.PendingRecording` and `androidx.camera.video.internal.encoder.EncoderImpl`) in the `new` folder. Perform the 3 way merge: ``` diff --git a/app/src/main/java/sushi/hardcore/droidfs/SettingsActivity.kt b/app/src/main/java/sushi/hardcore/droidfs/SettingsActivity.kt index 2e9bf8a..35cfa6b 100644 --- a/app/src/main/java/sushi/hardcore/droidfs/SettingsActivity.kt +++ b/app/src/main/java/sushi/hardcore/droidfs/SettingsActivity.kt @@ -1,5 +1,6 @@ package sushi.hardcore.droidfs +import android.app.ActivityOptions import android.content.Intent import android.content.SharedPreferences import android.os.Build @@ -90,9 +91,15 @@ class SettingsActivity : BaseActivity() { private fun refreshTheme() { with(requireActivity()) { - startActivity(Intent(this, SettingsActivity::class.java)) + startActivity( + Intent(this, SettingsActivity::class.java), + ActivityOptions.makeCustomAnimation( + this, + android.R.anim.fade_in, + android.R.anim.fade_out + ).toBundle() + ) finish() - overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out) } } diff --git a/app/src/main/java/sushi/hardcore/droidfs/widgets/DoubleTapPlayerView.kt b/app/src/main/java/sushi/hardcore/droidfs/widgets/DoubleTapPlayerView.kt index 7816702..13d1b9e 100644 --- a/app/src/main/java/sushi/hardcore/droidfs/widgets/DoubleTapPlayerView.kt +++ b/app/src/main/java/sushi/hardcore/droidfs/widgets/DoubleTapPlayerView.kt @@ -2,23 +2,13 @@ package sushi.hardcore.droidfs.widgets import android.annotation.SuppressLint import android.content.Context -import android.content.res.Configuration import android.media.session.PlaybackState import android.os.Handler import android.os.Looper import android.util.AttributeSet import android.view.GestureDetector import android.view.MotionEvent -import android.view.View -import android.view.ViewGroup -import android.widget.Button -import android.widget.FrameLayout -import android.widget.LinearLayout -import androidx.core.view.GestureDetectorCompat -import androidx.core.view.updateLayoutParams -import androidx.core.view.updatePadding import androidx.media3.ui.PlayerView -import sushi.hardcore.droidfs.R class DoubleTapPlayerView @JvmOverloads constructor( context: Context, @@ -75,22 +65,7 @@ class DoubleTapPlayerView @JvmOverloads constructor( handler.postDelayed(stopDoubleTap, 700) } } - private val gestureDetector = GestureDetectorCompat(context, gestureListener) - private val density by lazy { - context.resources.displayMetrics.density - } - private val originalExoIconPaddingBottom by lazy { - resources.getDimension(R.dimen.exo_icon_padding_bottom) - } - private val originalExoIconSize by lazy { - resources.getDimension(R.dimen.exo_icon_size) - } - - init { - if (resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) { - handleOrientationChange(Configuration.ORIENTATION_LANDSCAPE) - } - } + private val gestureDetector = GestureDetector(context, gestureListener) @SuppressLint("ClickableViewAccessibility") override fun onTouchEvent(event: MotionEvent): Boolean { @@ -135,35 +110,4 @@ class DoubleTapPlayerView @JvmOverloads constructor( } } } - - private fun updateButtonSize(orientation: Int) { - val size = (if (orientation == Configuration.ORIENTATION_LANDSCAPE) 45*density else originalExoIconSize).toInt() - listOf(R.id.exo_prev, R.id.exo_rew_with_amount, R.id.exo_play_pause, R.id.exo_ffwd_with_amount, R.id.exo_next).forEach { - findViewById(it).updateLayoutParams { - width = size - height = size - } - } - // fix text vertical alignment inside icons - val paddingBottom = (if (orientation == Configuration.ORIENTATION_LANDSCAPE) 15*density else originalExoIconPaddingBottom).toInt() - listOf(R.id.exo_rew_with_amount, R.id.exo_ffwd_with_amount).forEach { - findViewById