|
|
@@ -1,21 +1,22 @@
|
|
|
package com.sheep.jiuyan.samllsheep.base;
|
|
|
|
|
|
import android.content.Intent;
|
|
|
+import android.net.Uri;
|
|
|
import android.text.TextUtils;
|
|
|
-import android.widget.TextView;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.kfzs.appstore.utils.string.HexUtils;
|
|
|
import com.kfzs.duanduan.react.upfile.UpFileListener;
|
|
|
import com.kfzs.duanduan.react.upfile.UpFileUtils;
|
|
|
-import com.lzy.imagepicker.ImagePicker;
|
|
|
-import com.lzy.imagepicker.bean.ImageItem;
|
|
|
import com.sheep.gamegroup.model.entity.BaseMessage;
|
|
|
import com.sheep.gamegroup.view.dialog.DialogChooseImage;
|
|
|
import com.sheep.gamegroup.view.dialog.DialogShowLoading;
|
|
|
import com.sheep.jiuyan.samllsheep.SheepApp;
|
|
|
import com.sheep.jiuyan.samllsheep.utils.G;
|
|
|
+import com.yalantis.ucrop.UCrop;
|
|
|
+
|
|
|
+import org.w3c.dom.Text;
|
|
|
|
|
|
import java.io.File;
|
|
|
import java.util.ArrayList;
|
|
|
@@ -31,41 +32,82 @@ import rx.schedulers.Schedulers;
|
|
|
* realicing@sina.com
|
|
|
*/
|
|
|
|
|
|
-public abstract class AbsChooseImageActivity extends BaseActivity implements UpFileListener{
|
|
|
- public static final int REQUEST_CODE_SELECT = 113;
|
|
|
- public static final int REQUEST_CODE_CAMERA = 114;
|
|
|
+public abstract class AbsChooseImageActivity extends BaseActivity implements UpFileListener {
|
|
|
private boolean isUpload = true;
|
|
|
+ private boolean isCrop = true;
|
|
|
private DialogShowLoading dialogShowLoading;
|
|
|
- private ImageItem imageItem;
|
|
|
- public void showChooseDialog(){
|
|
|
- DialogChooseImage.showDialog(this);
|
|
|
+
|
|
|
+ public void showChooseDialog() {
|
|
|
+ showChooseDialog(true, true);
|
|
|
}
|
|
|
- public void showChooseDialog(boolean isUpload){
|
|
|
+
|
|
|
+ public void showChooseDialog(boolean isCrop, boolean isUpload) {
|
|
|
this.isUpload = isUpload;
|
|
|
- DialogChooseImage.showDialog(this);
|
|
|
+ PhotoPicker.builder()
|
|
|
+ .setPhotoCount(1)
|
|
|
+ .setShowCamera(true)
|
|
|
+ .setShowGif(false)
|
|
|
+ .setPreviewEnabled(false)
|
|
|
+ .start(this, PhotoPicker.REQUEST_CODE);
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
|
super.onActivityResult(requestCode, resultCode, data);
|
|
|
- if (resultCode == RESULT_OK && requestCode == PhotoPicker.REQUEST_CODE) {
|
|
|
- if (data != null) {
|
|
|
- ArrayList<String> photos =
|
|
|
- data.getStringArrayListExtra(PhotoPicker.KEY_SELECTED_PHOTOS);
|
|
|
- G.showToast(JSON.toJSONString(photos));
|
|
|
+ if (resultCode == RESULT_OK) {
|
|
|
+ if (requestCode == PhotoPicker.REQUEST_CODE) {//拍照或者选择照片
|
|
|
+ if (data != null) {
|
|
|
+ ArrayList<String> photos = data.getStringArrayListExtra(PhotoPicker.KEY_SELECTED_PHOTOS);
|
|
|
+ if (photos != null && !photos.isEmpty() && !TextUtils.isEmpty((path = photos.get(0)))) {
|
|
|
+ if (isCrop) {
|
|
|
+ UCrop.of(Uri.fromFile(new File(path)), Uri.fromFile(new File(new File(path).getParentFile(), "temp.png")))
|
|
|
+ .withAspectRatio(1, 1)
|
|
|
+ .withMaxResultSize(500, 500)
|
|
|
+ .start(AbsChooseImageActivity.this);
|
|
|
+ } else {
|
|
|
+ notCrop();
|
|
|
+ }
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ onNotGetImage("没有数据");
|
|
|
+ } else if (requestCode == UCrop.REQUEST_CROP) {//裁剪
|
|
|
+ Uri resultUri;
|
|
|
+ if (data != null && (resultUri = UCrop.getOutput(data))!=null) {
|
|
|
+ String cropPath;
|
|
|
+ if(!TextUtils.isEmpty(cropPath = resultUri.getPath())){
|
|
|
+ path = cropPath;
|
|
|
+ notCrop();
|
|
|
+ }
|
|
|
+
|
|
|
+ } else if(!TextUtils.isEmpty(path)){
|
|
|
+ notCrop();
|
|
|
+ }
|
|
|
}
|
|
|
+ } else if (resultCode == UCrop.RESULT_ERROR) {//裁剪出错
|
|
|
+ if(!TextUtils.isEmpty(path))
|
|
|
+ notCrop();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private String path;
|
|
|
+
|
|
|
+ private void notCrop() {
|
|
|
+ onGetImage(path);
|
|
|
+ if (isUpload) {
|
|
|
+ AbsChooseImageActivity.this.dialogShowLoading = DialogShowLoading.showDialog(AbsChooseImageActivity.this);
|
|
|
+ UpFileUtils.upImage(new File(path), AbsChooseImageActivity.this);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void Success(String msg) {
|
|
|
- //{data: ""}
|
|
|
-
|
|
|
- String json = null;
|
|
|
- if(TextUtils.isEmpty(msg)){
|
|
|
+ String json;
|
|
|
+ if (TextUtils.isEmpty(msg)) {
|
|
|
updateError("失败");
|
|
|
- return;
|
|
|
+ return;
|
|
|
}
|
|
|
- if(msg.startsWith("{")){
|
|
|
+ if (msg.startsWith("{")) {
|
|
|
json = msg;
|
|
|
} else {
|
|
|
try {
|
|
|
@@ -79,7 +121,7 @@ public abstract class AbsChooseImageActivity extends BaseActivity implements UpF
|
|
|
}
|
|
|
}
|
|
|
UploadResult uploadResult = JSON.parseObject(json, UploadResult.class);
|
|
|
- if(uploadResult != null){
|
|
|
+ if (uploadResult != null) {
|
|
|
final String data = uploadResult.getData().getUrl();
|
|
|
dialogShowLoading.getTextView().setText("更新中");
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
@@ -87,19 +129,19 @@ public abstract class AbsChooseImageActivity extends BaseActivity implements UpF
|
|
|
SheepApp.get(this).getNetComponent().getApiService().changeBaseInfo(jsonObject)
|
|
|
.subscribeOn(Schedulers.io())
|
|
|
.observeOn(AndroidSchedulers.mainThread())
|
|
|
- .subscribe(new Action1<BaseMessage>() {
|
|
|
- @Override
|
|
|
- public void call(BaseMessage baseMessage) {
|
|
|
- dialogShowLoading.getTextView().setText("完成");
|
|
|
- onGetNetImageUrl(data);
|
|
|
- dialogShowLoading.getAlertDialog().dismiss();
|
|
|
- }
|
|
|
- }, new Action1<Throwable>() {
|
|
|
- @Override
|
|
|
- public void call(Throwable throwable) {
|
|
|
- updateError("失败");
|
|
|
- }
|
|
|
- });
|
|
|
+ .subscribe(new Action1<BaseMessage>() {
|
|
|
+ @Override
|
|
|
+ public void call(BaseMessage baseMessage) {
|
|
|
+ dialogShowLoading.getTextView().setText("完成");
|
|
|
+ onGetNetImageUrl(data);
|
|
|
+ dialogShowLoading.getAlertDialog().dismiss();
|
|
|
+ }
|
|
|
+ }, new Action1<Throwable>() {
|
|
|
+ @Override
|
|
|
+ public void call(Throwable throwable) {
|
|
|
+ updateError("失败");
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -119,13 +161,16 @@ public abstract class AbsChooseImageActivity extends BaseActivity implements UpF
|
|
|
public void Failure(String err) {
|
|
|
onNotGetImage(err);
|
|
|
}
|
|
|
+
|
|
|
protected abstract void onNotGetImage(String msg);//失败后回调
|
|
|
|
|
|
- protected abstract void onGetImage(ImageItem image);//获取图片成功后回调
|
|
|
+ protected abstract void onGetImage(String path);//获取图片成功后回调
|
|
|
+
|
|
|
protected abstract void onGetNetImageUrl(String url);//获取图片、上传成功并更新后回调
|
|
|
|
|
|
}
|
|
|
-class Data{
|
|
|
+
|
|
|
+class Data {
|
|
|
private String url;
|
|
|
|
|
|
public String getUrl() {
|
|
|
@@ -137,7 +182,7 @@ class Data{
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-class UploadResult{
|
|
|
+class UploadResult {
|
|
|
private int status;
|
|
|
private String error;
|
|
|
private String error_message;
|