I apply a color effect on a bitmap by using a color matrix. Everything seems to work fine on debugging but getting this ANR on production. Here is the code:
private fun applyColorEffects(
red: Float,
green: Float,
blue: Float,
bitmap: Bitmap?
): Bitmap? {
return try {
val colorMatrix = ColorMatrix(
floatArrayOf(
red / 255.0f, 0f, 0f, 0f,0f,
0f, green / 255.0f, 0f, 0f, 0f,
0f, 0f, blue / 255.0f, 0f, 0f,
0f, 0f, 0f, 1f, 0f //invert
)
)
val paint = Paint()
paint.colorFilter = ColorMatrixColorFilter(colorMatrix)
if (bitmap?.width != null) {
val finalBitmap = Bitmap.createBitmap(
bitmap.width,
bitmap.height, Bitmap.Config.ARGB_8888
)
finalBitmap?.let { it1 -> Canvas(it1).drawBitmap(bitmap, 0f, 0f, paint) }
finalBitmap
} else
bitmap
} catch (e: Exception) {
println(e.message.toString())
bitmap
}
}
ANR:
#00 pc 00000000000f5202 /system/lib/libhwui.so (neon::matrix_4x5(neon::Params*, void**, float vector[4], float vector[4], float vector[4], float vector[4])+212) #00 pc 00000000000f75a9 /system/lib/libhwui.so (neon::start_pipeline(unsigned int, unsigned int, unsigned int, unsigned int, void**)+132) #00 pc 00000000001001fd /system/lib/libhwui.so (_ZNSt3__110__function6__funcIZNK16SkRasterPipeline7compileEvE3$1NS_9allocatorIS3_EEFvjjjjEEclEOjS8_S8_S8$2d06af249fe2b9142adef534f9f0e354+34) #00 pc 00000000002f36c7 /system/lib/libhwui.so (SkRasterPipelineBlitter::blitRect(int, int, int, int)+198) #00 pc 00000000001e6f23 /system/lib/libhwui.so (SkScan::FillIRect(SkIRect const&, SkRegion const*, SkBlitter*)+242) #00 pc 0000000000266d1f /system/lib/libhwui.so (SkDraw::drawBitmap(SkBitmap const&, SkMatrix const&, SkRect const*, SkPaint const&) const+602) #00 pc 0000000000266615 /system/lib/libhwui.so (SkBitmapDevice::drawBitmap(SkBitmap const&, SkMatrix const&, SkRect const*, SkPaint const&)+68) #00 pc 00000000002663f9 /system/lib/libhwui.so (SkBitmapDevice::drawBitmapRect(SkBitmap const&, SkRect const*, SkRect const&, SkPaint const&, SkCanvas::SrcRectConstraint)+616) #00 pc 00000000002cd3f3 /system/lib/libhwui.so (SkBaseDevice::drawImageRect(SkImage const*, SkRect const*, SkRect const&, SkPaint const&, SkCanvas::SrcRectConstraint)+66) #00 pc 00000000001c14bb /system/lib/libhwui.so (SkCanvas::onDrawImage(SkImage const*, float, float, SkPaint const*)+638) #00 pc 00000000001c119f /system/lib/libhwui.so (SkCanvas::drawImage(SkImage const*, float, float, SkPaint const*)+58) #00 pc 00000000002960f3 /system/lib/libhwui.so (android::SkiaCanvas::drawBitmap(android::Bitmap&, float, float, SkPaint const*)+62) #00 pc 00000000000ad57f /system/lib/libandroid_runtime.so (android::CanvasJNI::drawBitmap(_JNIEnv*, _jobject*, long long, long long, float, float, long long, int, int, int)+90) at android.graphics.BaseCanvas.nDrawBitmap (Native method) at android.graphics.BaseCanvas.drawBitmap (BaseCanvas.java:115) at android.graphics.Canvas.drawBitmap (Canvas.java:1540) at com.humbbles.imagenes.utilit.Constants$Companion.applyColorEffects (Constants.java) at com.humbbles.imagenes.utilit.Constants$Companion.createFilterList (Constants.java) at com.humbbles.imagenes.fragments.FiltersFragment.initFilterRecycler$lambda-7 (FiltersFragment.java) at com.google.firebase.installations.FirebaseInstallations$$InternalSyntheticLambda$0$d6c0ce1e0f5e72f3f1f76e60450c3292b8809a2a4ab7cdf10cff4b6c491b69e0$0.run$bridge (FirebaseInstallations.java) at android.os.Handler.handleCallback (Handler.java:883) at android.os.Handler.dispatchMessage (Handler.java:100) at android.os.Looper.loop (Looper.java:214) at android.app.ActivityThread.main (ActivityThread.java:7626) at java.lang.reflect.Method.invoke (Native method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:503) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:936)