diff --git a/README.md b/README.md index 12573fd..983ac40 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ Realtime camera filters. Process frames by OpenGL shaders. -**[Download the apk](https://github.com/WeLikeVis/CameraFilter/releases/download/2.1.1/app-debug.apk)** to have a try. +**[Download the apk](https://github.com/WeLikeVis/CameraFilter/releases/download/2.2/CameraFilter.apk)** to have a try. ## Filters diff --git a/app/build.gradle b/app/build.gradle index 86f8473..c857337 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,15 +1,15 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 23 - buildToolsVersion "24.0.0" + compileSdkVersion 24 + buildToolsVersion "24.0.2" defaultConfig { applicationId "cn.nekocode.camerafilter" minSdkVersion 15 - targetSdkVersion 23 + targetSdkVersion 24 versionCode 211 - versionName "2.1.1" + versionName "2.2" } buildTypes { release { @@ -21,5 +21,5 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) - compile 'com.android.support:appcompat-v7:23.4.0' + compile 'com.android.support:appcompat-v7:24.2.1' } diff --git a/app/src/main/java/cn/nekocode/camerafilter/CameraRenderer.java b/app/src/main/java/cn/nekocode/camerafilter/CameraRenderer.java index f1cf327..1aa7481 100644 --- a/app/src/main/java/cn/nekocode/camerafilter/CameraRenderer.java +++ b/app/src/main/java/cn/nekocode/camerafilter/CameraRenderer.java @@ -57,14 +57,15 @@ import cn.nekocode.camerafilter.filter.TrianglesMosaicFilter; /** - * Created by nekocode on 16/8/5. + * @author nekocode (nekocode.cn@gmail.com) */ -public class CameraRenderer extends Thread implements TextureView.SurfaceTextureListener { +public class CameraRenderer implements Runnable, TextureView.SurfaceTextureListener { private static final String TAG = "CameraRenderer"; private static final int EGL_OPENGL_ES2_BIT = 4; private static final int EGL_CONTEXT_CLIENT_VERSION = 0x3098; private static final int DRAW_INTERVAL = 1000 / 30; + private Thread renderThread; private Context context; private SurfaceTexture surfaceTexture; private int gwidth, gheight; @@ -78,6 +79,7 @@ public class CameraRenderer extends Thread implements TextureView.SurfaceTexture private SurfaceTexture cameraSurfaceTexture; private int cameraTextureId; private CameraFilter selectedFilter; + private int selectedFilterId = R.id.filter0; private SparseArray cameraFilterMap = new SparseArray<>(); public CameraRenderer(Context context) { @@ -90,7 +92,8 @@ public void onSurfaceTextureUpdated(SurfaceTexture surface) { @Override public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) { - GLES20.glViewport(0, 0, gwidth = width, gheight = height); + gwidth = -width; + gheight = -height; } @Override @@ -99,7 +102,9 @@ public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) { camera.stopPreview(); camera.release(); } - interrupt(); + if (renderThread != null && renderThread.isAlive()) { + renderThread.interrupt(); + } CameraFilter.release(); return true; @@ -107,12 +112,14 @@ public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) { @Override public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) { - if (isAlive()) { - interrupt(); + if (renderThread != null && renderThread.isAlive()) { + renderThread.interrupt(); } + renderThread = new Thread(this); surfaceTexture = surface; - GLES20.glViewport(0, 0, gwidth = width, gheight = height); + gwidth = -width; + gheight = -height; // Open camera Pair backCamera = getBackCamera(); @@ -120,12 +127,14 @@ public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int hei camera = Camera.open(backCameraId); // Start rendering - start(); + renderThread.start(); } public void setSelectedFilter(int id) { + selectedFilterId = id; selectedFilter = cameraFilterMap.get(id); - selectedFilter.onAttach(); + if (selectedFilter != null) + selectedFilter.onAttach(); } @Override @@ -154,7 +163,7 @@ public void run() { cameraFilterMap.append(R.id.filter18, new CrackedFilter(context)); cameraFilterMap.append(R.id.filter19, new PolygonizationFilter(context)); cameraFilterMap.append(R.id.filter20, new JFAVoronoiFilter(context)); - setSelectedFilter(R.id.filter0); + setSelectedFilter(selectedFilterId); // Create texture for camera preview cameraTextureId = MyGLUtils.genTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES); @@ -171,6 +180,9 @@ public void run() { // Render loop while (!Thread.currentThread().isInterrupted()) { try { + if (gwidth < 0 && gheight < 0) + GLES20.glViewport(0, 0, gwidth = -gwidth, gheight = -gheight); + GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT); // Update the camera preview texture @@ -201,12 +213,14 @@ private void initGL(SurfaceTexture texture) { eglDisplay = egl10.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY); if (eglDisplay == EGL10.EGL_NO_DISPLAY) { - throw new RuntimeException("eglGetDisplay failed " + android.opengl.GLUtils.getEGLErrorString(egl10.eglGetError())); + throw new RuntimeException("eglGetDisplay failed " + + android.opengl.GLUtils.getEGLErrorString(egl10.eglGetError())); } int[] version = new int[2]; if (!egl10.eglInitialize(eglDisplay, version)) { - throw new RuntimeException("eglInitialize failed " + android.opengl.GLUtils.getEGLErrorString(egl10.eglGetError())); + throw new RuntimeException("eglInitialize failed " + + android.opengl.GLUtils.getEGLErrorString(egl10.eglGetError())); } int[] configsCount = new int[1]; @@ -225,7 +239,8 @@ private void initGL(SurfaceTexture texture) { EGLConfig eglConfig = null; if (!egl10.eglChooseConfig(eglDisplay, configSpec, configs, 1, configsCount)) { - throw new IllegalArgumentException("eglChooseConfig failed " + android.opengl.GLUtils.getEGLErrorString(egl10.eglGetError())); + throw new IllegalArgumentException("eglChooseConfig failed " + + android.opengl.GLUtils.getEGLErrorString(egl10.eglGetError())); } else if (configsCount[0] > 0) { eglConfig = configs[0]; } @@ -243,11 +258,13 @@ private void initGL(SurfaceTexture texture) { Log.e(TAG, "eglCreateWindowSurface returned EGL10.EGL_BAD_NATIVE_WINDOW"); return; } - throw new RuntimeException("eglCreateWindowSurface failed " + android.opengl.GLUtils.getEGLErrorString(error)); + throw new RuntimeException("eglCreateWindowSurface failed " + + android.opengl.GLUtils.getEGLErrorString(error)); } if (!egl10.eglMakeCurrent(eglDisplay, eglSurface, eglSurface, eglContext)) { - throw new RuntimeException("eglMakeCurrent failed " + android.opengl.GLUtils.getEGLErrorString(egl10.eglGetError())); + throw new RuntimeException("eglMakeCurrent failed " + + android.opengl.GLUtils.getEGLErrorString(egl10.eglGetError())); } } diff --git a/app/src/main/java/cn/nekocode/camerafilter/MainActivity.java b/app/src/main/java/cn/nekocode/camerafilter/MainActivity.java index 13186d5..1adfc18 100644 --- a/app/src/main/java/cn/nekocode/camerafilter/MainActivity.java +++ b/app/src/main/java/cn/nekocode/camerafilter/MainActivity.java @@ -38,6 +38,9 @@ import java.text.SimpleDateFormat; import java.util.Date; +/** + * @author nekocode (nekocode.cn@gmail.com) + */ public class MainActivity extends AppCompatActivity { private static final int REQUEST_CAMERA_PERMISSION = 101; private CameraRenderer renderer; diff --git a/app/src/main/java/cn/nekocode/camerafilter/MyGLUtils.java b/app/src/main/java/cn/nekocode/camerafilter/MyGLUtils.java index 0769f4d..f352754 100644 --- a/app/src/main/java/cn/nekocode/camerafilter/MyGLUtils.java +++ b/app/src/main/java/cn/nekocode/camerafilter/MyGLUtils.java @@ -31,7 +31,7 @@ import javax.microedition.khronos.opengles.GL10; /** - * Created by nekocode on 16/8/6. + * @author nekocode (nekocode.cn@gmail.com) */ public class MyGLUtils { private static final String TAG = "MyGLUtils"; diff --git a/app/src/main/java/cn/nekocode/camerafilter/RenderBuffer.java b/app/src/main/java/cn/nekocode/camerafilter/RenderBuffer.java index 5c039ae..dc2ed39 100644 --- a/app/src/main/java/cn/nekocode/camerafilter/RenderBuffer.java +++ b/app/src/main/java/cn/nekocode/camerafilter/RenderBuffer.java @@ -24,7 +24,7 @@ import javax.microedition.khronos.opengles.GL10; /** - * Created by nekocode on 16/8/12. + * @author nekocode (nekocode.cn@gmail.com) */ public class RenderBuffer { private int texId = 0; diff --git a/app/src/main/java/cn/nekocode/camerafilter/filter/AsciiArtFilter.java b/app/src/main/java/cn/nekocode/camerafilter/filter/AsciiArtFilter.java index 5f5bdee..12bcf61 100644 --- a/app/src/main/java/cn/nekocode/camerafilter/filter/AsciiArtFilter.java +++ b/app/src/main/java/cn/nekocode/camerafilter/filter/AsciiArtFilter.java @@ -22,7 +22,7 @@ import cn.nekocode.camerafilter.R; /** - * Created by nekocode on 16/8/6. + * @author nekocode (nekocode.cn@gmail.com) */ public class AsciiArtFilter extends CameraFilter { private int program; diff --git a/app/src/main/java/cn/nekocode/camerafilter/filter/BasicDeformFilter.java b/app/src/main/java/cn/nekocode/camerafilter/filter/BasicDeformFilter.java index 7257a5c..1eba8ad 100644 --- a/app/src/main/java/cn/nekocode/camerafilter/filter/BasicDeformFilter.java +++ b/app/src/main/java/cn/nekocode/camerafilter/filter/BasicDeformFilter.java @@ -22,7 +22,7 @@ import cn.nekocode.camerafilter.R; /** - * Created by nekocode on 16/8/6. + * @author nekocode (nekocode.cn@gmail.com) */ public class BasicDeformFilter extends CameraFilter { private int program; diff --git a/app/src/main/java/cn/nekocode/camerafilter/filter/BlueorangeFilter.java b/app/src/main/java/cn/nekocode/camerafilter/filter/BlueorangeFilter.java index c66c0d1..976078c 100644 --- a/app/src/main/java/cn/nekocode/camerafilter/filter/BlueorangeFilter.java +++ b/app/src/main/java/cn/nekocode/camerafilter/filter/BlueorangeFilter.java @@ -22,7 +22,7 @@ import cn.nekocode.camerafilter.R; /** - * Created by nekocode on 16/8/6. + * @author nekocode (nekocode.cn@gmail.com) */ public class BlueorangeFilter extends CameraFilter { private int program; diff --git a/app/src/main/java/cn/nekocode/camerafilter/filter/CameraFilter.java b/app/src/main/java/cn/nekocode/camerafilter/filter/CameraFilter.java index 033bd23..e1c7975 100644 --- a/app/src/main/java/cn/nekocode/camerafilter/filter/CameraFilter.java +++ b/app/src/main/java/cn/nekocode/camerafilter/filter/CameraFilter.java @@ -29,7 +29,7 @@ import cn.nekocode.camerafilter.RenderBuffer; /** - * Created by nekocode on 16/8/6. + * @author nekocode (nekocode.cn@gmail.com) */ public abstract class CameraFilter { static final float SQUARE_COORDS[] = { @@ -128,7 +128,7 @@ final public void draw(int cameraTexId, int canvasWidth, int canvasHeight) { onDraw(CAMERA_RENDER_BUF.getTexId(), canvasWidth, canvasHeight); - iFrame ++; + iFrame++; } abstract void onDraw(int cameraTexId, int canvasWidth, int canvasHeight); @@ -159,7 +159,7 @@ void setupShaderInputs(int program, FloatBuffer vertex, FloatBuffer textureCoord GLES20.glEnableVertexAttribArray(vTexCoordLocation); GLES20.glVertexAttribPointer(vTexCoordLocation, 2, GLES20.GL_FLOAT, false, 4 * 2, textureCoord); - for (int i = 0; i < iChannels.length; i ++) { + for (int i = 0; i < iChannels.length; i++) { int sTextureLocation = GLES20.glGetUniformLocation(program, "iChannel" + i); GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + i); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, iChannels[i]); @@ -168,9 +168,9 @@ void setupShaderInputs(int program, FloatBuffer vertex, FloatBuffer textureCoord float _iChannelResolutions[] = new float[iChannelResolutions.length * 3]; for (int i = 0; i < iChannelResolutions.length; i++) { - _iChannelResolutions[i*3] = iChannelResolutions[i][0]; - _iChannelResolutions[i*3 + 1] = iChannelResolutions[i][1]; - _iChannelResolutions[i*3 + 2] = 1.0f; + _iChannelResolutions[i * 3] = iChannelResolutions[i][0]; + _iChannelResolutions[i * 3 + 1] = iChannelResolutions[i][1]; + _iChannelResolutions[i * 3 + 2] = 1.0f; } int iChannelResolutionLocation = GLES20.glGetUniformLocation(program, "iChannelResolution"); diff --git a/app/src/main/java/cn/nekocode/camerafilter/filter/ChromaticAberrationFilter.java b/app/src/main/java/cn/nekocode/camerafilter/filter/ChromaticAberrationFilter.java index db7472b..0a9be3d 100644 --- a/app/src/main/java/cn/nekocode/camerafilter/filter/ChromaticAberrationFilter.java +++ b/app/src/main/java/cn/nekocode/camerafilter/filter/ChromaticAberrationFilter.java @@ -22,7 +22,7 @@ import cn.nekocode.camerafilter.R; /** - * Created by nekocode on 16/8/6. + * @author nekocode (nekocode.cn@gmail.com) */ public class ChromaticAberrationFilter extends CameraFilter { private int program; diff --git a/app/src/main/java/cn/nekocode/camerafilter/filter/ContrastFilter.java b/app/src/main/java/cn/nekocode/camerafilter/filter/ContrastFilter.java index 72d86f3..0bd7bc7 100644 --- a/app/src/main/java/cn/nekocode/camerafilter/filter/ContrastFilter.java +++ b/app/src/main/java/cn/nekocode/camerafilter/filter/ContrastFilter.java @@ -22,7 +22,7 @@ import cn.nekocode.camerafilter.R; /** - * Created by nekocode on 16/8/6. + * @author nekocode (nekocode.cn@gmail.com) */ public class ContrastFilter extends CameraFilter { private int program; diff --git a/app/src/main/java/cn/nekocode/camerafilter/filter/CrackedFilter.java b/app/src/main/java/cn/nekocode/camerafilter/filter/CrackedFilter.java index bf32322..eb1fc46 100644 --- a/app/src/main/java/cn/nekocode/camerafilter/filter/CrackedFilter.java +++ b/app/src/main/java/cn/nekocode/camerafilter/filter/CrackedFilter.java @@ -22,7 +22,7 @@ import cn.nekocode.camerafilter.R; /** - * Created by nekocode on 16/8/6. + * @author nekocode (nekocode.cn@gmail.com) */ public class CrackedFilter extends CameraFilter { private int program; diff --git a/app/src/main/java/cn/nekocode/camerafilter/filter/CrosshatchFilter.java b/app/src/main/java/cn/nekocode/camerafilter/filter/CrosshatchFilter.java index e98d8d5..9e5d522 100644 --- a/app/src/main/java/cn/nekocode/camerafilter/filter/CrosshatchFilter.java +++ b/app/src/main/java/cn/nekocode/camerafilter/filter/CrosshatchFilter.java @@ -22,7 +22,7 @@ import cn.nekocode.camerafilter.R; /** - * Created by nekocode on 16/8/6. + * @author nekocode (nekocode.cn@gmail.com) */ public class CrosshatchFilter extends CameraFilter { private int program; diff --git a/app/src/main/java/cn/nekocode/camerafilter/filter/EMInterferenceFilter.java b/app/src/main/java/cn/nekocode/camerafilter/filter/EMInterferenceFilter.java index 6a1c10d..4f8ed22 100644 --- a/app/src/main/java/cn/nekocode/camerafilter/filter/EMInterferenceFilter.java +++ b/app/src/main/java/cn/nekocode/camerafilter/filter/EMInterferenceFilter.java @@ -22,7 +22,7 @@ import cn.nekocode.camerafilter.R; /** - * Created by nekocode on 16/8/6. + * @author nekocode (nekocode.cn@gmail.com) */ public class EMInterferenceFilter extends CameraFilter { private int program; diff --git a/app/src/main/java/cn/nekocode/camerafilter/filter/EdgeDetectionFilter.java b/app/src/main/java/cn/nekocode/camerafilter/filter/EdgeDetectionFilter.java index d2d319c..627826a 100644 --- a/app/src/main/java/cn/nekocode/camerafilter/filter/EdgeDetectionFilter.java +++ b/app/src/main/java/cn/nekocode/camerafilter/filter/EdgeDetectionFilter.java @@ -22,7 +22,7 @@ import cn.nekocode.camerafilter.R; /** - * Created by nekocode on 16/8/6. + * @author nekocode (nekocode.cn@gmail.com) */ public class EdgeDetectionFilter extends CameraFilter { private int program; diff --git a/app/src/main/java/cn/nekocode/camerafilter/filter/JFAVoronoiFilter.java b/app/src/main/java/cn/nekocode/camerafilter/filter/JFAVoronoiFilter.java index a5a4bc2..67c4bab 100644 --- a/app/src/main/java/cn/nekocode/camerafilter/filter/JFAVoronoiFilter.java +++ b/app/src/main/java/cn/nekocode/camerafilter/filter/JFAVoronoiFilter.java @@ -23,8 +23,7 @@ import cn.nekocode.camerafilter.RenderBuffer; /** - * Created by nekocode on 16/8/6. - * TODO Not working well + * @author nekocode (nekocode.cn@gmail.com) */ public class JFAVoronoiFilter extends CameraFilter { private int programImg; diff --git a/app/src/main/java/cn/nekocode/camerafilter/filter/LegofiedFilter.java b/app/src/main/java/cn/nekocode/camerafilter/filter/LegofiedFilter.java index 8a82ffb..8286510 100644 --- a/app/src/main/java/cn/nekocode/camerafilter/filter/LegofiedFilter.java +++ b/app/src/main/java/cn/nekocode/camerafilter/filter/LegofiedFilter.java @@ -22,7 +22,7 @@ import cn.nekocode.camerafilter.R; /** - * Created by nekocode on 16/8/6. + * @author nekocode (nekocode.cn@gmail.com) */ public class LegofiedFilter extends CameraFilter { private int program; diff --git a/app/src/main/java/cn/nekocode/camerafilter/filter/LichtensteinEsqueFilter.java b/app/src/main/java/cn/nekocode/camerafilter/filter/LichtensteinEsqueFilter.java index 0609805..f37d644 100644 --- a/app/src/main/java/cn/nekocode/camerafilter/filter/LichtensteinEsqueFilter.java +++ b/app/src/main/java/cn/nekocode/camerafilter/filter/LichtensteinEsqueFilter.java @@ -22,7 +22,7 @@ import cn.nekocode.camerafilter.R; /** - * Created by nekocode on 16/8/6. + * @author nekocode (nekocode.cn@gmail.com) */ public class LichtensteinEsqueFilter extends CameraFilter { private int program; diff --git a/app/src/main/java/cn/nekocode/camerafilter/filter/MappingFilter.java b/app/src/main/java/cn/nekocode/camerafilter/filter/MappingFilter.java index 293f65a..4f8ec5a 100644 --- a/app/src/main/java/cn/nekocode/camerafilter/filter/MappingFilter.java +++ b/app/src/main/java/cn/nekocode/camerafilter/filter/MappingFilter.java @@ -22,7 +22,7 @@ import cn.nekocode.camerafilter.R; /** - * Created by nekocode on 16/8/6. + * @author nekocode (nekocode.cn@gmail.com) */ public class MappingFilter extends CameraFilter { private int program; diff --git a/app/src/main/java/cn/nekocode/camerafilter/filter/MoneyFilter.java b/app/src/main/java/cn/nekocode/camerafilter/filter/MoneyFilter.java index 7aefe2b..2409315 100644 --- a/app/src/main/java/cn/nekocode/camerafilter/filter/MoneyFilter.java +++ b/app/src/main/java/cn/nekocode/camerafilter/filter/MoneyFilter.java @@ -22,7 +22,7 @@ import cn.nekocode.camerafilter.R; /** - * Created by nekocode on 16/8/6. + * @author nekocode (nekocode.cn@gmail.com) */ public class MoneyFilter extends CameraFilter { private int program; diff --git a/app/src/main/java/cn/nekocode/camerafilter/filter/NoiseWarpFilter.java b/app/src/main/java/cn/nekocode/camerafilter/filter/NoiseWarpFilter.java index 3834080..eca2b1f 100644 --- a/app/src/main/java/cn/nekocode/camerafilter/filter/NoiseWarpFilter.java +++ b/app/src/main/java/cn/nekocode/camerafilter/filter/NoiseWarpFilter.java @@ -22,7 +22,7 @@ import cn.nekocode.camerafilter.R; /** - * Created by nekocode on 16/8/6. + * @author nekocode (nekocode.cn@gmail.com) */ public class NoiseWarpFilter extends CameraFilter { private int program; diff --git a/app/src/main/java/cn/nekocode/camerafilter/filter/OriginalFilter.java b/app/src/main/java/cn/nekocode/camerafilter/filter/OriginalFilter.java index cb74ff6..27c8c9e 100644 --- a/app/src/main/java/cn/nekocode/camerafilter/filter/OriginalFilter.java +++ b/app/src/main/java/cn/nekocode/camerafilter/filter/OriginalFilter.java @@ -22,7 +22,7 @@ import cn.nekocode.camerafilter.R; /** - * Created by nekocode on 16/8/6. + * @author nekocode (nekocode.cn@gmail.com) */ public class OriginalFilter extends CameraFilter { private int program; diff --git a/app/src/main/java/cn/nekocode/camerafilter/filter/PixelizeFilter.java b/app/src/main/java/cn/nekocode/camerafilter/filter/PixelizeFilter.java index 8fff346..21a24b8 100644 --- a/app/src/main/java/cn/nekocode/camerafilter/filter/PixelizeFilter.java +++ b/app/src/main/java/cn/nekocode/camerafilter/filter/PixelizeFilter.java @@ -22,7 +22,7 @@ import cn.nekocode.camerafilter.R; /** - * Created by nekocode on 16/8/6. + * @author nekocode (nekocode.cn@gmail.com) */ public class PixelizeFilter extends CameraFilter { private int program; diff --git a/app/src/main/java/cn/nekocode/camerafilter/filter/PolygonizationFilter.java b/app/src/main/java/cn/nekocode/camerafilter/filter/PolygonizationFilter.java index bb993af..69cf5f2 100644 --- a/app/src/main/java/cn/nekocode/camerafilter/filter/PolygonizationFilter.java +++ b/app/src/main/java/cn/nekocode/camerafilter/filter/PolygonizationFilter.java @@ -22,7 +22,7 @@ import cn.nekocode.camerafilter.R; /** - * Created by nekocode on 16/8/6. + * @author nekocode (nekocode.cn@gmail.com) */ public class PolygonizationFilter extends CameraFilter { private int program; diff --git a/app/src/main/java/cn/nekocode/camerafilter/filter/RefractionFilter.java b/app/src/main/java/cn/nekocode/camerafilter/filter/RefractionFilter.java index 36e76e4..ebed184 100644 --- a/app/src/main/java/cn/nekocode/camerafilter/filter/RefractionFilter.java +++ b/app/src/main/java/cn/nekocode/camerafilter/filter/RefractionFilter.java @@ -22,7 +22,7 @@ import cn.nekocode.camerafilter.R; /** - * Created by nekocode on 16/8/6. + * @author nekocode (nekocode.cn@gmail.com) */ public class RefractionFilter extends CameraFilter { private int program; diff --git a/app/src/main/java/cn/nekocode/camerafilter/filter/TileMosaicFilter.java b/app/src/main/java/cn/nekocode/camerafilter/filter/TileMosaicFilter.java index f7394bf..4b163c9 100644 --- a/app/src/main/java/cn/nekocode/camerafilter/filter/TileMosaicFilter.java +++ b/app/src/main/java/cn/nekocode/camerafilter/filter/TileMosaicFilter.java @@ -22,7 +22,7 @@ import cn.nekocode.camerafilter.R; /** - * Created by nekocode on 16/8/6. + * @author nekocode (nekocode.cn@gmail.com) */ public class TileMosaicFilter extends CameraFilter { private int program; diff --git a/app/src/main/java/cn/nekocode/camerafilter/filter/TrianglesMosaicFilter.java b/app/src/main/java/cn/nekocode/camerafilter/filter/TrianglesMosaicFilter.java index f131022..49f565c 100644 --- a/app/src/main/java/cn/nekocode/camerafilter/filter/TrianglesMosaicFilter.java +++ b/app/src/main/java/cn/nekocode/camerafilter/filter/TrianglesMosaicFilter.java @@ -22,7 +22,7 @@ import cn.nekocode.camerafilter.R; /** - * Created by nekocode on 16/8/6. + * @author nekocode (nekocode.cn@gmail.com) */ public class TrianglesMosaicFilter extends CameraFilter { private int program; diff --git a/build.gradle b/build.gradle index 77ce66e..a3330d4 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.1.3' + classpath 'com.android.tools.build:gradle:2.2.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files