expert-app/app/src/main/java/cn/shangyu/gdxzExpert/activity/AddcasediscussionActivity.java
2025-11-18 15:12:24 +08:00

1218 lines
39 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package cn.shangyu.gdxzExpert.activity;
import android.Manifest;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.IBinder;
import android.provider.MediaStore;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.PopupWindow;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.core.content.FileProvider;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
import com.github.dfqin.grantor.PermissionListener;
import com.github.dfqin.grantor.PermissionsUtil;
import com.gyf.immersionbar.ImmersionBar;
import com.hjq.window.EasyWindow;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import cn.shangyu.gdxzExpert.R;
import cn.shangyu.gdxzExpert.adapter.AddCaseRecordAdapter;
import cn.shangyu.gdxzExpert.application.BaseApplication;
import cn.shangyu.gdxzExpert.base.BaseActivity;
import cn.shangyu.gdxzExpert.bean.AddBitmaps;
import cn.shangyu.gdxzExpert.bean.BaseBean;
import cn.shangyu.gdxzExpert.bean.MyCasediscussionBean.DataBean.MYCasediscussion;
import cn.shangyu.gdxzExpert.bean.PhotoItem;
import cn.shangyu.gdxzExpert.ecdemo.ui.chatting.ViewImageInfo;
import cn.shangyu.gdxzExpert.http.OnCallBackFromNet;
import cn.shangyu.gdxzExpert.utils.Base64Util;
import cn.shangyu.gdxzExpert.utils.Constant;
import cn.shangyu.gdxzExpert.utils.GsonTools;
import cn.shangyu.gdxzExpert.utils.KeDaXunFeiUtil;
import cn.shangyu.gdxzExpert.utils.LogUtil;
import cn.shangyu.gdxzExpert.utils.SharePrefUtil;
import cn.shangyu.gdxzExpert.utils.StringUtil;
import cn.shangyu.gdxzExpert.utils.ToastUtil;
import cn.shangyu.gdxzExpert.utils.UIUtils;
import cn.shangyu.gdxzExpert.utils.Url;
import cn.shangyu.gdxzExpert.view.PhotoView;
import cn.shangyu.gdxzExpert.widget.ECAlertDialog;
import cn.shangyu.gdxzExpert.widget.ECListDialog;
import cn.shangyu.gdxzExpert.widget.LoadingPage.ResultState;
/**
*
* AddcasediscussionActivity 功能描述:添加病例讨论
*
*/
@SuppressWarnings("serial")
public class AddcasediscussionActivity extends BaseActivity implements
OnCallBackFromNet, OnItemClickListener {
private View mView;
private AddcasediscussionActivity mActivity;
public static final int GET_RESULT_ADD_CASERECORD = 201;
public static final int GET_RESULT_MODIFY_CASERECORD = 202;
public static final int GET_RESULT_DELETE_CASERECORD = 203;
private static final int PROO = 2;
private static final int HANDLER_PHOTOS = 3;
private String mExpertUuid;
private Intent getIntent;
private RelativeLayout mRl_date;
private EditText mEt_note;
private GridView mGv_photos;
private TextView mTv_date;
private Bitmap mAddBitmap;
private ArrayList<AddBitmaps> mBitmaps;
private AddCaseRecordAdapter gv_adapter;
private AddBitmaps mAddBitmaps;
int v_year, v_month, v_day;
private String mUpTime = null;
private RelativeLayout mRl_bigPhoto;
private Button mTv_delete, mBt_deleteRecord;
private ImageView mIv_bigPhoto;
private boolean mIsModify = false;
private MYCasediscussion mDatasCase;
ArrayList<ViewImageInfo> images = new ArrayList<ViewImageInfo>();
private ViewPager mPager;
private String a1 = "";
private String a2 = "";
private String a3 = "";
private RadioGroup mLabel_one;
private RadioButton rb;
// private List<String> picPaths = new ArrayList<String>();
private TextView tvhint;
boolean isFirst = true;
private Button mBt_get_Voice;
private KeDaXunFeiUtil VoiceUtil;
private ECAlertDialog dilaog2;
@Override
public void setTitle() {
// TODO Auto-generated method stub
getIntent = getIntent();
if (getIntent.getType().equals("modify")) {
mIsModify = true;
}
top_title.setText("发布病例");
top_right_text.setVisibility(View.VISIBLE);
top_right_text.setOnClickListener(this);
top_back_layout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (TextUtils.isEmpty(mEt_note.getText().toString())) {
hideSoftKeyboard();
finish();
}else {
dilaog2 = ECAlertDialog.buildAlert(AddcasediscussionActivity.this,
"您有未发布的内容,是否保存?", "取消", "保存", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dilaog2.dismiss();
SharePrefUtil.saveString(AddcasediscussionActivity.this,"AddcasediscussionActivity","");
hideSoftKeyboard();
finish();
}
}, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dilaog2.dismiss();
SharePrefUtil.saveString(AddcasediscussionActivity.this,"AddcasediscussionActivity",mEt_note.getText().toString());
hideSoftKeyboard();
finish();
}
});
// dilaog2.setTitle("温馨提示");
dilaog2.setCancelable(false);
dilaog2.getWindow();
dilaog2.show();
}
}
});
}
/**
* hide inputMethod
*/
public void hideSoftKeyboard() {
InputMethodManager inputMethodManager = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
if (inputMethodManager != null) {
View localView = getCurrentFocus();
if (localView != null && localView.getWindowToken() != null) {
IBinder windowToken = localView.getWindowToken();
inputMethodManager.hideSoftInputFromWindow(windowToken, 0);
}
}
}
@Override
public View onCreateSuccessedView() {
// TODO Auto-generated method stub
ImmersionBar.with(this).keyboardEnable(true).statusBarDarkFont(true).titleBar(mToolbar).init();
mView = UIUtils.inflate(R.layout.activity_add_case_discussion);
mActivity = this;
mLabel_one = (RadioGroup) mView.findViewById(R.id.label_one_ac_cu);// 初始化RadioGroup布局
tvhint = (TextView) mView.findViewById(R.id.tv_hint_mess);
mBt_get_Voice = (Button) mView.findViewById(R.id.bt_get_voice);
mBt_get_Voice.setOnClickListener(this);
tvhint.setVisibility(View.VISIBLE);
initIntent();
initView();
initLisener();
String context = SharePrefUtil.getString(AddcasediscussionActivity.this, "AddcasediscussionActivity", "");
if (!context.isEmpty()){
mEt_note.setText(context);
}
return mView;
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
if (BaseApplication.getTagList().size() != 0) {
setLableData();
} else {
if (!isFirst) {
mLabel_one.addView(tvhint);
tvhint.setVisibility(View.VISIBLE);
}
}
// if (BaseApplication.getTagList().size() == 0) {
//
// }
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
mLabel_one.removeAllViews();
}
private void initLisener() {
mBt_deleteRecord.setOnClickListener(this);
mRl_date.setOnClickListener(this);
mGv_photos.setOnItemClickListener(this);
// mRl_bigPhoto.setOnClickListener(this);
mGv_photos.setAdapter(gv_adapter);
}
private void initIntent() {
mExpertUuid = SharePrefUtil.getString(mActivity, Constant.uuid, "");
if (mIsModify) {
mDatasCase = (MYCasediscussion) getIntent
.getSerializableExtra("caseRecord");
BaseApplication.getTagList().clear();
String a1 = mDatasCase.getTag1();
String a2 = mDatasCase.getTag2();
String a3 = mDatasCase.getTag3();
if (!TextUtils.isEmpty(a1)) {
BaseApplication.getTagList().add(a1);
}
if (!TextUtils.isEmpty(a2)) {
BaseApplication.getTagList().add(a2);
}
if (!TextUtils.isEmpty(a3)) {
BaseApplication.getTagList().add(a3);
}
if (BaseApplication.getTagList().size() != 0) {
setLableData();
}
// setLableData();
// onResume();
top_right_text.setText("修改");
top_title.setText("修改病例");
// if(BaseApplication.getTagList().size() == 0){
// tvhint.setVisibility(mView.VISIBLE);
// }else{
// tvhint.setVisibility(mView.GONE);
// }
} else {
top_right_text.setText("提交");
}
}
private DatePickerDialog mPickerDialog;
private TextView case_biaoqian;
private Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case HANDLER_PHOTOS:
if (mBitmaps.size() < 8) {
mBitmaps.add(mAddBitmaps);
}
closeProgressDialog();
gv_adapter.notifyDataSetChanged();
break;
default:
break;
}
};
};
public void initView() {
mRl_bigPhoto = (RelativeLayout) mView
.findViewById(R.id.rl_addcase_bigphoto);
// mTv_delete = (Button) mView.findViewById(R.id.bt_addcase_delete);
mBt_deleteRecord = (Button) mView.findViewById(R.id.bt_delete_record);
// mIv_bigPhoto = (ImageView) mView.findViewById(R.id.iv_addcase_big);
mRl_date = (RelativeLayout) mView.findViewById(R.id.rl_addrecord_time);
mEt_note = (EditText) mView.findViewById(R.id.et_addrecord_note);
mGv_photos = (GridView) mView.findViewById(R.id.gv_case_photos);
mPager = (ViewPager) mView.findViewById(R.id.pager);
case_biaoqian = (TextView) mView.findViewById(R.id.tv_case_biaoqian);
case_biaoqian.setOnClickListener(this);
mAddBitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.new_selected);
mBitmaps = new ArrayList<AddBitmaps>();
mAddBitmaps = new AddBitmaps(true, mAddBitmap, null);
if (mIsModify) {
mEt_note.setText(mDatasCase.getDes());
}
PutPhotos();
gv_adapter = new AddCaseRecordAdapter(mActivity, mBitmaps, mAddBitmaps);
}
// 设置标签数据相关属性
private void setLableData() {
tvhint.setVisibility(View.GONE);
for (int i = 0; i < BaseApplication.getTagList().size(); i++) {
int padding = dip2px(ct, 10);// 设置padding
rb = new RadioButton(ct);
rb.setBackgroundResource(R.drawable.chose_label_bg_hi);// 设置radiobutton的背景selector
rb.setTextColor(getResources().getColor(R.color.top_title));// 設置字体颜色
rb.setButtonDrawable(android.R.color.transparent);// 去掉radiobutton的圆圈
rb.setPadding(padding, dip2px(ct, 3), padding, dip2px(ct, 3));// 设置radiobutton的padding
rb.setText(BaseApplication.getTagList().get(i));
rb.setTextSize(14);// 设置字体大小
rb.setGravity(Gravity.CENTER);
RadioGroup.LayoutParams params_rb = new RadioGroup.LayoutParams(
RadioGroup.LayoutParams.WRAP_CONTENT,
RadioGroup.LayoutParams.WRAP_CONTENT);// 设置radiobutton的大小
int margin = dip2px(ct, 5);// 設置radiobutton的外边距
params_rb.setMargins(margin, 0, 0, 0);
mLabel_one.addView(rb, params_rb);// 設置radiobutton的大小
rb.setId(i);
}
}
// dp到像素的转换
public static int dip2px(Context context, double d) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (d * scale + 0.5f);
}
public void PagerSetAdapter(int p) {
layout_top.setVisibility(View.GONE);
mPager.setPageMargin((int) (getResources().getDisplayMetrics().density * 15));
mPager.setAdapter(new PagerAdapter() {
@Override
public int getCount() {
for (int i = 0; i < mBitmaps.size(); i++) {
if (mBitmaps.get(i).isAdd()) {
return mBitmaps.size() - 1;
}
}
return mBitmaps.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
PhotoView view = new PhotoView(AddcasediscussionActivity.this);
view.enable();
view.setScaleType(ImageView.ScaleType.FIT_CENTER);
if (!mBitmaps.get(position).isAdd()) {
view.setImageBitmap(mBitmaps.get(position).getBitmap());
}
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mRl_bigPhoto.setVisibility(View.GONE);
layout_top.setVisibility(View.VISIBLE);
// mBt_deleteRecord.setVisibility(View.VISIBLE);
mBt_deleteRecord.setVisibility(View.GONE);
}
});
container.addView(view);
return view;
}
@Override
public void destroyItem(ViewGroup container, int position,
Object object) {
container.removeView((View) object);
}
});
mPager.setCurrentItem(p);
}
public void PutPhotos() {
if (mIsModify) {
// mBt_deleteRecord.setVisibility(View.VISIBLE);
mBt_deleteRecord.setVisibility(View.GONE);
if (mDatasCase.getPhoto().size() > 0) {
for (int i = 0; i < mDatasCase.getPhoto().size(); i++) {
mBitmaps.add(new AddBitmaps(false, null, mDatasCase
.getPhoto().get(i)));
}
if (mDatasCase.getPhoto().size() < 5) {
mBitmaps.add(mAddBitmaps);
// mBt_deleteRecord.setVisibility(View.VISIBLE);
}
} else {
mBitmaps.add(mAddBitmaps);
}
} else {
mBt_deleteRecord.setVisibility(View.GONE);
mBitmaps.add(mAddBitmaps);
}
}
public Calendar mGoCaTime = Calendar.getInstance(Locale.CHINA);
@Override
public ResultState onLoad() {
// TODO Auto-generated method stub
return ResultState.STATE_SUCCESSED;
}
@Override
protected void processClick(View v) {
// TODO Auto-generated method stub
// AGP 8.0+ R.id 不再是 final 常量,不能用于 switch改用 if-else
int id = v.getId();
if (id == R.id.top_right_text) {
showProgressDialog("提交中,请稍候...");
new Thread() {
public void run() {
if (mIsModify) {
modifyCaseRecord();
} else {
addCaseRecord();
}
handler.sendEmptyMessage(0);
};
}.start();
} else if (id == R.id.bt_delete_record) {
final ECListDialog dialog = new ECListDialog(mActivity,
new String[] { "删除病情记录"});
dialog.setOnDialogItemClickListener(new ECListDialog.OnDialogItemClickListener() {
@Override
public void onDialogItemClick(Dialog d, int position) {
deleteCaseRecord();
dialog.dismiss();
}
});
dialog.setTitle("删除此病情讨论");
dialog.show();
} else if (id == R.id.tv_case_biaoqian) {// 启动编辑标签界面
View view = getWindow().peekDecorView();
if (view != null) {
InputMethodManager inputmanger = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
inputmanger.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
isFirst = false;
Intent intent = new Intent(AddcasediscussionActivity.this,
AddtagActivity.class);
// intent.putIntegerArrayListExtra(name, value)
startActivity(intent);
} else if (id == R.id.top_back_layout) {
BaseApplication.getTagList().clear();
} else if (id == R.id.bt_get_voice) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (PermissionsUtil.hasPermission(AddcasediscussionActivity.this,Manifest.permission.RECORD_AUDIO)) {
//有访问录音
VoiceUtil=new KeDaXunFeiUtil(AddcasediscussionActivity.this, mEt_note);
} else {
EasyWindow.with(AddcasediscussionActivity.this).setGravity(Gravity.TOP).setYOffset(200).setWidth(1000)
.setContentView(R.layout.float_top_dialog_record).show();
PermissionsUtil.requestPermission(AddcasediscussionActivity.this, new PermissionListener() {
@Override
public void permissionGranted(@NonNull String[] permissions) {
EasyWindow.cancelAll();
//用户授予了访问录音的权限
VoiceUtil=new KeDaXunFeiUtil(AddcasediscussionActivity.this, mEt_note);
}
@Override
public void permissionDenied(@NonNull String[] permissions) {
EasyWindow.cancelAll();
//用户拒绝了访问录音的申请
// finish();
}
}, new String[]{Manifest.permission.RECORD_AUDIO});
}
}else {
VoiceUtil=new KeDaXunFeiUtil(AddcasediscussionActivity.this, mEt_note);
}
}
}
private ArrayList<PhotoItem> paths;
public static Boolean isfresh = false;
// public static ArrayList<String> infoList = new ArrayList<>();
public String getPhotoBase64(int position) {
if (mBitmaps.size() > position) {
if (!mBitmaps.get(position).isAdd()) {
if (mBitmaps.get(position).getBitmap() != null) {
return Base64Util.BitmaptoBase64(mBitmaps.get(position)
.getBitmap());
} else {
ToastUtil.showMessage("图片还未加载完毕");
return "0.0";
}
} else {
return "";
}
} else {
return "";
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (mPopupWindowDialog != null && mPopupWindowDialog.isShowing()) {
mPopupWindowDialog.dismiss();
}
switch (requestCode) {
case SELECT_PIC_BY_PICK_PHOTO:
if (data == null) {
break;
}
paths = (ArrayList<PhotoItem>) data.getSerializableExtra("photos");
mBitmaps.remove(mAddBitmaps);
showProgressDialog("");
new Thread() {
public void run() {
for (int i = 0; i < paths.size(); i++) {
InputStream is;
try {
is = new FileInputStream(paths.get(i).getPath());
BitmapFactory.Options opts = new BitmapFactory.Options();
// opts.inJustDecodeBounds = true;
opts.inTempStorage = new byte[100 * 1024];
opts.inPreferredConfig = Bitmap.Config.RGB_565;
opts.inPurgeable = true;
BitmapFactory.decodeFile(paths.get(i).getPath(),
opts);
opts.inSampleSize = calculateInSampleSize(opts,
720, 1280);
opts.inInputShareable = true;
Bitmap bitmap = BitmapFactory.decodeStream(is,
null, opts);
mBitmaps.add(new AddBitmaps(false, bitmap, null));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
handler.sendEmptyMessage(HANDLER_PHOTOS);
};
}.start();
break;
case SELECT_PIC_BY_TACK_PHOTO:
photoUri = Uri.parse(SharePrefUtil.getString(
AddcasediscussionActivity.this, "photoUri", ""));
if (photoUri == null) {
Toast.makeText(this, "选择图片文件出错", Toast.LENGTH_LONG).show();
return;
}
cropImage(photoUri);
break;
case PHOTO_RESOULT:
Bundle d = data.getExtras();
if (d != null) {
Bitmap bm = d.getParcelable("data");
SimpleDateFormat sdf = new SimpleDateFormat("MMddhhmmss");
Date dt = new Date();
String picN = "cy" + sdf.format(dt) + ".jpg";
temp = new File(this.getCacheDir(), picN);// 放到
if (temp.exists())
temp.delete();
try {
temp.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
try {
bm.compress(CompressFormat.JPEG, 100, new FileOutputStream(
temp));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
if (!bm.isRecycled()) {
bm.recycle();
bm = null;
}
}
break;
default:
break;
}
}
public static int calculateInSampleSize(BitmapFactory.Options options,
int reqWidth, int reqHeight) {
final int height = options.outHeight;
final int width = options.outWidth;
int inSampleSize = 1;
if (height > reqHeight || width > reqWidth) {
final int heightRatio = Math.round((float) height
/ (float) reqHeight);
final int widthRatio = Math.round((float) width / (float) reqWidth);
inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio;
}
return inSampleSize;
}
private void cropImage(Uri uri) {
ImageLoader.getInstance().loadImage(photoUri + "",
new SimpleImageLoadingListener() {
@Override
public void onLoadingComplete(String imageUri, View view,
Bitmap loadedImage) {
// TODO Auto-generated method stub
super.onLoadingComplete(imageUri, view, loadedImage);
// picPaths.add(Base64Util.BitmaptoBase64(loadedImage));
// 拍照图片压缩
ByteArrayOutputStream stream = new ByteArrayOutputStream();
loadedImage.compress(CompressFormat.JPEG, 100,
stream);
try {
int options = 100;
while (stream.toByteArray().length / 1024 > 500) {// 判断如果图片大于500kb,进行压缩避免在生成图片BitmapFactory.decodeStream时溢出
if (options > 0) {
options -= 10;
}
stream.reset();// 重置baos即清空baos
loadedImage.compress(
CompressFormat.JPEG, options,
stream);// 这里压缩50%把压缩后的数据存放到baos中
if (stream.toByteArray().length / 1024 < 500) {
break;
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mBitmaps.remove(mAddBitmaps);
mBitmaps.add(new AddBitmaps(false, loadedImage, null));
if (mBitmaps.size() < 5) {
mBitmaps.add(mAddBitmaps);
}
gv_adapter.notifyDataSetChanged();
}
});
}
/**
* expert_uuid 医生的uuid tag1 病例标签1 tag2 病例标签2 tag3 病例标签3 desc 病例详细信息 img1 图片1
* img2 图片2 img3 图片3 img4 图片4 img5 图片5
*/
// 添加
public void addCaseRecord() {
if (StringUtil.isEmpty(mEt_note.getText().toString().trim())) {
closeProgressDialog();
ToastUtil.showMessage("病例描述内容不能为空");
return;
}
top_right_text.setClickable(false);
Map<String, String> param = new HashMap<String, String>();
for (int i = 0; i < BaseApplication.getTagList().size(); i++) {
int a = i + 1;
param.put("tag" + a, BaseApplication.getTagList().get(i));
}
param.put("expert_uuid", mExpertUuid);
// param.put("tag1", a1);
// param.put("tag2", a2);
// param.put("tag3", a3);
param.put("des", mEt_note.getText().toString().trim());
param.put("img1", getPhotoBase64(0));
param.put("img2", getPhotoBase64(1));
param.put("img3", getPhotoBase64(2));
param.put("img4", getPhotoBase64(3));
param.put("img5", getPhotoBase64(4));
param.put("img6", getPhotoBase64(5));
param.put("img7", getPhotoBase64(6));
param.put("img8", getPhotoBase64(7));
sendParamtoNet(Url.getAddCaseDiscuss, param, GET_RESULT_ADD_CASERECORD,
mActivity, true);
}
// 修改
public void modifyCaseRecord() {
if (StringUtil.isEmpty(mEt_note.getText().toString().trim())) {
ToastUtil.showMessage("病例描述内容不能为空");
closeProgressDialog();
return;
}
top_right_text.setClickable(false);
Map<String, String> param = new HashMap<String, String>();
for (int i = 0; i < BaseApplication.getTagList().size(); i++) {
int a = i + 1;
param.put("tag" + a, BaseApplication.getTagList().get(i));
}
param.put("uuid", mDatasCase.getUuid());
param.put("des", mEt_note.getText().toString().trim());
String imag1 = getPhotoBase64(0);
String imag2 = getPhotoBase64(1);
String imag3 = getPhotoBase64(2);
String imag4 = getPhotoBase64(3);
String imag5 = getPhotoBase64(4);
String imag6 = getPhotoBase64(5);
String imag7 = getPhotoBase64(6);
String imag8 = getPhotoBase64(7);
if (imag1.equals("0.0")) {
ToastUtil.showMessage("图片未加载完毕");
return;
}
if (imag2.equals("0.0")) {
ToastUtil.showMessage("图片未加载完毕");
return;
}
if (imag3.equals("0.0")) {
ToastUtil.showMessage("图片未加载完毕");
return;
}
if (imag4.equals("0.0")) {
ToastUtil.showMessage("图片未加载完毕");
return;
}
if (imag5.equals("0.0")) {
ToastUtil.showMessage("图片未加载完毕");
return;
}
param.put("img1", imag1);
param.put("img2", imag2);
param.put("img3", imag3);
param.put("img4", imag4);
param.put("img5", imag5);
param.put("img6", imag6);
param.put("img7", imag7);
param.put("img8", imag8);
sendParamtoNet(Url.getUpCaseDiscuss, param,
GET_RESULT_MODIFY_CASERECORD, mActivity, true);
}
// 删除
public void deleteCaseRecord() {
showProgressDialog("提交中,请稍候...");
Map<String, String> param = new HashMap<String, String>();
param.put("uuid", mDatasCase.getUuid());
sendParamtoNet(Url.getDelCaseDiscuss, param,
GET_RESULT_DELETE_CASERECORD, mActivity, true);
}
@Override
public void onCallbackFromThread(String resultJson) {
// TODO Auto-generated method stub
}
@Override
public void onCallBackFromThread(String resultJson, int resultCode) {
// TODO Auto-generated method stub
if (resultCode==1) {
JSONObject jsonObject = null;
try {
jsonObject = new JSONObject(resultJson);
String optString = jsonObject.optString("code");
String message = jsonObject.optString("message");
if ("200".equals(optString)) {
ToastUtil.showMessage(message);
}
} catch (JSONException e) {
e.printStackTrace();
}
// LogUtil.e(resultJson);
}else {
BaseBean bean = GsonTools.fromGsonToBean(resultJson, BaseBean.class);
if(bean==null){
ToastUtil.showMessage("病例创建错误");
return;
}
if (StringUtil.isOneToCode(bean.code)) {
ToastUtil.showToast(bean.message);
return;
}
Intent intent = new Intent();
// setResult(201, intent);
// finish();
switch (resultCode) {
// 增加
case GET_RESULT_ADD_CASERECORD:
//病例讨论发帖加分
Map<String, String> param = new HashMap<>();
param.put("score_type","4");
sendJsonPostParamtoNetSignMD5(Url.addBonusPoints, param, 1, this);
top_right_text.setClickable(true);
isfresh = true;
BaseApplication.setNotify(true);
setResult(201, intent);
SharePrefUtil.saveString(AddcasediscussionActivity.this,"AddcasediscussionActivity","");
BaseApplication.getTagList().clear();
hideSoftKeyboard();
finish();
break;
// 修改
case GET_RESULT_MODIFY_CASERECORD:
top_right_text.setClickable(true);
intent.putExtra("uuid", mDatasCase.getUuid());
setResult(202, intent);
BaseApplication.getTagList().clear();
isfresh = true;
BaseApplication.setNotifyexit(true);
hideSoftKeyboard();
finish();
break;
// 删除
case GET_RESULT_DELETE_CASERECORD:
intent.putExtra("uuid", mDatasCase.getUuid());
setResult(203, intent);
hideSoftKeyboard();
finish();
break;
default:
break;
}
}
}
private View selectedPhotoView;
private TextView ll_selected_carmera;// 从照相机
private TextView ll_selected_photo;// 从相册
private PopupWindow mPopupWindowDialog;
private TextView tv_cancel;// 取消
private Uri photoUri;// 图片路径
public static final int SELECT_PIC_BY_TACK_PHOTO = 101; // 使用照相机拍照获取图片
public static final int SELECT_PIC_BY_PICK_PHOTO = 102; // 使用相册中的图片
private static final int PHOTO_RESOULT = 103;// 照相
private File temp;
/**
* 初始化头像选择pop
*/
private void initSelectedHeadPopupwindow() {
// TODO Auto-generated method stub
mPopupWindowDialog = new PopupWindow(selectedPhotoView,
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
mPopupWindowDialog.setFocusable(true);
mPopupWindowDialog.update();
mPopupWindowDialog.setBackgroundDrawable(new BitmapDrawable(
getResources(), (Bitmap) null));
mPopupWindowDialog.setOutsideTouchable(true);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
hideSoftKeyboard();
// TODO Auto-generated method stub
isFirst = false;
if (mBitmaps.get(position).isAdd()) {
// Intent intent = new Intent(mActivity,
// SelectedPhotoActivity.class);
// mActivity.startActivityForResult(intent, 101);
selectedPhotoView = UIUtils.inflate(R.layout.activity_selected_photo2);
ll_selected_carmera = (TextView) selectedPhotoView
.findViewById(R.id.btn_camera);
ll_selected_photo = (TextView) selectedPhotoView
.findViewById(R.id.btn_img);
tv_cancel = (TextView) selectedPhotoView
.findViewById(R.id.btn_cancle);
ImageView imageView = (ImageView) selectedPhotoView
.findViewById(R.id.imageView);
// imageView.setVisibility(View.GONE);
imageView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (mPopupWindowDialog != null
&& mPopupWindowDialog.isShowing()) {
mPopupWindowDialog.dismiss();
}
}
});
initSelectedHeadPopupwindow();
if (mPopupWindowDialog != null) {
mPopupWindowDialog.showAtLocation(mView, Gravity.BOTTOM
| Gravity.CENTER_HORIZONTAL, 0, 0);
}
selectedPhoto();
} else {
// GetBytes();
mRl_bigPhoto.setVisibility(View.VISIBLE);
mBt_deleteRecord.setVisibility(View.GONE);
PagerSetAdapter(position);
}
}
/**
* 选择图片
*/
private void selectedPhoto() {
// TODO Auto-generated method stub
ll_selected_carmera.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (PermissionsUtil.hasPermission(AddcasediscussionActivity.this, Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
//有访问摄像头的权限
takePhoto11();// 拍照获取
} else {
EasyWindow.with(AddcasediscussionActivity.this).setGravity(Gravity.TOP).setYOffset(200).setWidth(1000)
.setContentView(R.layout.float_top_dialog_new).show();
PermissionsUtil.requestPermission(AddcasediscussionActivity.this, new PermissionListener() {
@Override
public void permissionGranted(@NonNull String[] permissions) {
EasyWindow.cancelAll();
//用户授予了访问摄像头的权限
takePhoto11();// 拍照获取
}
@Override
public void permissionDenied(@NonNull String[] permissions) {
EasyWindow.cancelAll();
//用户拒绝了访问摄像头的申请
LogUtil.i("以拒绝");
isFirst = true;
}
}, new String[]{Manifest.permission.CAMERA, Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE});
}
}else {
takePhoto();// 拍照获取
}
}
});
ll_selected_photo.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (PermissionsUtil.hasPermission(AddcasediscussionActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
//有读写内存
Intent intent = new Intent(mActivity, PhotoAlbumActivity.class);
intent.putExtra("photonum", "" + (mBitmaps.size() - 1));
mActivity.startActivityForResult(intent,
SELECT_PIC_BY_PICK_PHOTO);
} else {
EasyWindow.with(AddcasediscussionActivity.this).setGravity(Gravity.TOP).setYOffset(200).setWidth(1000)
.setContentView(R.layout.float_top_dialog_photo).show();
PermissionsUtil.requestPermission(AddcasediscussionActivity.this, new PermissionListener() {
@Override
public void permissionGranted(@NonNull String[] permissions) {
EasyWindow.cancelAll();
//
Intent intent = new Intent(mActivity, PhotoAlbumActivity.class);
intent.putExtra("photonum", "" + (mBitmaps.size() - 1));
mActivity.startActivityForResult(intent,
SELECT_PIC_BY_PICK_PHOTO);
}
@Override
public void permissionDenied(@NonNull String[] permissions) {
EasyWindow.cancelAll();
//用户拒绝了访问读写的申请
isFirst = true;
//
}
}, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE});
}
}else {
Intent intent = new Intent(mActivity, PhotoAlbumActivity.class);
intent.putExtra("photonum", "" + (mBitmaps.size() - 1));
mActivity.startActivityForResult(intent,
SELECT_PIC_BY_PICK_PHOTO);
}
}
});
tv_cancel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (mPopupWindowDialog != null
&& mPopupWindowDialog.isShowing()) {
mPopupWindowDialog.dismiss();
}
}
});
}
public static void startActionCapture(Activity activity, File file, int requestCode) {
if (activity == null) {
return;
}
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, getUriForFile(activity, file));
activity.startActivityForResult(intent, requestCode);
}
public static Uri getUriForFile(Context context, File file) {
if (context == null || file == null) {
throw new NullPointerException();
}
Uri uri;
if (Build.VERSION.SDK_INT >= 24) {
uri = FileProvider.getUriForFile(context.getApplicationContext(), "cn.shangyu.gdxzExpert.fileprovider", file);
} else {
uri = Uri.fromFile(file);
}
return uri;
}
/**
* 拍照获取图片
*/
private void takePhoto() {
String fileName = null;
// 执行拍照前应该先判断SD卡是否存在
String SDState = Environment.getExternalStorageState();
if (SDState.equals(Environment.MEDIA_MOUNTED)) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);// "android.media.action.IMAGE_CAPTURE"调用系统的相机
fileName = String.valueOf(System.currentTimeMillis()) + ".jpg";
photoUri = getUriForFile(AddcasediscussionActivity.this,new File(Environment.getExternalStorageDirectory(), fileName));
// photoUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), fileName));
// 指定照片保存路径SD卡image.jpg为一个临时文件每次拍照后这个图片都会被替换
intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
SharePrefUtil.saveString(AddcasediscussionActivity.this,
"photoUri", photoUri + "");
startActivityForResult(intent, SELECT_PIC_BY_TACK_PHOTO);
} else {
Toast.makeText(this, "内存卡不存在", Toast.LENGTH_LONG).show();
}
}
private void takePhoto11() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);// 设置打开相机
File photoFile = null;
try {
File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); // 保存到公共共享空间内,可以在资源管理器中找到,其他应用也可以直接访问
// File storageDir = activity.getExternalFilesDir(Environment.DIRECTORY_PICTURES); 将图片放到应用专属空间内其他的应用无法访问也无法查看。随app的卸载而删除
String imageFileName = "fileName";
photoFile = File.createTempFile(imageFileName, ".jpg", storageDir);
// String filePath = photoFile.getAbsolutePath(); 获取到图片的路径可以在onActivityResult中根据这个路径去获取图片
} catch (IOException e) {
e.printStackTrace();
}
if (photoFile != null) {
photoUri = FileProvider.getUriForFile(this,getPackageName() + ".fileprovider",
photoFile);
SharePrefUtil.saveString(this, "photoUri",
photoUri + "");
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.putExtra(MediaStore.EXTRA_OUTPUT,
FileProvider.getUriForFile(this, getApplicationContext().getPackageName() + ".fileprovider", photoFile));
startActivityForResult(intent, SELECT_PIC_BY_TACK_PHOTO);
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (!top_right_text.isClickable()) {
top_right_text.setClickable(true);
}
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (TextUtils.isEmpty(mEt_note.getText().toString())) {
if (mRl_bigPhoto.getVisibility() == View.VISIBLE) {
mRl_bigPhoto.setVisibility(View.GONE);
layout_top.setVisibility(View.VISIBLE);
// mBt_deleteRecord.setVisibility(View.VISIBLE);
mBt_deleteRecord.setVisibility(View.GONE);
}
hideSoftKeyboard();
finish();
}else {
dilaog2 = ECAlertDialog.buildAlert(AddcasediscussionActivity.this,
"您有未发布的内容,是否保存?", "取消", "保存", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dilaog2.dismiss();
SharePrefUtil.saveString(AddcasediscussionActivity.this,"AddcasediscussionActivity","");
if (mRl_bigPhoto.getVisibility() == View.VISIBLE) {
mRl_bigPhoto.setVisibility(View.GONE);
layout_top.setVisibility(View.VISIBLE);
// mBt_deleteRecord.setVisibility(View.VISIBLE);
mBt_deleteRecord.setVisibility(View.GONE);
}
hideSoftKeyboard();
finish();
}
}, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dilaog2.dismiss();
SharePrefUtil.saveString(AddcasediscussionActivity.this,"AddcasediscussionActivity",mEt_note.getText().toString());
if (mRl_bigPhoto.getVisibility() == View.VISIBLE) {
mRl_bigPhoto.setVisibility(View.GONE);
layout_top.setVisibility(View.VISIBLE);
// mBt_deleteRecord.setVisibility(View.VISIBLE);
mBt_deleteRecord.setVisibility(View.GONE);
}
hideSoftKeyboard();
finish();
}
});
// dilaog2.setTitle("温馨提示");
dilaog2.setCancelable(false);
dilaog2.getWindow();
dilaog2.show();
}
} else {
return super.onKeyDown(keyCode, event);
}
return super.onKeyDown(keyCode, event);
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
if(VoiceUtil!=null){
VoiceUtil.dissDialog();
}
super.onDestroy();
}
}