diff --git a/app/build.gradle b/app/build.gradle
index f4219af..842f0df 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -35,8 +35,8 @@ dependencies {
exclude group: 'com.android.support', module: 'support-annotations'
})
- compile 'com.github.Qixingchen:RV-Utils:V1.1.4'
+ compile 'com.github.Qixingchen:RV-Utils:V1.1.5'
- compile 'com.github.bumptech.glide:glide:3.7.0'
+ compile 'com.github.bumptech.glide:glide:4.1.1'
testCompile 'junit:junit:4.12'
}
diff --git a/app/src/main/java/moe/xing/getimage_app/ImageAdapter.java b/app/src/main/java/moe/xing/getimage_app/ImageAdapter.java
index 6c20789..186266a 100644
--- a/app/src/main/java/moe/xing/getimage_app/ImageAdapter.java
+++ b/app/src/main/java/moe/xing/getimage_app/ImageAdapter.java
@@ -7,6 +7,7 @@
import android.view.ViewGroup;
import com.bumptech.glide.Glide;
+import com.bumptech.glide.request.RequestOptions;
import java.io.File;
@@ -15,6 +16,8 @@
/**
* Created by Qi Xingchen on 16-11-30.
+ *
+ * 图片列表
*/
class ImageAdapter extends BaseRecyclerViewAdapter {
@@ -31,7 +34,9 @@ public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
- Glide.with(holder.itemView.getContext()).load(datas.get(position)).centerCrop().into(holder.mBinding.image);
+ Glide.with(holder.itemView.getContext()).load(datas.get(position))
+ .apply(new RequestOptions().centerCrop())
+ .into(holder.mBinding.image);
}
class ViewHolder extends RecyclerView.ViewHolder {
diff --git a/build.gradle b/build.gradle
index d235fb7..7b60ee9 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,18 +1,16 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
-apply plugin: "com.vanniktech.android.junit.jacoco"
+//apply plugin: "com.vanniktech.android.junit.jacoco"
buildscript {
repositories {
jcenter()
- maven {
- url "https://maven.google.com"
- }
+ google()
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.0.0-alpha8'
+ classpath 'com.android.tools.build:gradle:3.0.0-beta6'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
- classpath 'org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.8.1'
- classpath 'com.vanniktech:gradle-android-junit-jacoco-plugin:0.6.0'
+// classpath 'org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.8.1'
+// classpath 'com.vanniktech:gradle-android-junit-jacoco-plugin:0.9.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
@@ -22,9 +20,7 @@ allprojects {
repositories {
jcenter()
maven { url "https://jitpack.io" }
- maven {
- url "https://maven.google.com"
- }
+ google()
}
}
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 93150de..5c9fd78 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-4.1-milestone-1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
diff --git a/lib/build.gradle b/lib/build.gradle
index 03ecf7b..2322460 100644
--- a/lib/build.gradle
+++ b/lib/build.gradle
@@ -1,7 +1,7 @@
apply plugin: 'com.android.library'
apply plugin: 'com.github.dcendents.android-maven'
-apply plugin: 'com.github.kt3k.coveralls'
-apply plugin: 'jacoco'
+//apply plugin: 'com.github.kt3k.coveralls'
+//apply plugin: 'jacoco'
android {
compileSdkVersion rootProject.ext.sdk_version
@@ -19,9 +19,9 @@ android {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
- debug {
- testCoverageEnabled true
- }
+// debug {
+// testCoverageEnabled true
+// }
lintOptions {
abortOnError false
}
@@ -37,6 +37,7 @@ dependencies {
compile "com.github.Qixingchen:Rx-Utils:V1.2.6"
compile "com.android.support:appcompat-v7:$supportLibraryVersion"
+ compile "com.android.support:exifinterface:$supportLibraryVersion"
//corp
compile 'com.soundcloud.android:android-crop:1.0.1@aar'
//luban 压缩
@@ -72,11 +73,11 @@ artifacts {
archives javadocJar
}
-coveralls {
- jacocoReportPath = "${buildDir}/reports/jacoco/debug/jacoco.xml"
-}
-
-tasks.coveralls {
- dependsOn 'assembleDebugUnitTest'
- onlyIf { System.env.'CI' }
-}
+//coveralls {
+// jacocoReportPath = "${buildDir}/reports/jacoco/debug/jacoco.xml"
+//}
+//
+//tasks.coveralls {
+// dependsOn 'assembleDebugUnitTest'
+// onlyIf { System.env.'CI' }
+//}
diff --git a/lib/src/main/java/moe/xing/getimage/GetImageActivity.java b/lib/src/main/java/moe/xing/getimage/GetImageActivity.java
index d84183b..9f8f847 100644
--- a/lib/src/main/java/moe/xing/getimage/GetImageActivity.java
+++ b/lib/src/main/java/moe/xing/getimage/GetImageActivity.java
@@ -11,6 +11,7 @@
import android.provider.MediaStore;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
+import android.support.media.ExifInterface;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Toast;
@@ -51,8 +52,6 @@ public class GetImageActivity extends Activity {
private static final int TAKE_PHOTO = 20;
private static final int CORP_PHOTO = 30;
private static final String SUBSCRIBER_ID = "SubscriberID";
- // @Deprecated
-// private static final String SELECT_MODE = "select_mode";
private static final String MAX_ARRAY_SIZE = "MAX_ARRAY_SIZE";
private static final String IS_SINGLE = "IS_SINGLE";
private static final String IS_TAKE_PHOTO = "IS_TAKE_PHOTO";
@@ -65,21 +64,6 @@ public class GetImageActivity extends Activity {
@Nullable
private File takenFile = null;
-// /**
-// * 获取启动 intent
-// *
-// * @param subscriberID subscriberID
-// * @param selectMode 选择模式(单选/多选)
-// */
-// public static Intent getStartIntent(Context context, int subscriberID,
-// @RxGetImage.SelectMode int selectMode,
-// int maxSize) {
-// Intent intent = new Intent(context, GetImageActivity.class);
-// intent.putExtra(SUBSCRIBER_ID, subscriberID);
-// intent.putExtra(SELECT_MODE, selectMode);
-// intent.putExtra(MAX_ARRAY_SIZE, maxSize);
-// return intent;
-// }
/**
* 获取启动 intent
@@ -283,13 +267,20 @@ public void call(Throwable throwable) {
}
}).flatMap(new Func1>() {
@Override
- public Observable call(File file) {
+ public Observable call(final File file) {
if (getIntent().getBooleanExtra(NEED_COMPRESS, true)) {
return Luban.compress(GetImageActivity.this, file)
.setMaxSize(getIntent().getIntExtra(MAX_SIZE_IN_KIB, 150))
.setMaxWidth(getIntent().getIntExtra(MAX_WIDTH_IN_PX, 1920))
.setMaxHeight(getIntent().getIntExtra(MAX_HEIGHT_IN_PX, 1920))
- .putGear(Luban.CUSTOM_GEAR).asObservable();
+ .putGear(Luban.CUSTOM_GEAR).asObservable()
+ .map(new Func1() {
+ @Override
+ public File call(File out) {
+ copyExif(file, out);
+ return out;
+ }
+ });
} else {
return Observable.just(file);
}
@@ -384,7 +375,7 @@ private File takenPhotoFile() throws IOException {
return image;
}
- private void sendSingleAnsAndFinish(@NonNull File image) {
+ private void sendSingleAnsAndFinish(@NonNull final File image) {
if (getIntent().getBooleanExtra(NEED_COMPRESS, true)) {
Luban.compress(this, image)
.setMaxSize(getIntent().getIntExtra(MAX_SIZE_IN_KIB, 150))
@@ -406,6 +397,7 @@ public void onError(Throwable e) {
@Override
public void onNext(File file) {
+ copyExif(image, file);
RxGetImage.getInstance().onAns(file, getSubscriberID());
}
});
@@ -415,4 +407,28 @@ public void onNext(File file) {
finish();
}
}
+
+ /**
+ * 复写 exif 信息
+ *
+ * @param origin 原始文件
+ * @param after 新增文件
+ */
+ private void copyExif(@NonNull File origin, @NonNull File after) {
+
+ try {
+ ExifInterface originExif = new ExifInterface(origin.getAbsolutePath());
+ ExifInterface afterExif = new ExifInterface(after.getAbsolutePath());
+ afterExif.setAttribute(ExifInterface.TAG_ORIENTATION,
+ String.valueOf(originExif.getAttributeInt(ExifInterface.TAG_ORIENTATION,
+ ExifInterface.ORIENTATION_NORMAL)));
+ double[] latLong = originExif.getLatLong();
+ if (latLong != null && latLong.length >= 2) {
+ afterExif.setLatLong(latLong[0], latLong[1]);
+ }
+ afterExif.saveAttributes();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
}
diff --git a/lib/src/main/java/moe/xing/getimage/RxGetImage.java b/lib/src/main/java/moe/xing/getimage/RxGetImage.java
index 4aa0e4c..8545344 100644
--- a/lib/src/main/java/moe/xing/getimage/RxGetImage.java
+++ b/lib/src/main/java/moe/xing/getimage/RxGetImage.java
@@ -1,7 +1,6 @@
package moe.xing.getimage;
import android.content.Intent;
-import android.support.annotation.IntDef;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.SparseArray;
@@ -21,11 +20,6 @@
@SuppressWarnings("WeakerAccess")
public class RxGetImage {
- public static final int MODE_SINGLE = 1;
- public static final int MODE_SINGLE_AND_CORP = 2;
- public static final int MODE_MULTIPLE = 3;
- public static final int MODE_TAKE_PHOTO = 4;
- public static final int MODE_TAKE_PHOTO_AND_CORP = 5;
private static RxGetImage sSingleton;
private SparseArray> mSubscribers = new SparseArray<>();
@@ -51,40 +45,6 @@ public static Builder newBuilder() {
return new Builder();
}
- /**
- * 获取图片
- *
- * @return Observable
- */
- @NonNull
- @Deprecated
- public Observable getImage(final boolean needCorp) {
- return new Builder().isSingle(true).needCorp(needCorp).build();
- }
-
- /**
- * 获取多张图片
- *
- * @param maxSize 最大数量
- * @return Observable
- */
- @NonNull
- @Deprecated
- public Observable getMultipleImage(final int maxSize) {
- return new Builder().isTakePhoto(false).isSingle(false).maxArraySize(maxSize).build();
- }
-
- /**
- * 拍摄图片
- *
- * @return Observable
- */
- @NonNull
- @Deprecated
- public Observable takeImage(final boolean needCorp) {
- return new Builder().isTakePhoto(true).needCorp(needCorp).build();
- }
-
/**
* 设置返回的图片
*
@@ -141,11 +101,7 @@ public void call(Subscriber super File> subscriber) {
});
}
- @IntDef({MODE_SINGLE, MODE_MULTIPLE, MODE_SINGLE_AND_CORP, MODE_TAKE_PHOTO, MODE_TAKE_PHOTO_AND_CORP})
- @Deprecated
- public @interface SelectMode {
- }
-
+ @SuppressWarnings("SameParameterValue")
public static final class Builder {
private boolean needCorp;
private boolean needCompress;