From 8a6f908e4482be9ebb9883b45f0b811be643b9a0 Mon Sep 17 00:00:00 2001 From: Chris Zhao Date: Wed, 10 Jan 2018 15:37:36 +0100 Subject: [PATCH 1/7] Updated whole project with new gradle, updated support library, sdk(target etc.) --- .gitignore | 2 + .idea/.name | 1 - .idea/compiler.xml | 8 +- .idea/copyright/profiles_settings.xml | 3 - .idea/gradle.xml | 9 +- .idea/misc.xml | 87 ++++++++++++++---- .idea/modules.xml | 4 +- ShaderCam.iml | 5 +- build.gradle | 4 +- gradle/wrapper/gradle-wrapper.properties | 2 +- shadercam-example/build.gradle | 8 +- shadercam-example/shadercam-example.iml | 59 ++++++------- shadercam/build.gradle | 8 +- shadercam/shadercam-shadercam.iml | 107 +++++++++++++++++++++++ 14 files changed, 230 insertions(+), 77 deletions(-) delete mode 100644 .idea/.name delete mode 100644 .idea/copyright/profiles_settings.xml create mode 100644 shadercam/shadercam-shadercam.iml diff --git a/.gitignore b/.gitignore index 4d66147..7d3dff9 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,8 @@ /local.properties /.idea/workspace.xml /.idea/libraries +.idea/caches/ +.idea/codeStyles/ .DS_Store /build /captures diff --git a/.idea/.name b/.idea/.name deleted file mode 100644 index 3e02e60..0000000 --- a/.idea/.name +++ /dev/null @@ -1 +0,0 @@ -ShaderCam \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 9a8b7e5..875366c 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -1,8 +1,6 @@ - diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml deleted file mode 100644 index e7bedf3..0000000 --- a/.idea/copyright/profiles_settings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 95b6912..1abcc9e 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -5,7 +5,6 @@ - + diff --git a/.idea/misc.xml b/.idea/misc.xml index 6a1e020..aa76059 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,18 +1,83 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -27,17 +92,7 @@ - - - - - - - - - - - + diff --git a/.idea/modules.xml b/.idea/modules.xml index 50ce2a2..a915c47 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,9 +2,9 @@ - - + + \ No newline at end of file diff --git a/ShaderCam.iml b/ShaderCam.iml index 65f2fbc..e51986f 100644 --- a/ShaderCam.iml +++ b/ShaderCam.iml @@ -1,5 +1,5 @@ - + @@ -12,8 +12,9 @@ + - + \ No newline at end of file diff --git a/build.gradle b/build.gradle index 0d7c488..1ce4b65 100644 --- a/build.gradle +++ b/build.gradle @@ -3,9 +3,10 @@ buildscript { repositories { jcenter() + google() } dependencies { - classpath 'com.android.tools.build:gradle:2.0.0-beta6' + classpath 'com.android.tools.build:gradle:3.1.0-alpha07' classpath 'com.github.dcendents:android-maven-plugin:1.2' } } @@ -14,5 +15,6 @@ buildscript { allprojects { repositories { jcenter() + google() } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 5ef4a72..aad5fa5 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip diff --git a/shadercam-example/build.gradle b/shadercam-example/build.gradle index e78d993..020ce29 100644 --- a/shadercam-example/build.gradle +++ b/shadercam-example/build.gradle @@ -1,13 +1,13 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 23 - buildToolsVersion '23.0.2' + compileSdkVersion 27 + buildToolsVersion '27.0.3' defaultConfig { applicationId "com.androidexperiments.shadercam.example" minSdkVersion 21 - targetSdkVersion 23 + targetSdkVersion 27 versionCode 3 versionName "1.2" } @@ -26,6 +26,6 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile project(':shadercam') - compile 'com.android.support:appcompat-v7:23.2.0' //for theming + compile 'com.android.support:appcompat-v7:27.0.2' //for theming compile 'com.jakewharton:butterknife:6.1.0' //dependency injection } diff --git a/shadercam-example/shadercam-example.iml b/shadercam-example/shadercam-example.iml index 54e184f..61358a8 100644 --- a/shadercam-example/shadercam-example.iml +++ b/shadercam-example/shadercam-example.iml @@ -1,5 +1,5 @@ - + @@ -9,7 +9,6 @@ - + + + + - + - + + + + + + + + - + - + - - + - - - - - - - + - - - - - + - + - + - - - - - - - - + + + + + + + \ No newline at end of file diff --git a/shadercam/build.gradle b/shadercam/build.gradle index df1ef2e..fe24d86 100644 --- a/shadercam/build.gradle +++ b/shadercam/build.gradle @@ -9,12 +9,12 @@ apply plugin: 'com.android.library' version "1.2.0" android { - compileSdkVersion 23 - buildToolsVersion '23.0.2' + compileSdkVersion 27 + buildToolsVersion '27.0.3' defaultConfig { minSdkVersion 21 - targetSdkVersion 23 + targetSdkVersion 27 versionCode 4 versionName version } @@ -28,7 +28,7 @@ android { dependencies { //for using fragmentactivity with permissions model - compile 'com.android.support:support-v4:23.2.0' + compile 'com.android.support:support-v4:27.0.2' } //def siteUrl = 'https://github.com/googlecreativelab/shadercam' // Homepage URL of the library diff --git a/shadercam/shadercam-shadercam.iml b/shadercam/shadercam-shadercam.iml new file mode 100644 index 0000000..51b5117 --- /dev/null +++ b/shadercam/shadercam-shadercam.iml @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From f3e218f33c53fc0a26dd423393f2c153089e4f90 Mon Sep 17 00:00:00 2001 From: Chris Zhao Date: Wed, 10 Jan 2018 15:48:12 +0100 Subject: [PATCH 2/7] Fixed warnings about permissions in library --- .../shadercam/fragments/CameraFragment.java | 2 ++ .../shadercam/fragments/PermissionsHelper.java | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/shadercam/src/main/java/com/androidexperiments/shadercam/fragments/CameraFragment.java b/shadercam/src/main/java/com/androidexperiments/shadercam/fragments/CameraFragment.java index f90b555..b614bb8 100644 --- a/shadercam/src/main/java/com/androidexperiments/shadercam/fragments/CameraFragment.java +++ b/shadercam/src/main/java/com/androidexperiments/shadercam/fragments/CameraFragment.java @@ -1,5 +1,6 @@ package com.androidexperiments.shadercam.fragments; +import android.annotation.SuppressLint; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; @@ -196,6 +197,7 @@ public void swapCamera() /** * Tries to open a CameraDevice. The result is listened by `mStateCallback`. */ + @SuppressLint("MissingPermission") public void openCamera() { final Activity activity = getActivity(); diff --git a/shadercam/src/main/java/com/androidexperiments/shadercam/fragments/PermissionsHelper.java b/shadercam/src/main/java/com/androidexperiments/shadercam/fragments/PermissionsHelper.java index 18b491c..c09afb1 100644 --- a/shadercam/src/main/java/com/androidexperiments/shadercam/fragments/PermissionsHelper.java +++ b/shadercam/src/main/java/com/androidexperiments/shadercam/fragments/PermissionsHelper.java @@ -1,12 +1,12 @@ package com.androidexperiments.shadercam.fragments; import android.content.pm.PackageManager; -import android.content.pm.PermissionInfo; import android.os.Build; import android.support.annotation.NonNull; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; +import android.support.v4.content.ContextCompat; import android.util.Log; import java.util.ArrayList; @@ -153,7 +153,7 @@ public boolean verifyPermissions(int[] grantResults) { public boolean hasSelfPermission(String[] permissions) { // Verify that all required permissions have been granted for (String permission : permissions) { - if (getActivity().checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) { + if (ContextCompat.checkSelfPermission(getActivity(), permission) != PackageManager.PERMISSION_GRANTED) { return false; } } @@ -167,7 +167,7 @@ public boolean hasSelfPermission(String[] permissions) { public boolean hasSelfPermission(String permission) { // Below Android M all permissions are granted at install time and are already available. - return getActivity().checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED; + return ContextCompat.checkSelfPermission(getActivity(), permission) == PackageManager.PERMISSION_GRANTED; } } From a2f960b04cad647d3ad1219705be284b246727fa Mon Sep 17 00:00:00 2001 From: Chris Zhao Date: Wed, 10 Jan 2018 16:00:21 +0100 Subject: [PATCH 3/7] Updated butterknife, corrected sample for the update --- ShaderCam.iml | 1 - shadercam-example/build.gradle | 2 +- shadercam-example/shadercam-example.iml | 28 +++++++++++++------ .../example/SimpleShaderActivity.java | 8 +++--- shadercam/shadercam-shadercam.iml | 27 ++++++++++++++++-- 5 files changed, 49 insertions(+), 17 deletions(-) diff --git a/ShaderCam.iml b/ShaderCam.iml index e51986f..c815196 100644 --- a/ShaderCam.iml +++ b/ShaderCam.iml @@ -12,7 +12,6 @@ - diff --git a/shadercam-example/build.gradle b/shadercam-example/build.gradle index 020ce29..b91e76a 100644 --- a/shadercam-example/build.gradle +++ b/shadercam-example/build.gradle @@ -27,5 +27,5 @@ dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile project(':shadercam') compile 'com.android.support:appcompat-v7:27.0.2' //for theming - compile 'com.jakewharton:butterknife:6.1.0' //dependency injection + compile 'com.jakewharton:butterknife:8.7.0' //dependency injection } diff --git a/shadercam-example/shadercam-example.iml b/shadercam-example/shadercam-example.iml index 61358a8..013c298 100644 --- a/shadercam-example/shadercam-example.iml +++ b/shadercam-example/shadercam-example.iml @@ -84,27 +84,39 @@ + + + + - - + - - - - - - + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/shadercam-example/src/main/java/com/androidexperiments/shadercam/example/SimpleShaderActivity.java b/shadercam-example/src/main/java/com/androidexperiments/shadercam/example/SimpleShaderActivity.java index bfb6b15..352b15d 100644 --- a/shadercam-example/src/main/java/com/androidexperiments/shadercam/example/SimpleShaderActivity.java +++ b/shadercam-example/src/main/java/com/androidexperiments/shadercam/example/SimpleShaderActivity.java @@ -22,8 +22,8 @@ import java.io.File; import java.util.Arrays; +import butterknife.BindView; import butterknife.ButterKnife; -import butterknife.InjectView; import butterknife.OnClick; /** @@ -44,8 +44,8 @@ public class SimpleShaderActivity extends FragmentActivity implements CameraRend /** * We inject our views from our layout xml here using {@link ButterKnife} */ - @InjectView(R.id.texture_view) TextureView mTextureView; - @InjectView(R.id.btn_record) Button mRecordBtn; + @BindView(R.id.texture_view) TextureView mTextureView; + @BindView(R.id.btn_record) Button mRecordBtn; /** * Custom fragment used for encapsulating all the {@link android.hardware.camera2} apis. @@ -72,7 +72,7 @@ protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); - ButterKnife.inject(this); + ButterKnife.bind(this); setupCameraFragment(); setupInteraction(); diff --git a/shadercam/shadercam-shadercam.iml b/shadercam/shadercam-shadercam.iml index 51b5117..82605ab 100644 --- a/shadercam/shadercam-shadercam.iml +++ b/shadercam/shadercam-shadercam.iml @@ -85,23 +85,44 @@ + + + + + + + + + + + + + - + - - + + + + + + + + + + \ No newline at end of file From 7decc2d1ca6e59231170c395c75c2be4b0db606e Mon Sep 17 00:00:00 2001 From: Chris Zhao Date: Wed, 10 Jan 2018 16:17:25 +0100 Subject: [PATCH 4/7] Using data-binding instead butterknife --- shadercam-example/build.gradle | 4 +- shadercam-example/shadercam-example.iml | 12 ++- .../shadercam/example/MeetupActivity.java | 5 +- .../example/SimpleShaderActivity.java | 46 ++++-------- .../src/main/res/layout/activity_main.xml | 75 ++++++++++--------- shadercam/shadercam-shadercam.iml | 7 +- 6 files changed, 71 insertions(+), 78 deletions(-) diff --git a/shadercam-example/build.gradle b/shadercam-example/build.gradle index b91e76a..83fb9b6 100644 --- a/shadercam-example/build.gradle +++ b/shadercam-example/build.gradle @@ -21,11 +21,13 @@ android { abortOnError false } + dataBinding { + enabled = true + } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile project(':shadercam') compile 'com.android.support:appcompat-v7:27.0.2' //for theming - compile 'com.jakewharton:butterknife:8.7.0' //dependency injection } diff --git a/shadercam-example/shadercam-example.iml b/shadercam-example/shadercam-example.iml index 013c298..7c1f943 100644 --- a/shadercam-example/shadercam-example.iml +++ b/shadercam-example/shadercam-example.iml @@ -87,10 +87,13 @@ + + + + - @@ -98,23 +101,26 @@ + + - + - + + diff --git a/shadercam-example/src/main/java/com/androidexperiments/shadercam/example/MeetupActivity.java b/shadercam-example/src/main/java/com/androidexperiments/shadercam/example/MeetupActivity.java index 4c5efd5..bf8dc0c 100644 --- a/shadercam-example/src/main/java/com/androidexperiments/shadercam/example/MeetupActivity.java +++ b/shadercam-example/src/main/java/com/androidexperiments/shadercam/example/MeetupActivity.java @@ -13,14 +13,11 @@ */ public class MeetupActivity extends SimpleShaderActivity implements SeekBar.OnSeekBarChangeListener { private SuperAwesomeRenderer mMyRenderer; - private SeekBar mSeekbar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - - mSeekbar = (SeekBar) findViewById(R.id.seek_bar); - mSeekbar.setOnSeekBarChangeListener(this); + mMainBinding.seekBar.setOnSeekBarChangeListener(this); } @Override diff --git a/shadercam-example/src/main/java/com/androidexperiments/shadercam/example/SimpleShaderActivity.java b/shadercam-example/src/main/java/com/androidexperiments/shadercam/example/SimpleShaderActivity.java index 352b15d..292a72e 100644 --- a/shadercam-example/src/main/java/com/androidexperiments/shadercam/example/SimpleShaderActivity.java +++ b/shadercam-example/src/main/java/com/androidexperiments/shadercam/example/SimpleShaderActivity.java @@ -1,6 +1,7 @@ package com.androidexperiments.shadercam.example; import android.Manifest; +import android.databinding.DataBindingUtil; import android.graphics.SurfaceTexture; import android.os.Bundle; import android.os.Environment; @@ -10,9 +11,9 @@ import android.view.MotionEvent; import android.view.TextureView; import android.view.View; -import android.widget.Button; import android.widget.Toast; +import com.androidexperiments.shadercam.example.databinding.MainBinding; import com.androidexperiments.shadercam.example.gl.ExampleRenderer; import com.androidexperiments.shadercam.fragments.CameraFragment; import com.androidexperiments.shadercam.fragments.PermissionsHelper; @@ -22,10 +23,6 @@ import java.io.File; import java.util.Arrays; -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.OnClick; - /** * Written by Anthony Tripaldi * @@ -41,11 +38,7 @@ public class SimpleShaderActivity extends FragmentActivity implements CameraRend */ private static final String TEST_VIDEO_FILE_NAME = "test_video.mp4"; - /** - * We inject our views from our layout xml here using {@link ButterKnife} - */ - @BindView(R.id.texture_view) TextureView mTextureView; - @BindView(R.id.btn_record) Button mRecordBtn; + protected MainBinding mMainBinding; /** * Custom fragment used for encapsulating all the {@link android.hardware.camera2} apis. @@ -70,9 +63,7 @@ public class SimpleShaderActivity extends FragmentActivity implements CameraRend protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - - ButterKnife.bind(this); + mMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main); setupCameraFragment(); setupInteraction(); @@ -102,7 +93,7 @@ private void setupCameraFragment() mCameraFragment = CameraFragment.getInstance(); mCameraFragment.setCameraToUse(CameraFragment.CAMERA_PRIMARY); //pick which camera u want to use, we default to forward - mCameraFragment.setTextureView(mTextureView); + mCameraFragment.setTextureView(mMainBinding.textureView); //add fragment to our setup and let it work its magic FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); @@ -115,7 +106,7 @@ private void setupCameraFragment() * use in our shader to control color channels. */ private void setupInteraction() { - mTextureView.setOnTouchListener(new View.OnTouchListener() { + mMainBinding.textureView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if(mRenderer instanceof ExampleRenderer) { @@ -173,10 +164,10 @@ protected void onResume() { mPermissionsSatisfied = true; //extra helper as callback sometimes isnt quick enough for future results } - if(!mTextureView.isAvailable()) - mTextureView.setSurfaceTextureListener(mTextureListener); //set listener to handle when its ready + if(!mMainBinding.textureView.isAvailable()) + mMainBinding.textureView.setSurfaceTextureListener(mTextureListener); //set listener to handle when its ready else - setReady(mTextureView.getSurfaceTexture(), mTextureView.getWidth(), mTextureView.getHeight()); + setReady(mMainBinding.textureView.getSurfaceTexture(), mMainBinding.textureView.getWidth(), mMainBinding.textureView.getHeight()); } @Override @@ -184,15 +175,11 @@ protected void onPause() { super.onPause(); shutdownCamera(false); - mTextureView.setSurfaceTextureListener(null); + mMainBinding.textureView.setSurfaceTextureListener(null); } - /** - * {@link ButterKnife} uses annotations to make setting {@link android.view.View.OnClickListener}'s - * easier than ever with the {@link OnClick} annotation. - */ - @OnClick(R.id.btn_record) - public void onClickRecord() + + public void onClickRecord(View v) { if(mRenderer.isRecording()) stopRecording(); @@ -200,8 +187,7 @@ public void onClickRecord() startRecording(); } - @OnClick(R.id.btn_swap_camera) - public void onClickSwapCamera() + public void onClickSwapCamera(View v) { mCameraFragment.swapCamera(); } @@ -234,13 +220,13 @@ protected CameraRenderer getRenderer(SurfaceTexture surface, int width, int heig private void startRecording() { mRenderer.startRecording(getVideoFile()); - mRecordBtn.setText("Stop"); + mMainBinding.btnRecord.setText("Stop"); } private void stopRecording() { mRenderer.stopRecording(); - mRecordBtn.setText("Record"); + mMainBinding.btnRecord.setText("Record"); //restart so surface is recreated shutdownCamera(true); @@ -298,7 +284,7 @@ public void onRendererFinished() { @Override public void run() { if (mRestartCamera) { - setReady(mTextureView.getSurfaceTexture(), mTextureView.getWidth(), mTextureView.getHeight()); + setReady(mMainBinding.textureView.getSurfaceTexture(), mMainBinding.textureView.getWidth(), mMainBinding.textureView.getHeight()); mRestartCamera = false; } } diff --git a/shadercam-example/src/main/res/layout/activity_main.xml b/shadercam-example/src/main/res/layout/activity_main.xml index e773056..c20d1ed 100644 --- a/shadercam-example/src/main/res/layout/activity_main.xml +++ b/shadercam-example/src/main/res/layout/activity_main.xml @@ -1,40 +1,47 @@ - + - - + + + android:layout_height="match_parent" + tools:context=".SimpleShaderActivity"> -