Skip to content

Commit 6607772

Browse files
empratyushthestinger
authored andcommitted
rewrite blur bitmap implementation
it uses RenderEffect for android 12+ and existing approach for older version.
1 parent 496c571 commit 6607772

2 files changed

Lines changed: 28 additions & 6 deletions

File tree

app/src/main/java/app/grapheneos/camera/ui/activities/MainActivity.kt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ import androidx.core.view.WindowInsetsControllerCompat
6868
import androidx.core.view.updateLayoutParams
6969
import androidx.core.view.updateMargins
7070
import app.grapheneos.camera.App
71-
import app.grapheneos.camera.BlurBitmap
7271
import app.grapheneos.camera.CamConfig
7372
import app.grapheneos.camera.CameraMode
7473
import app.grapheneos.camera.ITEM_TYPE_IMAGE
@@ -94,6 +93,7 @@ import app.grapheneos.camera.util.CameraControl
9493
import app.grapheneos.camera.util.ImageResizer
9594
import app.grapheneos.camera.util.executeIfAlive
9695
import app.grapheneos.camera.util.resolveActivity
96+
import app.grapheneos.camera.util.setBlurBitmapCompat
9797
import com.google.android.material.imageview.ShapeableImageView
9898
import com.google.android.material.snackbar.Snackbar
9999
import com.google.android.material.tabs.TabLayout
@@ -657,8 +657,9 @@ open class MainActivity : AppCompatActivity(),
657657
}
658658
} else {
659659
previewGrid.visibility = View.INVISIBLE
660+
val lastFrame = lastFrame
660661
if (lastFrame != null && this !is CaptureActivity) {
661-
mainOverlay.setImageBitmap(blurBitmap(lastFrame!!))
662+
setBlurBitmapCompat(mainOverlay, lastFrame)
662663
settingsIcon.visibility = View.INVISIBLE
663664
settingsIcon.isEnabled = false
664665
mainOverlay.visibility = View.VISIBLE
@@ -1217,10 +1218,6 @@ open class MainActivity : AppCompatActivity(),
12171218
}
12181219
}
12191220

1220-
private fun blurBitmap(bitmap: Bitmap): Bitmap {
1221-
return BlurBitmap[bitmap]
1222-
}
1223-
12241221
// private val fTHandler : Handler = Handler(Looper.getMainLooper())
12251222
// private val fTRunnable : Runnable = Runnable {
12261223
// config.mPlayer.playFocusCompleteSound()
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package app.grapheneos.camera.util
2+
3+
import android.graphics.Bitmap
4+
import android.graphics.RenderEffect
5+
import android.graphics.Shader
6+
import android.os.Build
7+
import android.widget.ImageView
8+
import androidx.annotation.RequiresApi
9+
10+
fun setBlurBitmapCompat(view: ImageView, bitmap: Bitmap, radius: Float = 4f) {
11+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
12+
setBitmapWithBlurEffect(view, bitmap, radius)
13+
return
14+
}
15+
16+
//this will eventually be removed
17+
view.setImageBitmap(app.grapheneos.camera.BlurBitmap[bitmap])
18+
}
19+
20+
@RequiresApi(Build.VERSION_CODES.S)
21+
private fun setBitmapWithBlurEffect(view: ImageView, bitmap: Bitmap, radius: Float) {
22+
val blurRenderEffect = RenderEffect.createBlurEffect(radius, radius, Shader.TileMode.CLAMP)
23+
view.setImageBitmap(bitmap)
24+
view.setRenderEffect(blurRenderEffect)
25+
}

0 commit comments

Comments
 (0)