Courtesy: GitHub

Android RenderScriptIntrinsic Sample

RenderScriptIntrinsic sample that demonstrates how to use RenderScript intrinsics. Creates several RenderScript intrinsics and shows a filtering result with various parameters. Also shows how to extends RedioButton with StateListDrawable.

Introduction

RenderScript is a framework for running computationally intensive tasks at high performance on Android. RenderScript is primarily oriented for use with data-parallel computation, although serial computationally intensive workloads can benefit as well.

RenderScript intrinsics are built-in functions that perform well-defined operations often seen in image processing. Intrinsics provide extremely high-performance implementations of standard functions with a minimal amount of code.

This sample shows how to access and use the blur, convolve, and matrix intrinsics:

mScriptBlur = ScriptIntrinsicBlur.create(mRS, Element.U8_4(mRS));
mScriptConvolve = ScriptIntrinsicConvolve5x5.create(mRS,
        Element.U8_4(mRS));
mScriptMatrix = ScriptIntrinsicColorMatrix.create(mRS,
        Element.U8_4(mRS));

RenderScript intrinsics will usually be the fastest possible way for a developer to perform these operations. The Android team works closely with our partners to ensure that the intrinsics perform as fast as possible on their architectures — often far beyond anything that can be achieved in a general-purpose language.

Pre-requisites

  • Android SDK 26
  • Android Build Tools v26.0.1
  • Android Support Repository

Screenshots

Screenshot

Getting Started

This sample uses the Gradle build system. To build this project, use the "gradlew build" command or use "Import Project" in Android Studio.

Support

If you've found an error in this sample, please file an issue: https://github.com/googlesamples/android-RenderScriptIntrinsic

Patches are encouraged, and may be submitted by forking this project and submitting a pull request through GitHub. Please see CONTRIBUTING.md for more details.

License

Copyright 2017 The Android Open Source Project, Inc.

Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

compile "com.android.support:support-v4:26.1.0"

compile "com.android.support:support-v13:26.1.0"

compile "com.android.support:cardview-v7:26.1.0"

compile "com.android.support:appcompat-v7:26.1.0"

compile files('renderscript-v8.jar')

compileSdkVersion 26

minSdkVersion 14

targetSdkVersion 26

package com.example.android.renderscriptintrinsic.tests

versionCode 1

versionName 1.0

package com.example.android.renderscriptintrinsic

MainActivity

MainActivity

Number of bitmaps that is used for renderScript thread and UI thread synchronization.

Convert seekBar progress parameter (0-100 in range) to parameter for each intrinsic filter. (e.g. 1.0-25.0 in Blur filter)

In the AsyncTask, it invokes RenderScript intrinsics to do a filtering. *

After the filtering is done, an operation blocks at Allocation.copyTo() in AsyncTask thread. Once all operation is finished at onPostExecute() in UI thread, it can invalidate and update ImageView UI.

Invoke AsyncTask and cancel previous task. *

When AsyncTasks are piled up (typically in slow device with heavy kernel), Only the latest (and already started) task invokes RenderScript operation.

Helper to load Bitmap from resource

Create thumbNail for UI. It invokes RenderScript kernel synchronously in UI-thread, which is OK for small thumbnail (but not ideal).