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 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 images = new ArrayList(); private ViewPager mPager; private String a1 = ""; private String a2 = ""; private String a3 = ""; private RadioGroup mLabel_one; private RadioButton rb; // private List picPaths = new ArrayList(); 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(); 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 paths; public static Boolean isfresh = false; // public static ArrayList 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) 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 param = new HashMap(); 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 param = new HashMap(); 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 param = new HashMap(); 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 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(); } }