diff --git a/app/build.gradle b/app/build.gradle index 6bc606d0e..338f57f6b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,6 +19,8 @@ android { versionName "2.1.0beta5" flavorDimensions "default" + renderscriptTargetApi 19 + renderscriptSupportModeEnabled true productFlavors { // used for f-droid diff --git a/app/src/main/java/com/nextcloud/talk/controllers/CallNotificationController.java b/app/src/main/java/com/nextcloud/talk/controllers/CallNotificationController.java index 7fec243fa..90fbb0c6c 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/CallNotificationController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/CallNotificationController.java @@ -21,10 +21,17 @@ package com.nextcloud.talk.controllers; import android.annotation.SuppressLint; +import android.graphics.Bitmap; +import android.graphics.drawable.BitmapDrawable; import android.media.MediaPlayer; import android.net.Uri; import android.os.Bundle; +import android.renderscript.Allocation; +import android.renderscript.Element; +import android.renderscript.RenderScript; +import android.renderscript.ScriptIntrinsicBlur; import android.support.annotation.NonNull; +import android.support.constraint.ConstraintLayout; import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; @@ -40,7 +47,10 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.model.GlideUrl; import com.bumptech.glide.load.model.LazyHeaders; import com.bumptech.glide.load.resource.bitmap.CircleCrop; +import com.bumptech.glide.load.resource.bitmap.TransformationUtils; import com.bumptech.glide.request.RequestOptions; +import com.bumptech.glide.request.target.SimpleTarget; +import com.bumptech.glide.request.transition.Transition; import com.nextcloud.talk.R; import com.nextcloud.talk.api.NcApi; import com.nextcloud.talk.application.NextcloudTalkApplication; @@ -96,6 +106,9 @@ public class CallNotificationController extends BaseController { @BindView(R.id.callAnswerCameraView) MagicFlipView callAnswerCameraView; + @BindView(R.id.constraintLayout) + ConstraintLayout constraintLayout; + private List disposablesList = new ArrayList<>(); private Bundle originalBundle; private String roomId; @@ -104,6 +117,7 @@ public class CallNotificationController extends BaseController { private Room currentRoom; private MediaPlayer mediaPlayer; private boolean leavingScreen = false; + private RenderScript renderScript; public CallNotificationController(Bundle args) { super(args); @@ -249,6 +263,7 @@ public class CallNotificationController extends BaseController { protected void onViewBound(@NonNull View view) { super.onViewBound(view); + renderScript = RenderScript.create(getActivity()); handleFromNotification(); String callRingtonePreferenceString = appPreferences.getCallRingtoneUri(); @@ -296,8 +311,27 @@ public class CallNotificationController extends BaseController { .load(glideUrl) .centerInside() .override(avatarSize, avatarSize) - .apply(RequestOptions.bitmapTransform(new CircleCrop())) - .into(avatarImageView); + .into(new SimpleTarget() { + @Override + public void onResourceReady(Bitmap resource, Transition transition) { + if (getActivity() != null) { + avatarImageView.setImageBitmap(TransformationUtils.circleCrop(GlideApp.get + (getActivity()).getBitmapPool(), resource, avatarSize, avatarSize)); + } + + final Allocation input = Allocation.createFromBitmap(renderScript, resource); + final Allocation output = Allocation.createTyped(renderScript, input.getType()); + final ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create(renderScript, Element + .U8_4(renderScript)); + script.setRadius(15f); + script.setInput(input); + script.forEach(output); + output.copyTo(resource); + + constraintLayout.setBackground(new BitmapDrawable(resource)); + } + }); + break; case ROOM_GROUP_CALL: diff --git a/app/src/main/res/drawable/incoming_gradient.xml b/app/src/main/res/drawable/incoming_gradient.xml new file mode 100644 index 000000000..2f78537e7 --- /dev/null +++ b/app/src/main/res/drawable/incoming_gradient.xml @@ -0,0 +1,28 @@ + + + + + + diff --git a/app/src/main/res/layout/controller_call_notification.xml b/app/src/main/res/layout/controller_call_notification.xml index b91f6e649..864c199ea 100644 --- a/app/src/main/res/layout/controller_call_notification.xml +++ b/app/src/main/res/layout/controller_call_notification.xml @@ -21,33 +21,41 @@ - + android:background="@drawable/incoming_gradient"> - + + + + + 40dp 80dp @dimen/avatar_fetching_size_very_big - 140dp + 180dp 20dp 14sp