Программный рендеринг не поддерживает аппаратные растровые изображения

#android #kotlin

Вопрос:

Я пытаюсь наложить два растровых изображения. Этот код отлично работает на Android ниже 9. На Android 9 и выше происходит сбой приложения.

 private fun overlay(base: Bitmap, blend: Bitmap): Bitmap {  return try {  val result: Bitmap =  base.copy(Bitmap.Config.ARGB_8888, true)  val p = Paint()  p.xfermode = PorterDuffXfermode(PorterDuff.Mode.ADD)  p.shader = BitmapShader(blend, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP)  val c = Canvas()  c.setBitmap(result)  c.drawBitmap(base, 0f, 0f, null)  c.drawRect(0f, 0f, base.width.toFloat(), base.height.toFloat(), p)  result  } catch (e: Exception) {  println(e.message.toString())  base  }  }  

E/AndroidRuntime: ФАТАЛЬНОЕ ИСКЛЮЧЕНИЕ: основное Процесс: com.ex.изображение, PID: 26562 java.lang.Исключение IllegalArgumentException: Программный рендеринг не поддерживает аппаратные растровые изображения в android.graphics.BaseCanvas.onhwbitmapinswрежим(базовый код. java:632) на android.графика.BaseCanvas.throwifhwbitmapinswрежим(базовый код. java:639) на android.графика.BaseCanvas.throwIfCannotDraw(базовый код.java:73) на android.графика.MiuiCanvas.throwIfCannotDraw(MiuiCanvas.java:329) на android.графика.BaseCanvas.Рисованная карта(BaseCanvas.java:113) на android.графика.MiuiCanvas.Рисованная карта(MiuiCanvas.java:98) на android.графика.Canvas.drawBitmap(Canvas.java:1613) на com.ex.изображение.фрагменты.Фрагмент фильтра.наложение(фрагмент фильтра.кт:103) на com.ex.изображение.фрагменты.FiltersFragment.applyFilter(FiltersFragment.kt:86) в com.ex.адаптеры изображений.FilterRecyclerAdapter.onBindViewHolder$лямбда-0(FilterRecyclerAdapter.kt:39) в com.ex.адаптеры изображений.FilterRecyclerAdapter.$r8$лямбда$KexXVg24JaLUI6vIkMTUBOYKnlY(Неизвестно Источник:0) в com.ex.адаптеры изображений.FilterRecyclerAdapter$$ExternalSyntheticLambda0.onClick(Неизвестно Источник:4) на android.view.View.performClick(View.java:7509) в android.view.View.performClickInternal(View.java:7486) на android.view.View.доступ к$3600(View.java:841) в android.view.View$performClick.run(View.java:28710) в android.os.Handler.handleCallback(обработчик.java:938) в android.os.Handler.DispatchMessage(обработчик.java:99) в android.os.Looper.loop(Looper.java:236) в android.app.ActivityThread.main(ActivityThread.java:8056) на java.lang.размышляйте.Метод.вызов(Собственный метод) в com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:656) на com.android.internal.os.ZygoteInit.main(ZygoteInit.java:967)

Примечание: Я уже выключил приложение HARDWARE_ACCELERATED для Android 9 выше.

Комментарии:

1. пробовал, не получается. Я не думаю, что это из-за неизменности. Если это так, это приведет к сбою на Android ниже 9