Commit e371b4b8 by sikang

Merge branch 'master' of http://47.100.14.92:8929/sikang/lib_base

update script
parents 54aab50c 15de9484
......@@ -62,5 +62,6 @@ else
echo "未知的打包方式"
fi
gradlew clean
cd lib_base/script/garble/
./reset_name.sh
......@@ -3,9 +3,14 @@
package="tech.starwin">
<!--写入SD卡-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
tools:node="remove" />
<!--读取SD卡-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
tools:node="remove" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--相机-->
<uses-permission android:name="android.permission.CAMERA" />
<!--读取联系人信息-->
......@@ -75,65 +80,44 @@
android:name="com.facebook.accountkit.ClientToken"
android:value="@string/ACCOUNT_KIT_CLIENT_TOKEN" />
<activity
android:name="com.facebook.accountkit.ui.AccountKitActivity"
/>
<activity android:name="com.facebook.accountkit.ui.AccountKitActivity" />
<!--地区选择-->
<activity
android:name="com.common.activity.RegionActivity"
/>
<activity android:name="com.common.activity.RegionActivity" />
<!-- Zendesk -->
<activity
android:name="com.common.activity.RefreshDeskActivity"
android:windowSoftInputMode="adjustResize" />
<activity
android:name="com.common.activity.RefreshDeskListActivity"
/>
<activity android:name="com.common.activity.RefreshDeskListActivity" />
<!--拍照-->
<activity
android:name="com.common.activity.TakePhotoActivity"
/>
<activity android:name="com.common.activity.TakePhotoActivity" />
<!--还款指南-->
<activity
android:name="com.common.activity.RepaymentGuideActivity"
/>
<activity android:name="com.common.activity.RepaymentGuideActivity" />
<!--Web-->
<activity
android:name="com.common.activity.WebActivity"
/>
<activity android:name="com.common.activity.WebActivity" />
<!--注册协议和隐私政策-->
<activity
android:name="com.common.activity.AgreementPolicyActivity"
android:launchMode="standard"
/>
android:launchMode="standard" />
<!--帮助中心-->
<activity
android:name="com.common.activity.HelpCenterActivity"
/>
<activity android:name="com.common.activity.HelpCenterActivity" />
<!--关于我们-->
<activity
android:name="com.common.activity.AboutUsActivity"
/>
<activity android:name="com.common.activity.AboutUsActivity" />
<!--活动中心-->
<activity
android:name="com.common.activity.ActivityCenter"
/>
<activity android:name="com.common.activity.ActivityCenter" />
<!--活动中心-->
<activity
android:name="com.common.activity.MessageListActivity"
/>
<activity android:name="com.common.activity.MessageListActivity" />
<!--<receiver-->
<!--tools:node="remove"-->
......
......@@ -12,6 +12,7 @@ import android.widget.ImageView;
import com.qmuiteam.qmui.util.QMUIStatusBarHelper;
import java.io.File;
import java.io.FileOutputStream;
import tech.starwin.R;
......@@ -20,6 +21,8 @@ import com.common.base.BaseActivity;
import tech.starwin.impl.OnNoShakeClickListener;
import tech.starwin.utils.BitmapUtils;
import tech.starwin.utils.FileUtils;
import tech.starwin.utils.PreferencesManager;
import tech.starwin.utils.SPDataProvider;
import tech.starwin.utils.context_utils.ActivityJumper;
import tech.starwin.utils.context_utils.EasyActivityResult;
import tech.starwin.utils.ui_utils.QMUIHelper;
......@@ -100,6 +103,17 @@ public class TakePhotoActivity extends BaseActivity {
public void onEventClick(View v) {
if (v.getId() == R.id.button_shoot) {
cameraView.captureImage(bitmap -> {
// long pix_size = bitmap.getWidth() * bitmap.getHeight();
// float scale = 720 * 1080 / (float) pix_size;
// BitmapUtils.scaleBitmap(bitmap, scale);
// if(TextUtils.equals(type, PhotoType.KTP.name())){
// SPDataProvider.saveKTPImage(bitmap);
// }else if(TextUtils.equals(type, PhotoType.WORK_CARD.name())){
// SPDataProvider.saveWorkImage(bitmap);
// }
// setResult(RESULT_OK);
// finish();
File image = FileUtils.getImageFile(getApplicationContext(), KTP_IMAGE);
if (!image.exists()) {
image.mkdir();
......@@ -124,14 +138,6 @@ public class TakePhotoActivity extends BaseActivity {
setResult(RESULT_OK, intent);
finish();
// try {
// FileOutputStream outputStream = new FileOutputStream(image.getPath());
// outputStream.write(data);
// outputStream.close();
//
// } catch (java.io.IOException e) {
// e.printStackTrace();
// }
});
} else if (v.getId() == R.id.button_cancel) {
setResult(RESULT_CANCELED);
......
package tech.starwin.mvp.presenter;
import android.content.Context;
import android.graphics.Bitmap;
import android.support.annotation.NonNull;
import android.text.TextUtils;
......@@ -13,11 +14,8 @@ import java.util.List;
import io.reactivex.Observable;
import io.reactivex.ObservableSource;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.functions.Consumer;
import io.reactivex.functions.Function;
import io.reactivex.functions.Predicate;
import io.reactivex.schedulers.Schedulers;
import okhttp3.MultipartBody;
import tech.starwin.LibConfig;
import tech.starwin.base.BasePresenter;
import tech.starwin.constants.TrackEvent;
......@@ -28,9 +26,8 @@ import com.common.bean.BasicAck;
import com.common.bean.OcrResultBean;
import com.google.gson.JsonObject;
import tech.starwin.utils.LogUtils;
import tech.starwin.utils.LoginManager;
import tech.starwin.utils.MultipartBodyMaker;
import tech.starwin.network.tools.MultipartBodyMaker;
import tech.starwin.utils.PreferencesManager;
import tech.starwin.utils.TrackEventHelper;
import tech.starwin.utils.context_utils.AppInfoUtils;
......@@ -48,7 +45,21 @@ public class UploadPresenter extends BasePresenter<UploadApi> {
* 身份证ocr识别
*/
public void identityOcr(final String action, @NonNull File file) {
handleRequest(apiService.identityOcr(MultipartBodyMaker.makeSimplePart("file", file), LoginManager.get().getToken()),
identityOcr(action, MultipartBodyMaker.makeSimplePart("file", file));
}
/**
* 身份证ocr识别
*/
public void identityOcr(final String action, @NonNull Bitmap bitmap) {
identityOcr(action, MultipartBodyMaker.makeSimplePart("file", "ktp_img", bitmap, Bitmap.CompressFormat.JPEG));
}
/**
* 身份证ocr识别,直接使用Bitmap
*/
private void identityOcr(final String action, MultipartBody.Part filePart) {
handleRequest(apiService.identityOcr(filePart, LoginManager.get().getToken()),
new HttpObserver<OcrResultBean>() {
@Override
public void onStart() {
......
......@@ -2,6 +2,7 @@ package tech.starwin.mvp.presenter;
import android.annotation.SuppressLint;
import android.graphics.Bitmap;
import android.text.TextUtils;
import org.greenrobot.eventbus.EventBus;
......@@ -17,6 +18,7 @@ import io.reactivex.functions.Function;
import io.reactivex.functions.Function4;
import io.reactivex.functions.Predicate;
import io.reactivex.schedulers.Schedulers;
import okhttp3.MultipartBody;
import okhttp3.ResponseBody;
import tech.starwin.base.BasePresenter;
import tech.starwin.constants.ActionEnum;
......@@ -44,7 +46,7 @@ import com.common.bean.UserBean;
import tech.starwin.network.Gateway;
import tech.starwin.network.ServiceGenerator;
import tech.starwin.utils.LoginManager;
import tech.starwin.utils.MultipartBodyMaker;
import tech.starwin.network.tools.MultipartBodyMaker;
import tech.starwin.utils.PreferencesManager;
import tech.starwin.utils.TrackEventHelper;
......@@ -472,10 +474,26 @@ public class UserPresenter extends BasePresenter<UserApi> {
}
public void submitEmploymentInfo(String action, File workCardImage, EmploymentServerBean employmentBean) {
MultipartBody.Part part = null;
if (workCardImage != null && workCardImage.exists()) {
part = MultipartBodyMaker.makeSimplePart("file", workCardImage);
}
submitEmploymentInfo(action, part, employmentBean);
}
// public void submitEmploymentInfo(String action, Bitmap bitmap, EmploymentServerBean employmentBean) {
// MultipartBody.Part part = null;
// if (bitmap != null) {
// part = MultipartBodyMaker.makeSimplePart("file", "word_card", bitmap, Bitmap.CompressFormat.JPEG);
// }
// submitEmploymentInfo(action, part, employmentBean);
// }
/**
* 提交工作信息
*/
public void submitEmploymentInfo(String action, File workCardImage, EmploymentServerBean employmentBean) {
private void submitEmploymentInfo(String action, MultipartBody.Part part, EmploymentServerBean employmentBean) {
Observable<ResponseBody> info = ServiceGenerator.getService(UserApi.class)
.submitEmploymentInfo(employmentBean.getCompanyName(),
employmentBean.getCompanyProvince(),
......@@ -488,8 +506,8 @@ public class UserPresenter extends BasePresenter<UserApi> {
employmentBean.getSalary(),
LoginManager.get().getToken());
if (workCardImage != null && workCardImage.exists()) {
Observable<ResponseBody> upload = getService(UploadApi.class).uploadPhoto(MultipartBodyMaker.makeSimplePart("file", workCardImage), "EMPLOYMENT_PHOTO", LoginManager.get().getToken());
if (part != null) {
Observable<ResponseBody> upload = getService(UploadApi.class).uploadPhoto(part, "EMPLOYMENT_PHOTO", LoginManager.get().getToken());
handleRequest(action, Observable.zip(info, upload, new BiFunction<ResponseBody, ResponseBody, Boolean>() {
@Override
......@@ -579,7 +597,7 @@ public class UserPresenter extends BasePresenter<UserApi> {
/**
* 获取其他照片
* */
*/
public void getPhotoList(String action) {
handleRequest(action, apiService.getPhotoList());
}
......
package tech.starwin.network.tools;
import android.graphics.Bitmap;
import java.io.IOException;
import javax.annotation.Nullable;
import okhttp3.MediaType;
import okhttp3.RequestBody;
import okio.BufferedSink;
/**
* Created by SiKang on 2019/4/22.
*/
public class BitmapRequestBody extends RequestBody {
private Bitmap bitmap;
private Bitmap.CompressFormat format;
public BitmapRequestBody(Bitmap bitmap, Bitmap.CompressFormat format) {
this.bitmap = bitmap;
this.format = format;
}
@Nullable
@Override
public MediaType contentType() {
if (format == Bitmap.CompressFormat.JPEG) {
return MediaType.parse("image/jpeg");
} else if (format == Bitmap.CompressFormat.PNG) {
return MediaType.parse("image/png");
} else if (format == Bitmap.CompressFormat.WEBP) {
return MediaType.parse("image/webp");
}
return null;
}
@Override
public void writeTo(BufferedSink sink) throws IOException {
bitmap.compress(format, 100, sink.outputStream());
}
}
package tech.starwin.utils;
package tech.starwin.network.tools;
import android.graphics.Bitmap;
import java.io.File;
import java.util.List;
......@@ -6,6 +8,7 @@ import java.util.List;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import tech.starwin.utils.FileUtils;
/**
* Created by SiKang on 2018/9/28.
......@@ -35,6 +38,11 @@ public class MultipartBodyMaker {
return MultipartBody.Part.createFormData(name, file.getName(), requestFile);
}
public static MultipartBody.Part makeSimplePart(String name, String fileName, Bitmap bitmap, Bitmap.CompressFormat format) {
RequestBody requestFile = new BitmapRequestBody(bitmap, format);
return MultipartBody.Part.createFormData(name, fileName, requestFile);
}
public static MultipartBody.Part makeSimplePart(String name, String value) {
return MultipartBody.Part.createFormData(name, value);
}
......@@ -78,6 +86,5 @@ public class MultipartBodyMaker {
public MultipartBodyMaker build() {
return new MultipartBodyMaker(builder);
}
}
}
......@@ -6,8 +6,10 @@ import android.graphics.Matrix;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.media.ExifInterface;
import android.util.Base64;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
......@@ -61,6 +63,20 @@ public class BitmapUtils {
return resizedBitmap;
}
/**
* 缩放图片到指定大小(保持比例)
*/
public static Bitmap scaleBitmap(Bitmap bitmap, float scale) {
if (scale == 0 || scale == 1) {
return bitmap;
}
Matrix matrix = new Matrix();
matrix.postScale(scale, scale);
Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(),
bitmap.getHeight(), matrix, true);
return resizedBitmap;
}
/**
* 从SD卡中加载图片中心区域
......@@ -267,6 +283,53 @@ public class BitmapUtils {
/**
* bitmap转为base64
*
* @param bitmap
* @return
*/
public static String bitmapToBase64(Bitmap bitmap) {
String result = null;
ByteArrayOutputStream baos = null;
try {
if (bitmap != null) {
baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
baos.flush();
baos.close();
byte[] bitmapBytes = baos.toByteArray();
result = Base64.encodeToString(bitmapBytes, Base64.DEFAULT);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (baos != null) {
baos.flush();
baos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}
/**
* base64转为bitmap
*
* @param base64Data
* @return
*/
public static Bitmap base64ToBitmap(String base64Data) {
byte[] bytes = Base64.decode(base64Data, Base64.DEFAULT);
return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
}
/**
* Drawable转Bitmap
*/
public static Bitmap drawableToBmp(Drawable drawable) {
......
......@@ -62,7 +62,8 @@ public class FileUtils {
* 创建图片文件
*/
public static File getImageFile(Context context, String fileName) {
File file = new File(getAppDir(context).getAbsoluteFile() + IMAGE_CACHE);
File file = new File(context.getExternalFilesDir(null).getAbsoluteFile() + IMAGE_CACHE);
// File file = new File(getAppDir(context).getAbsoluteFile() + IMAGE_CACHE);
if (!file.exists()) {
file.mkdirs();
}
......
package tech.starwin.utils;
import android.graphics.Bitmap;
import android.text.TextUtils;
/**
* Created by SiKang on 2019/4/22.
*/
public class SPDataProvider {
//
// /**
// * 存取KTP照片
// */
// public static void saveKTPImage(Bitmap bitmap) {
// PreferencesManager.get().saveData("ktp_image", BitmapUtils.bitmapToBase64(bitmap));
// }
// public static Bitmap getKTPImage() {
// String bitmapStr = PreferencesManager.get().getString("ktp_image", "");
// return TextUtils.isEmpty(bitmapStr) ? null : BitmapUtils.base64ToBitmap(bitmapStr);
// }
//
// /**
// * 存取工作证照片
// */
// public static void saveWorkImage(Bitmap bitmap) {
// PreferencesManager.get().saveData("work_card_image", BitmapUtils.bitmapToBase64(bitmap));
// }
// public static Bitmap getWorkImage() {
// String bitmapStr = PreferencesManager.get().getString("work_card_image", "");
// return TextUtils.isEmpty(bitmapStr) ? null : BitmapUtils.base64ToBitmap(bitmapStr);
// }
}
......@@ -56,10 +56,10 @@ public class PermissionsHelper {
Manifest.permission.READ_CONTACTS,
Manifest.permission.READ_CALL_LOG,
Manifest.permission.READ_SMS,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
// Manifest.permission.ACCESS_COARSE_LOCATION,//粗精度定位
// Manifest.permission.ACCESS_FINE_LOCATION//卫星定位
// Manifest.permission.READ_EXTERNAL_STORAGE,
// Manifest.permission.WRITE_EXTERNAL_STORAGE
Manifest.permission.ACCESS_COARSE_LOCATION,//粗精度定位
Manifest.permission.ACCESS_FINE_LOCATION//卫星定位
// Manifest.permission.READ_PHONE_STATE
};
......@@ -70,8 +70,8 @@ public class PermissionsHelper {
Manifest.permission.READ_CONTACTS,
// Manifest.permission.READ_CALL_LOG,
// Manifest.permission.READ_SMS,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
// Manifest.permission.READ_EXTERNAL_STORAGE,
// Manifest.permission.WRITE_EXTERNAL_STORAGE
// Manifest.permission.ACCESS_COARSE_LOCATION,//粗精度定位
// Manifest.permission.ACCESS_FINE_LOCATION//卫星定位
// Manifest.permission.READ_PHONE_STATE
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment