Merge branch 'master' into fix-crash-failed-connect

pull/213/head
Aleksandr 6 years ago committed by GitHub
commit a8484056d3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 12
      CHANGELOG.md
  2. 4
      README.md
  3. 4
      build.gradle
  4. 6
      cameraview/build.gradle
  5. 28
      cameraview/src/main/utils/com/otaliastudios/cameraview/CameraUtils.java
  6. 2
      cameraview/src/main/utils/com/otaliastudios/cameraview/OrientationHelper.java
  7. 1
      cameraview/src/main/views/com/otaliastudios/cameraview/ScrollGestureLayout.java
  8. 2
      gradle/wrapper/gradle-wrapper.properties

@ -1,3 +1,10 @@
### v1.5.1
- Bug: byte array length for Frames was incorrect thanks to [@ssakhavi][ssakhavi] ([#205][205])
- Bug: gestures were crashing in some conditions ([#222][222])
- Bug: import correctly the ExifInterface library ([#222][222])
- Updated dependencies thanks to [@caleb-allen][caleb-allen] ([#190][190])
## v1.5.0 ## v1.5.0
- New: set encoder for video recordings with `cameraVideoCodec` ([#174][174]) - New: set encoder for video recordings with `cameraVideoCodec` ([#174][174])
@ -80,6 +87,8 @@ https://github.com/natario1/CameraView/compare/v1.2.3...v1.3.0
[RobertoMorelos]: https://github.com/RobertoMorelos [RobertoMorelos]: https://github.com/RobertoMorelos
[RocketRider]: https://github.com/RocketRider [RocketRider]: https://github.com/RocketRider
[xp-vit]: https://github.com/xp-vit [xp-vit]: https://github.com/xp-vit
[caleb-allen]: https://github.com/caleb-allen
[ssakhavi]: https://github.com/ssakhavi
[73]: https://github.com/natario1/CameraView/pull/73 [73]: https://github.com/natario1/CameraView/pull/73
[80]: https://github.com/natario1/CameraView/pull/80 [80]: https://github.com/natario1/CameraView/pull/80
@ -104,3 +113,6 @@ https://github.com/natario1/CameraView/compare/v1.2.3...v1.3.0
[172]: https://github.com/natario1/CameraView/pull/172 [172]: https://github.com/natario1/CameraView/pull/172
[173]: https://github.com/natario1/CameraView/pull/173 [173]: https://github.com/natario1/CameraView/pull/173
[174]: https://github.com/natario1/CameraView/pull/174 [174]: https://github.com/natario1/CameraView/pull/174
[190]: https://github.com/natario1/CameraView/pull/190
[205]: https://github.com/natario1/CameraView/pull/205
[222]: https://github.com/natario1/CameraView/pull/222

@ -12,7 +12,7 @@ addressing most of the common issues and needs, and still leaving you with flexi
See [CHANGELOG](https://github.com/natario1/CameraView/blob/master/CHANGELOG.md). See [CHANGELOG](https://github.com/natario1/CameraView/blob/master/CHANGELOG.md).
```groovy ```groovy
compile 'com.otaliastudios:cameraview:1.5.0' compile 'com.otaliastudios:cameraview:1.5.1'
``` ```
Make sure your project repositories include the `jcenter()`: Make sure your project repositories include the `jcenter()`:
@ -370,7 +370,7 @@ to just square sizes:
```java ```java
SizeSelector width = SizeSelectors.minWidth(1000); SizeSelector width = SizeSelectors.minWidth(1000);
SizeSelector height = SizeSelectors.minWidth(2000); SizeSelector height = SizeSelectors.minHeight(2000);
SizeSelector dimensions = SizeSelectors.and(width, height); // Matches sizes bigger than 1000x2000. SizeSelector dimensions = SizeSelectors.and(width, height); // Matches sizes bigger than 1000x2000.
SizeSelector ratio = SizeSelectors.aspectRatio(AspectRatio.of(1, 1), 0); // Matches 1:1 sizes. SizeSelector ratio = SizeSelectors.aspectRatio(AspectRatio.of(1, 1), 0); // Matches 1:1 sizes.

@ -7,7 +7,7 @@ buildscript {
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:3.0.1' classpath 'com.android.tools.build:gradle:3.2.0-alpha15'
// https://inthecheesefactory.com/blog/how-to-upload-library-to-jcenter-maven-central-as-dependency/en // https://inthecheesefactory.com/blog/how-to-upload-library-to-jcenter-maven-central-as-dependency/en
// https://www.theguardian.com/technology/developer-blog/2016/dec/06/how-to-publish-an-android-library-a-mysterious-conversation // https://www.theguardian.com/technology/developer-blog/2016/dec/06/how-to-publish-an-android-library-a-mysterious-conversation
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5' classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
@ -25,7 +25,7 @@ allprojects {
ext { ext {
compileSdkVersion = 27 compileSdkVersion = 27
buildToolsVersion = "27.0.3" buildToolsVersion = "27.0.3"
supportLibVersion = '27.1.0' supportLibVersion = '27.1.1'
minSdkVersion = 15 minSdkVersion = 15
targetSdkVersion = 27 targetSdkVersion = 27
} }

@ -3,7 +3,7 @@ apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray' apply plugin: 'com.jfrog.bintray'
// Required by bintray // Required by bintray
version = '1.5.0' version = '1.5.1'
group = 'com.otaliastudios' group = 'com.otaliastudios'
//region android dependencies //region android dependencies
@ -48,7 +48,7 @@ dependencies {
androidTestImplementation 'com.google.dexmaker:dexmaker-mockito:1.2' androidTestImplementation 'com.google.dexmaker:dexmaker-mockito:1.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
implementation "com.android.support:exifinterface:$supportLibVersion" api "com.android.support:exifinterface:$supportLibVersion"
implementation "com.android.support:support-annotations:$supportLibVersion" implementation "com.android.support:support-annotations:$supportLibVersion"
} }
@ -178,7 +178,7 @@ apply plugin: 'jacoco'
def reportsDirectory = "$buildDir/reports/" def reportsDirectory = "$buildDir/reports/"
jacoco { jacoco {
toolVersion = "0.7.4+" toolVersion = "0.8.1"
reportsDir = file(reportsDirectory) reportsDir = file(reportsDirectory)
} }

@ -8,6 +8,7 @@ import android.graphics.Matrix;
import android.hardware.Camera; import android.hardware.Camera;
import android.os.Handler; import android.os.Handler;
import android.support.annotation.UiThread; import android.support.annotation.UiThread;
import android.support.annotation.WorkerThread;
import android.support.media.ExifInterface; import android.support.media.ExifInterface;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
@ -55,6 +56,19 @@ public class CameraUtils {
} }
/**
* Decodes an input byte array and outputs a Bitmap that is ready to be displayed.
* The difference with {@link android.graphics.BitmapFactory#decodeByteArray(byte[], int, int)}
* is that this cares about orientation, reading it from the EXIF header.
*
* @param source a JPEG byte array
*/
@SuppressWarnings("WeakerAccess")
@WorkerThread
public static void decodeBitmap(final byte[] source) {
decodeBitmap(source, Integer.MAX_VALUE, Integer.MAX_VALUE);
}
/** /**
* Decodes an input byte array and outputs a Bitmap that is ready to be displayed. * Decodes an input byte array and outputs a Bitmap that is ready to be displayed.
* The difference with {@link android.graphics.BitmapFactory#decodeByteArray(byte[], int, int)} * The difference with {@link android.graphics.BitmapFactory#decodeByteArray(byte[], int, int)}
@ -100,9 +114,21 @@ public class CameraUtils {
} }
/**
* Decodes an input byte array and outputs a Bitmap that is ready to be displayed.
* The difference with {@link android.graphics.BitmapFactory#decodeByteArray(byte[], int, int)}
* is that this cares about orientation, reading it from the EXIF header.
*
* The image is also downscaled taking care of the maxWidth and maxHeight arguments.
*
* @param source a JPEG byte array
* @param maxWidth the max allowed width
* @param maxHeight the max allowed height
*/
// TODO ignores flipping // TODO ignores flipping
@SuppressWarnings({"SuspiciousNameCombination", "WeakerAccess"}) @SuppressWarnings({"SuspiciousNameCombination", "WeakerAccess"})
/* for tests */ static Bitmap decodeBitmap(byte[] source, int maxWidth, int maxHeight) { @WorkerThread
public static Bitmap decodeBitmap(byte[] source, int maxWidth, int maxHeight) {
if (maxWidth <= 0) maxWidth = Integer.MAX_VALUE; if (maxWidth <= 0) maxWidth = Integer.MAX_VALUE;
if (maxHeight <= 0) maxHeight = Integer.MAX_VALUE; if (maxHeight <= 0) maxHeight = Integer.MAX_VALUE;
int orientation; int orientation;

@ -22,7 +22,7 @@ class OrientationHelper {
OrientationHelper(Context context, @NonNull Callback callback) { OrientationHelper(Context context, @NonNull Callback callback) {
mCallback = callback; mCallback = callback;
mListener = new OrientationEventListener(context, SensorManager.SENSOR_DELAY_NORMAL) { mListener = new OrientationEventListener(context.getApplicationContext(), SensorManager.SENSOR_DELAY_NORMAL) {
@Override @Override
public void onOrientationChanged(int orientation) { public void onOrientationChanged(int orientation) {

@ -29,6 +29,7 @@ class ScrollGestureLayout extends GestureLayout {
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
boolean horizontal; boolean horizontal;
LOG.i("onScroll:", "distanceX="+distanceX, "distanceY="+distanceY); LOG.i("onScroll:", "distanceX="+distanceX, "distanceY="+distanceY);
if (e1 == null || e2 == null) return false; // Got some crashes about this.
if (e1.getX() != mPoints[0].x || e1.getY() != mPoints[0].y) { if (e1.getX() != mPoints[0].x || e1.getY() != mPoints[0].y) {
// First step. We choose now if it's a vertical or horizontal scroll, and // First step. We choose now if it's a vertical or horizontal scroll, and
// stick to it for the whole gesture. // stick to it for the whole gesture.

@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.5-all.zip distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip

Loading…
Cancel
Save