Я создал приложение, в котором некоторые пользователи (админы) могут войти в учетную запись администратора на моей веб-странице и изменить какой-либо контент, например фоновое изображение в приложении. В качестве конца я использую Parse.com, и приложение загружает фоновое изображение оттуда. Я использую Picasso для загрузки фоновых изображений в приложении. В некоторых деятельностях я хочу фон стираться, поэтому я использую this Transformation Размытия и загрузить изображение со следующим кодом:Android-приложения для некоторых пользователей при применении преобразования с Picasso
int apiVersion = android.os.Build.VERSION.SDK_INT;
if(apiVersion >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) {
// Blur the image
final BlurTransformation blurTransformation = new BlurTransformation(this, 20);
// Load the background image with blur
Picasso.with(this)
.load(backgroundPictureURL)
.transform(blurTransformation)
.into(backgroundView);
} else {
// Load the background image without blur
Picasso.with(this)
.load(backgroundPictureURL)
.into(backgroundView);
}
Я включил отчеты о сбоях, синтаксический анализ и теперь я получаю сообщение о том, что приложение пытается сбой для некоторых пользователей при попытке применить преобразование размытия. Это трассировка стеки, что я получаю:
java.lang.RuntimeException: Transformation blurred crashed with exception.
com.squareup.picasso.BitmapHunter$3.run BitmapHunter.java:434
android.os.Handler.handleCallback Handler.java:739
android.os.Handler.dispatchMessage Handler.java:95
android.os.Looper.loop Looper.java:135
android.app.ActivityThread.main ActivityThread.java:5254
java.lang.reflect.Method.invoke Native Method
java.lang.reflect.Method.invoke Method.java:372
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run ZygoteInit.java:898
com.android.internal.os.ZygoteInit.main ZygoteInit.java:693
Caused by: android.renderscript.RSIllegalArgumentException: Bitmap has an unsupported format for this operation
android.renderscript.Allocation.validateBitmapFormat Allocation.java:537
android.renderscript.Allocation.copyTo Allocation.java:1257
se.myapplication.main.CustomUI.BlurTransformation.transform BlurTransformation.java:60
com.squareup.picasso.BitmapHunter.applyCustomTransformations BitmapHunter.java:429
com.squareup.picasso.BitmapHunter.hunt BitmapHunter.java:238
com.squareup.picasso.BitmapHunter.run BitmapHunter.java:159
java.util.concurrent.Executors$RunnableAdapter.call Executors.java:422
java.util.concurrent.FutureTask.run FutureTask.java:237
java.util.concurrent.ThreadPoolExecutor.runWorker ThreadPoolExecutor.java:1112
java.util.concurrent.ThreadPoolExecutor$Worker.run ThreadPoolExecutor.java:587
java.lang.Thread.run Thread.java:818
com.squareup.picasso.Utils$PicassoThread.run Utils.java:411
Строка коды в классе Transformation Размытия, что трассировка стеки имеет в виде эта линия:
output.copyTo(blurredBitmap);
Формат изображения либо JPG или png, и когда вы пытаетесь на моем телефоне и на эмуляторе, проблем нет, поэтому для некоторых пользователей может возникнуть сбой, и у них, похоже, есть Android 5.0.1 и 5.0.2 (как и я, и для меня нет проблем).
Я никуда не увлекаюсь этим, поэтому любая помощь приветствуется! Что может быть причиной проблемы и как я могу ее решить?
Если это какая-либо помощь, код, который генерирует это исключение, находится здесь: https://android.googlesource.com/platform/frameworks/base/+/master/rs/java/android/renderscript/Allocation.java – njzk2
Я бы сказал, что 'BlurTransformation.transform' создает растровое изображение, которое не нравится renderscript. Можете ли вы опубликовать код для этого? – njzk2
В частности, как вы создаете 'blurredBitmap' – njzk2