package com.smartdot.cgt.activity; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Array; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Color; import android.location.Location; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.os.Message; import android.provider.MediaStore; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.Spinner; import android.widget.TextView; import com.smartdot.cgt.R; import com.smartdot.cgt.model.ResponseResult; import com.smartdot.cgt.request.ApiClent; import com.smartdot.cgt.request.Request; import com.smartdot.cgt.util.ActivityTools; import com.smartdot.cgt.util.ApplicationMain; import com.smartdot.cgt.util.BaseThread; import com.smartdot.cgt.util.BitmapConvert; import com.smartdot.cgt.util.HandlerStatus; import com.smartdot.cgt.util.Msg; import com.smartdot.cgt.util.StringUtils; import com.smartdot.cgt.view.ImagesLayout; import com.smartdot.cgt.view.TitleBar; import org.json.JSONException; import org.json.JSONObject; public class FrmProblemCheckDetail extends BaseActivity { private TitleBar titlebar; private BaseThread thread; private HashMap<String, BaseThread> threadList = new HashMap<String, BaseThread>(5); private final String THREAD_SUBMIT_FIELD = "THREAD_SUBMIT_FIELD"; private final String THREAD_SUBMIT_PICTURE0 = "THREAD_SUBMIT_PICTURE0"; private Spinner spinProblemType,spinLargeClass,spinSmallClass; private String caseLClass = null,caseSClass = null; private List<String> picpaths; JSONObject casejson; TextView txtcasenum,txtcasetype,txtcaselclass,txtcasesclass; TextView txtshequ,txtaddress,txtdetail,txtsuggest,txttime; EditText txtremarks,editAddress; private View btnGetPosition; private ImagesLayout imagesLayout,imagesLayout1; private LinearLayout mainLayout,mainLayout1; private Spinner spinCheckResult; public String nowstate,processId; private ImageButton closeBtn1,closeBtn2,closeBtn3; public List<Map<String,String>> nextstate; private Button submit_bt; private View btnGetImage; private static int SELECT_PICTURE = 0,TAKE_PHOTO = 1; public int imgcount=0; private String longitude,latitude,shequid,gridId; Long id; private String eventId; private boolean hascasetype; public List<Map<String,String>> lclass,sclass; ArrayAdapter<String> type_arr_adapter; @Override protected void setLayout() { initActivity(); setContentView(R.layout.problemcheckdetail); titlebar = (TitleBar) this.findViewById(R.id.titlebar); titlebar.setTitleText(R.string.module_problemcheck); txtcasenum = (TextView) findViewById(R.id.casenum); txtcasetype = (TextView) findViewById(R.id.casetype); txtcaselclass = (TextView) findViewById(R.id.caselclass); txtcasesclass = (TextView) findViewById(R.id.casesclass); txtshequ = (TextView) findViewById(R.id.spinSq); txtaddress = (TextView) findViewById(R.id.txtAddress); txtsuggest = (TextView) findViewById(R.id.txtsuggest); txttime = (TextView) findViewById(R.id.txttime); txtdetail = (TextView) findViewById(R.id.txtEventDesc); txtremarks = (EditText) findViewById(R.id.txtOpinion); editAddress = (EditText) findViewById(R.id.editAddress); btnGetPosition = (View) findViewById(R.id.btnGetPosition); submit_bt = (Button)findViewById(R.id.submit_bt); // imageView = (ImageView) ApplicationMain.getInstance().inflateView(R.layout.imagelayout1); imagesLayout1 = (ImagesLayout) ApplicationMain.getInstance().inflateView(R.layout.imagelayout1); mainLayout1 = (LinearLayout) findViewById(R.id.layout_pic1); mainLayout1.addView(imagesLayout1); imagesLayout = (ImagesLayout) ApplicationMain.getInstance().inflateView(R.layout.imagelayout); closeBtn1 = (ImageButton) imagesLayout.findViewById(R.id.closeBtn1); closeBtn2 = (ImageButton) imagesLayout.findViewById(R.id.closeBtn2); closeBtn3 = (ImageButton) imagesLayout.findViewById(R.id.closeBtn3); btnGetImage = (View) findViewById(R.id.btnGetImage); mainLayout = (LinearLayout) findViewById(R.id.layout_pic); mainLayout.addView(imagesLayout); spinCheckResult = (Spinner)findViewById(R.id.spinCheckResult); spinCheckResult.setOnItemSelectedListener(onItemSelectedListener); imagesLayout.setVisibility(View.GONE); submit_bt.setClickable(true); spinProblemType = (Spinner) findViewById(R.id.spinProblemType); spinLargeClass = (Spinner) findViewById(R.id.spinLargeClass); spinSmallClass = (Spinner) findViewById(R.id.spinSmallClass); List<String> data_list = new ArrayList<String>(); data_list.add("事件"); data_list.add("部件"); type_arr_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data_list); type_arr_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinProblemType.setAdapter(type_arr_adapter); } @Override protected void doInit() { // getPosition(); initview(); } private void changeLClassType(int typeSelectedIndex) { thread = new BaseThread(baseHandler) { @Override public void runThread() { Message msg = thread.obtainMessage(); if (msg != null) { msg.what = HandlerStatus.REQUEST_LCLASS; ResponseResult< List<Map<String,String>>> typelistResult = null; List<String> data_list = new ArrayList<String>(); try { String casetype = (String)spinProblemType.getSelectedItem(); if(casetype.equals("事件")){ typelistResult = Request.getRequest().typelist("1"); lclass = typelistResult.getResultObj(); for (int i=0;i<lclass.size();i++) data_list.add(lclass.get(i).get("typeName")); }else if(casetype.equals("部件")){ typelistResult = Request.getRequest().typelist("2"); lclass = typelistResult.getResultObj(); for (int i=0;i<lclass.size();i++) data_list.add(lclass.get(i).get("typeName")); } if (typelistResult.isSuccess()) { msg.obj = data_list; msg.arg1 = HandlerStatus.HANDLE_OK; } else if (typelistResult.isHadError()) { msg.arg1 = HandlerStatus.HANDLE_ERROR; } else { msg.arg1 = HandlerStatus.HANDLE_FAIL; } } catch (Exception e) { msg.arg1 = HandlerStatus.HANDLE_ERROR; msg.obj = e.getMessage(); e.printStackTrace(); } thread.sendMessage(msg); } } }; thread.start(); } /** * @param lclassSelectedIndex */ private void changeSClassType(int lclassSelectedIndex) { final String index = lclass.get(lclassSelectedIndex).get("id"); thread = new BaseThread(baseHandler) { @Override public void runThread() { Message msg = thread.obtainMessage(); if (msg != null) { msg.what = HandlerStatus.REQUEST_SCLASS; ResponseResult< List<Map<String,String>>> typelistResult = null; List<String> data_list = new ArrayList<String>(); try { String casetype = (String)spinProblemType.getSelectedItem(); if(casetype.equals("事件")){ typelistResult = Request.getRequest().typelistdetail("1",index); sclass = typelistResult.getResultObj(); for (int i=0;i<sclass.size();i++) data_list.add(sclass.get(i).get("typeDetailName")); }else if(casetype.equals("部件")){ typelistResult = Request.getRequest().typelistdetail("2",index); sclass = typelistResult.getResultObj(); for (int i=0;i<sclass.size();i++) data_list.add(sclass.get(i).get("typeDetailName")); } if (typelistResult.isSuccess()) { msg.obj = data_list; msg.arg1 = HandlerStatus.HANDLE_OK; } else if (typelistResult.isHadError()) { msg.arg1 = HandlerStatus.HANDLE_ERROR; } else { msg.arg1 = HandlerStatus.HANDLE_FAIL; } } catch (Exception e) { msg.arg1 = HandlerStatus.HANDLE_ERROR; msg.obj = e.getMessage(); e.printStackTrace(); } thread.sendMessage(msg); } } }; thread.start(); } private AdapterView.OnItemSelectedListener onItemSelectedListener = new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { TextView v1 = (TextView) arg1; if (arg0 == spinCheckResult) { txtremarks.setText(nextstate.get(arg2).get("nextOperation")); }else if (arg0 == spinProblemType) { spinProblemType.getChildAt(0).setVisibility(View.VISIBLE); caseLClass = null; caseSClass = null; changeLClassType(arg2); if(arg2 == 1){ spinLargeClass.setClickable(false); spinSmallClass.setClickable(false); spinLargeClass.setBackgroundResource(R.drawable.probleminput_et); spinSmallClass.setBackgroundResource(R.drawable.probleminput_et); }else if(arg2 == 0){ spinLargeClass.setClickable(true); spinSmallClass.setClickable(true); spinLargeClass.setBackgroundResource(R.drawable.probleminput_spinner); spinSmallClass.setBackgroundResource(R.drawable.probleminput_spinner); } } else if (arg0 == spinLargeClass) { changeSClassType(arg2); if(spinProblemType.getSelectedItemPosition()==0){ v1.setTextColor(Color.parseColor("#000000")); }else if(spinProblemType.getSelectedItemPosition()==1){ v1.setTextColor(Color.parseColor("#999999")); } } else if (arg0 == spinSmallClass) { if(spinProblemType.getSelectedItemPosition()==0){ v1.setTextColor(Color.parseColor("#000000")); }else if(spinProblemType.getSelectedItemPosition()==1){ v1.setTextColor(Color.parseColor("#999999")); } } } @Override public void onNothingSelected(AdapterView<?> arg0) { } }; @Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { if (resultCode == RESULT_OK) { if (requestCode == SELECT_PICTURE) { Bitmap yourSelectedImage = getImageFromReturnIntent(intent); if (yourSelectedImage != null) { imagesLayout.addSelectedImage(yourSelectedImage); if (imgcount < 3) { imgcount++; if (imgcount == 1) closeBtn1.setVisibility(View.VISIBLE); else if (imgcount == 2) closeBtn2.setVisibility(View.VISIBLE); else if (imgcount == 3) closeBtn3.setVisibility(View.VISIBLE); } } } else if (requestCode == TAKE_PHOTO) { Bitmap bitmap = getImageFromCameraIntent(intent); if (bitmap != null) { imagesLayout.addSelectedImage(bitmap); if (imgcount < 3) { imgcount++; if (imgcount == 1) closeBtn1.setVisibility(View.VISIBLE); else if (imgcount == 2) closeBtn2.setVisibility(View.VISIBLE); else if (imgcount == 3) closeBtn3.setVisibility(View.VISIBLE); } } }else if (requestCode == ActivityTools.GETLOCATION_EVENT || requestCode == ActivityTools.GETLOCATION_PART) { Bundle bundle = intent.getExtras(); if (bundle != null && bundle.containsKey("MapReturn_X")) { longitude=String.valueOf(bundle.get("MapReturn_X")); latitude=String.valueOf(bundle.get("MapReturn_Y")); } gridId = bundle.getString(MapReturn_GridId); shequid = bundle.getString(MapReturn_SheQuId); txtshequ.setText(bundle.getString(MapReturn_SheQu)); caseLClass = bundle.getString(MapReturn_LClass); caseSClass = bundle.getString(MapReturn_SClass); if (!StringUtils.isNullOrEmpty(caseLClass) && !StringUtils.isNullOrEmpty(caseSClass)) { for(int i=0; i<lclass.size(); i++){ if(caseLClass.equals(lclass.get(i).get("typeName"))){ spinLargeClass.setSelection(i,true); changeSClassType(i); break; } } } Msg.showInfo(FrmProblemCheckDetail.this, "已获取指定点信息!"); } } } @Override protected void addEventListener() { spinProblemType.setOnItemSelectedListener(onItemSelectedListener); spinProblemType.setSelection(0, true); spinLargeClass.setSelection(0, true); spinLargeClass.setOnItemSelectedListener(onItemSelectedListener); spinSmallClass.setSelection(0, true); spinSmallClass.setOnItemSelectedListener(onItemSelectedListener); btnGetPosition.setOnClickListener(onClickListener); submit_bt.setOnClickListener(onClickListener); btnGetImage.setOnClickListener(onClickListener); closeBtn1.setOnClickListener(onClickListener); closeBtn2.setOnClickListener(onClickListener); closeBtn3.setOnClickListener(onClickListener); imagesLayout1.setOnPreviewImage(imagesLayout1.new OnPreviewImage() { @Override public void previewImage(int viewIndex) { Intent intent = new Intent(FrmProblemCheckDetail.this, FrmViewImage.class); intent.putExtra(FrmViewImage.BITMAPKEY, imagesLayout1.getSelectedImagesPath()); intent.putExtra(FrmViewImage.FIRSTSHOWINDEX, viewIndex); startActivity(intent); } }); imagesLayout.setOnCountChange(imagesLayout.new OnCountChange() { @Override public void getNowCount(int nowCount) { imagesLayout.setVisibility(nowCount == 0 ? View.GONE : View.VISIBLE); btnGetImage.setEnabled(nowCount < 3); imagesLayout.requestFocus(); } }); imagesLayout.setOnPreviewImage(imagesLayout.new OnPreviewImage() { @Override public void previewImage(int viewIndex) { Intent intent = new Intent(FrmProblemCheckDetail.this, FrmViewImage.class); intent.putExtra(FrmViewImage.BITMAPKEY, imagesLayout .getSelectedImagesPath()); intent.putExtra(FrmViewImage.FIRSTSHOWINDEX, viewIndex); startActivity(intent); } }); } private OnClickListener onClickListener = new OnClickListener() { @Override public void onClick(View arg0) { if (arg0 == btnGetPosition) { if(hascasetype){ //地图和百度地图切换 int getLocationId = ActivityTools.GETLOCATION_NONE; Intent intent = new Intent(); intent.setClass(FrmProblemCheckDetail.this,FrmMap.class); Bundle bundle = new Bundle(); bundle.putString("lng",longitude); bundle.putString("lat",latitude); intent.putExtras(bundle); startActivity(intent); }else{ //地图和百度地图切换 String type = spinProblemType.getSelectedItem().toString(); int getLocationId; if ("部件".equals(type)) { getLocationId = ActivityTools.GETLOCATION_PART; Intent intent = new Intent(FrmProblemCheckDetail.this, FrmMap.class); intent.putExtra("needGetLocation", getLocationId); startActivityForResult(intent, getLocationId); } else if ("事件".equals(type)) { getLocationId = ActivityTools.GETLOCATION_EVENT; Intent intent = new Intent(FrmProblemCheckDetail.this, FrmMap.class); intent.putExtra("needGetLocation", getLocationId); startActivityForResult(intent, getLocationId); } } }else if(arg0 == submit_bt){ boolean bsub = true; submit_bt.setClickable(false); if(StringUtils.isNullOrEmpty(shequid) && !hascasetype){ Msg.showInfo(FrmProblemCheckDetail.this,"请先通过地图获取社区信息!\n"); bsub = false; } if(StringUtils.isNullOrEmpty(editAddress.getText().toString().trim())){ Msg.showInfo(FrmProblemCheckDetail.this,"请填写发生地点!\n"); } if(editAddress.getText().toString().length()>50){ Msg.showInfo(FrmProblemCheckDetail.this,"发生地点不能超过50字!\n"); } if(StringUtils.isNullOrEmpty(txtremarks.getText().toString().trim())){ Msg.showInfo(FrmProblemCheckDetail.this, "请填写核实意见!\n"); bsub = false; } if(txtremarks.getText().toString().length()>50){ Msg.showInfo(FrmProblemCheckDetail.this, "核实意见不能超过50字!\n"); } if (imagesLayout.getSelectedImageCount() <2) { Msg.showInfo(FrmProblemCheckDetail.this, "请上传二张图片!\n"); bsub = false; } if(bsub){ picpaths = new ArrayList<String>(); submitPicture(); submitcheck(); }else{ submit_bt.setClickable(true); } }else if (arg0 == btnGetImage) {// 点击获取图片 ActivityTools.getInstance().takePicture(SELECT_PICTURE, TAKE_PHOTO, FrmProblemCheckDetail.this); } else if(arg0 == closeBtn1) { imagesLayout.removeSelectedImage(0); if(imgcount==1) closeBtn1.setVisibility(View.INVISIBLE); else if(imgcount==2) closeBtn2.setVisibility(View.INVISIBLE); else if(imgcount==3) closeBtn3.setVisibility(View.INVISIBLE); imgcount--; } else if(arg0 == closeBtn2) { imagesLayout.removeSelectedImage(1); if(imgcount==1) closeBtn1.setVisibility(View.INVISIBLE); else if(imgcount==2) closeBtn2.setVisibility(View.INVISIBLE); else if(imgcount==3) closeBtn3.setVisibility(View.INVISIBLE); imgcount--; } else if(arg0 == closeBtn3) { imagesLayout.removeSelectedImage(2); if(imgcount==1) closeBtn1.setVisibility(View.INVISIBLE); else if(imgcount==2) closeBtn2.setVisibility(View.INVISIBLE); else if(imgcount==3) closeBtn3.setVisibility(View.INVISIBLE); imgcount--; } } }; public File getFile(Bitmap bm) { Long random = System.currentTimeMillis(); String randomstr = random.toString(); String path = Environment.getExternalStorageDirectory() + "/Ask"; File dirFile = new File(path); if(!dirFile.exists()){ dirFile.mkdir(); } File myCaptureFile = new File(path +"/" + randomstr +".jpg"); try { BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(myCaptureFile)); bm.compress(Bitmap.CompressFormat.JPEG, 80, bos); bos.flush(); bos.close(); }catch (Exception e){ e.printStackTrace(); } return myCaptureFile; } private void submitPicture(){ final Bitmap[] bitmapList = imagesLayout.getSelectedImages(); BaseThread thread = new BaseThread(baseHandler) { @Override public void runThread() { final Message msg = this.obtainMessage(); if (msg != null) { msg.what = HandlerStatus.SUBMIT_PICTURE0; try { for (int i = 0, count = imagesLayout.getSelectedImageCount(); i < count; i++){ final int nowIndex = i; File file = getFile(bitmapList[nowIndex]); ApiClent.fileupload(file, new ApiClent.ClientCallback() { @Override public void onSuccess(Object data) { try { JSONObject jsonObject = new JSONObject(data.toString()); picpaths.add(jsonObject.getString("data")); msg.arg1 = HandlerStatus.HANDLE_OK; } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); Log.i("fileupload", e.getMessage()); msg.arg1 = HandlerStatus.HANDLE_FAIL; } } @Override public void onFailure(String message) { System.out.println("fileupload.message------------------ " + message); msg.arg1 = HandlerStatus.HANDLE_FAIL; } @Override public void onError(Exception e) { System.out.println("fileupload.e.getMessage()------------------ " + e.getMessage()); msg.arg1 = HandlerStatus.HANDLE_FAIL; } }); } } catch (Exception e) { msg.arg1 = HandlerStatus.HANDLE_ERROR; } this.sendMessage(msg); } } }; showProgress("图片上传中。。。", "案卷录入"); thread.start(); final String key = "THREAD_SUBMIT_PICTURE0"; threadList.put(key, thread); } private void submitcheck(){ thread = new BaseThread(baseHandler) { @Override public void runThread() { final Message msg = thread.obtainMessage(); if (msg != null) { msg.what = HandlerStatus.REQUEST_SUBMITCHECK; try { while(picpaths.size()<imagesLayout.getSelectedImageCount()){ Thread.currentThread().sleep(500); } String picstr ="" ; for(int i=0; i<picpaths.size(); i++){ if(i>0) picstr+=","; picstr+=picpaths.get(i); } String changeState = nextstate.get(spinCheckResult.getSelectedItemPosition()).get("nextState"); String remarkers = txtremarks.getText().toString().trim(); if(hascasetype){ ApiClent.completeCaseTask(processId,id.toString(),nowstate, changeState, remarkers,picstr,new ApiClent.ClientCallback() { @Override public void onSuccess(Object data) { try { JSONObject jsonObject = new JSONObject(data.toString()); msg.arg1 = HandlerStatus.HANDLE_OK; } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); Log.i("inputNewCase", e.getMessage()); msg.arg1 = HandlerStatus.HANDLE_FAIL; } } @Override public void onFailure(String message) { System.out.println("inputNewCase.message------------------ " + message); msg.arg1 = HandlerStatus.HANDLE_FAIL; } @Override public void onError(Exception e) { System.out.println("inputNewCase.e.getMessage()------------------ " + e.getMessage()); msg.arg1 = HandlerStatus.HANDLE_FAIL; } }); }else{ String casetype = (String)spinProblemType.getSelectedItem(); String eorc; if(casetype.equals("事件")){ eorc = "1"; }else{ eorc = "2"; } String caselclassid = lclass.get(spinLargeClass.getSelectedItemPosition()).get("typeCode"); String casesclassid = sclass.get(spinSmallClass.getSelectedItemPosition()).get("typeDetailCode"); ApiClent.completeCaseCheck(processId,id.toString(),nowstate, changeState, remarkers,picstr,eorc,caselclassid,casesclassid,longitude,latitude,"1", gridId.substring(0,6),gridId.substring(0,9),shequid,gridId, editAddress.getText().toString().trim(), new ApiClent.ClientCallback() { @Override public void onSuccess(Object data) { try { JSONObject jsonObject = new JSONObject(data.toString()); msg.arg1 = HandlerStatus.HANDLE_OK; } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); Log.i("inputNewCase", e.getMessage()); msg.arg1 = HandlerStatus.HANDLE_FAIL; } } @Override public void onFailure(String message) { System.out.println("inputNewCase.message------------------ " + message); msg.arg1 = HandlerStatus.HANDLE_FAIL; } @Override public void onError(Exception e) { System.out.println("inputNewCase.e.getMessage()------------------ " + e.getMessage()); msg.arg1 = HandlerStatus.HANDLE_FAIL; } }); } } catch (Exception e) { msg.arg1 = HandlerStatus.HANDLE_ERROR; } this.sendMessage(msg); } } }; showProgress("核实提交中。。。", "案卷核实"); thread.start(); threadList.put(THREAD_SUBMIT_FIELD, thread); } private boolean checkIsNeedCloseProgress() { boolean canCloseProgress = true; for (BaseThread thread : threadList.values()) { if (thread != null && thread.getIsThreadGoing()) { canCloseProgress = false; } } if (canCloseProgress) { try { closeProgress(); } catch (Exception e) { e.printStackTrace(); } } return canCloseProgress; } @SuppressWarnings("unchecked") @Override protected void handleMessage(Message msg) { if(msg.what == HandlerStatus.REQUEST_PIC0){ if (msg.arg1 == HandlerStatus.HANDLE_OK) { Bitmap bitmap = (Bitmap) msg.obj; imagesLayout1.addSelectedImage(bitmap); } else if (msg.arg1 == HandlerStatus.HANDLE_FAIL) { Msg.showInfo(FrmProblemCheckDetail.this, "案卷图片加载失败!"); } checkIsNeedCloseProgress(); }else if(msg.what == HandlerStatus.REQUEST_PIC1){ if (msg.arg1 == HandlerStatus.HANDLE_OK) { Bitmap bitmap = (Bitmap) msg.obj; imagesLayout1.addSelectedImage(bitmap); } else if (msg.arg1 == HandlerStatus.HANDLE_FAIL) { Msg.showInfo(FrmProblemCheckDetail.this, "案卷图片加载失败!"); } checkIsNeedCloseProgress(); }else if(msg.what == HandlerStatus.REQUEST_PIC2){ if (msg.arg1 == HandlerStatus.HANDLE_OK) { Bitmap bitmap = (Bitmap) msg.obj; imagesLayout1.addSelectedImage(bitmap); } else if (msg.arg1 == HandlerStatus.HANDLE_FAIL) { Msg.showInfo(FrmProblemCheckDetail.this, "案卷图片加载失败!"); } checkIsNeedCloseProgress(); }else if (msg.what == HandlerStatus.SUBMIT_PICTURE0) { threadList.get(THREAD_SUBMIT_PICTURE0).interrupt(); if (msg.arg1 == HandlerStatus.HANDLE_OK) { // Msg.showInfo(FrmProblemCheckDetail.this, "图片上传成功!"); finishActivity(checkIsNeedCloseProgress()); } else if (msg.arg1 == HandlerStatus.HANDLE_FAIL) { Msg.showInfo(FrmProblemCheckDetail.this, "上传图片失败!"); } else { Msg.showInfo(FrmProblemCheckDetail.this, "上传图片时出现错误!"); } checkIsNeedCloseProgress(); } else if(msg.what ==HandlerStatus.REQUEST_DETAIL){ if (msg.arg1 == HandlerStatus.HANDLE_OK) { casejson = (JSONObject) msg.obj; try { txtcasenum.setText(casejson.getString("caseid")); txtcasetype.setText(casejson.getString("eorcName")); txtcaselclass.setText(casejson.getString("casetypeName")); if(casejson.getInt("source") == 12 || casejson.getInt("source") == 11){ hascasetype = false; spinProblemType.setVisibility(View.VISIBLE); spinLargeClass.setVisibility(View.VISIBLE); spinSmallClass.setVisibility(View.VISIBLE); editAddress.setVisibility(View.VISIBLE); txtcasetype.setVisibility(View.GONE); txtcaselclass.setVisibility(View.GONE); txtcasesclass.setVisibility(View.GONE); txtaddress.setVisibility(View.GONE); }else{ hascasetype = true; } txtcasesclass.setText(casejson.getString("casetypeDetailName")); txtshequ.setText(casejson.getString("communityName")); txtsuggest.setText(casejson.getString("registerRemarks")); txttime.setText(casejson.getString("nodeLimittime")); txtaddress .setText(casejson.getString("fieldintro")); editAddress .setText(casejson.getString("fieldintro")); txtdetail.setText(casejson.getString("description")); nowstate = casejson.getString("caseState"); processId = casejson.getString("processId"); longitude = casejson.getString("lng"); latitude = casejson.getString("lat"); String fileIdVerify = casejson.getString("fileIdVerify").replace(" ", "").replace("\\","/"); List<String> list = Arrays.asList(fileIdVerify.split(",")); if(!fileIdVerify.equals("")){ initpic(list); }else { mainLayout1.setVisibility(View.GONE); } initspin(); }catch (JSONException e){ e.printStackTrace(); } } else if (msg.arg1 == HandlerStatus.HANDLE_FAIL) { Msg.showInfo(FrmProblemCheckDetail.this, "获取案卷详情失败!"); } else { Msg.showInfo(FrmProblemCheckDetail.this, "获取案卷详情时出现错误!"); } checkIsNeedCloseProgress(); }else if (msg.what == HandlerStatus.REQUEST_SPINSTATE) { if (msg.arg1 == HandlerStatus.HANDLE_OK) { try { List<String> data_list = (List<String>) msg.obj; ArrayAdapter<String> arr_adapter = new ArrayAdapter<String>(FrmProblemCheckDetail.this, android.R.layout.simple_spinner_item, data_list); arr_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinCheckResult.setAdapter(arr_adapter); arr_adapter.notifyDataSetChanged(); spinCheckResult.setSelection(0,true); }catch (Exception e){ e.printStackTrace(); } } else if (msg.arg1 == HandlerStatus.HANDLE_FAIL) { Msg.showInfo(FrmProblemCheckDetail.this, "获取核实情况信息失败!"); } else { Msg.showInfo(FrmProblemCheckDetail.this, "获取核实情况信息时出现错误!"); } checkIsNeedCloseProgress(); }else if (msg.what == HandlerStatus.REQUEST_SUBMITCHECK) { threadList.get(THREAD_SUBMIT_FIELD).interrupt(); if (msg.arg1 == HandlerStatus.HANDLE_OK) { Msg.showInfo(FrmProblemCheckDetail.this, "上报成功!"); finishActivity(checkIsNeedCloseProgress()); } else if (msg.arg1 == HandlerStatus.HANDLE_FAIL) { Msg.showInfo(FrmProblemCheckDetail.this, "案卷核实失败!"); } else { Msg.showInfo(FrmProblemCheckDetail.this, "案卷核实时出现错误!"); } checkIsNeedCloseProgress(); }else if (msg.what == HandlerStatus.REQUEST_LCLASS) { if (msg.arg1 == HandlerStatus.HANDLE_OK) { try { List<String> data_list = (List<String>) msg.obj; ArrayAdapter<String> arr_adapter = new ArrayAdapter<String>(FrmProblemCheckDetail.this, android.R.layout.simple_spinner_item, data_list); arr_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinLargeClass.setAdapter(arr_adapter); arr_adapter.notifyDataSetChanged(); spinLargeClass.setSelection(0,true); }catch (Exception e){ e.printStackTrace(); } } else if (msg.arg1 == HandlerStatus.HANDLE_FAIL) { Msg.showInfo(FrmProblemCheckDetail.this, "获取大类信息失败!"); } else { Msg.showInfo(FrmProblemCheckDetail.this, "获取大类信息时出现错误!"); } checkIsNeedCloseProgress(); } else if (msg.what == HandlerStatus.REQUEST_SCLASS) { if (msg.arg1 == HandlerStatus.HANDLE_OK) { try { List<String> data_list = (List<String>) msg.obj; ArrayAdapter<String> arr_adapter = new ArrayAdapter<String>(FrmProblemCheckDetail.this, android.R.layout.simple_spinner_item, data_list); arr_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinSmallClass.setAdapter(arr_adapter); arr_adapter.notifyDataSetChanged(); if(!StringUtils.isNullOrEmpty(caseLClass)){ for(int i=0; i<sclass.size(); i++){ if(caseSClass.equals(sclass.get(i).get("typeDetailName"))){ spinSmallClass.setSelection(i,true); break; } } }else{ spinSmallClass.setSelection(0,true); } }catch (Exception e){ e.printStackTrace(); } } else if (msg.arg1 == HandlerStatus.HANDLE_FAIL) { Msg.showInfo(FrmProblemCheckDetail.this, "获取小类信息失败!"); } else { Msg.showInfo(FrmProblemCheckDetail.this, "获取小类信息时出现错误!"); } checkIsNeedCloseProgress(); } } private void initspin(){ thread = new BaseThread(baseHandler) { @Override public void runThread() { Message msg = thread.obtainMessage(); if (msg != null) { msg.what = HandlerStatus.REQUEST_SPINSTATE; ResponseResult< List<Map<String,String>>> typelistResult = null; List<String> data_list = new ArrayList<String>(); try { typelistResult = Request.getRequest().nextNodes(nowstate); nextstate = typelistResult.getResultObj(); if (typelistResult.isSuccess()) { for (int i=0;i<nextstate.size();i++) data_list.add(nextstate.get(i).get("nextOperation")); msg.obj = data_list; msg.arg1 = HandlerStatus.HANDLE_OK; } else if (typelistResult.isHadError()) { msg.arg1 = HandlerStatus.HANDLE_ERROR; } else { msg.arg1 = HandlerStatus.HANDLE_FAIL; } } catch (Exception e) { msg.arg1 = HandlerStatus.HANDLE_ERROR; msg.obj = e.getMessage(); e.printStackTrace(); } thread.sendMessage(msg); } } }; thread.start(); } private void initpic(final List<String> list){ int length = list.size(); if(length>3) length = 3; for(int i=0; i<length; i++) { final int handlerStatusId = HandlerStatus.REQUEST_PIC0 + i; final int nowIndex = i; thread = new BaseThread(baseHandler) { @Override public void runThread() { final Message msg = thread.obtainMessage(); msg.what = handlerStatusId; if (msg != null) { try { String urlStr = ApplicationMain.getInstance().getCgtConfig().getRequestUrl()+"/static/"+list.get(nowIndex); URL url = new URL(urlStr); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(5000); conn.setRequestProperty("token",ApplicationMain.getInstance().getCgtConfig().gettokenStr()); conn.setRequestMethod("GET"); if (conn.getResponseCode() == 200) { InputStream inputStream = conn.getInputStream(); Bitmap bitmap = BitmapFactory.decodeStream(inputStream); if(bitmap!=null){ msg.obj = bitmap; msg.arg1 = HandlerStatus.HANDLE_OK; } } }catch (MalformedURLException e){ e.printStackTrace(); msg.arg1 = HandlerStatus.HANDLE_FAIL; }catch (IOException e){ e.printStackTrace(); msg.arg1 = HandlerStatus.HANDLE_FAIL; } this.sendMessage(msg); } } }; thread.start(); } } private void initview(){ thread = new BaseThread(baseHandler) { @Override public void runThread() { final Message msg = thread.obtainMessage(); if (msg != null) { msg.what = HandlerStatus.REQUEST_DETAIL; Bundle bundle=getIntent().getExtras(); id = bundle.getLong("id"); ApiClent.caseDetail(id, new ApiClent.ClientCallback() { @Override public void onSuccess(Object data) { try { JSONObject jsonObject = new JSONObject(data.toString()); JSONObject json = jsonObject.getJSONArray("data").getJSONObject(0); msg.obj = json; msg.arg1 = HandlerStatus.HANDLE_OK; } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); Log.i("list_error", e.getMessage()); msg.arg1 = HandlerStatus.HANDLE_FAIL; } } @Override public void onFailure(String message) { msg.arg1 = HandlerStatus.HANDLE_FAIL; } @Override public void onError(Exception e) { msg.arg1 = HandlerStatus.HANDLE_ERROR; } }); this.sendMessage(msg); } } }; thread.start(); } private View.OnClickListener btnOnClick = new View.OnClickListener() { @Override public void onClick(View v){ switch (v.getId()) { default: break; } } }; /** // * @param imageReturnedIntent * @return */ private Bitmap getImageFromCameraIntent(Intent imageReturnedIntent) { Bitmap bitmap = BitmapConvert.resizeBitmap(ApplicationMain .getInstance().getImageTempPath()); if (bitmap == null) { Msg.showInfo(this, "未能获取所拍摄的图片!"); } return bitmap; } /** * @param imageReturnedIntent * @return */ private Bitmap getImageFromReturnIntent(Intent imageReturnedIntent) { Bitmap yourSelectedImage = null; try { String filePath = ""; Uri selectedImage = imageReturnedIntent.getData(); String[] filePathColumn = { MediaStore.Images.Media.DATA }; Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null); if (cursor != null) { cursor.moveToFirst(); int columnIndex = cursor.getColumnIndex(filePathColumn[0]); filePath = cursor.getString(columnIndex); cursor.close(); } else { filePath = selectedImage.getPath(); } yourSelectedImage = BitmapConvert.resizeBitmap(filePath); } catch (Exception e) { Msg.showInfo(this, "未找到图片!"); } return yourSelectedImage; } @Override protected void onCancelProgress(DialogInterface arg0) { for (BaseThread thread : threadList.values()) { if (thread != null) { thread.interrupt(); } } threadList.clear(); } private void finishActivity(boolean canClose) { this.finishActivity(canClose, false); } private void finishActivity(boolean canClose, boolean needCacheAudio) { if (canClose) { if (imagesLayout.getSelectedImageCount() > 0) { try { Request.getRequest().saveImageCache(imagesLayout.getSelectedImages(), eventId, null); } catch (Exception e) { e.printStackTrace(); } } setResult(0x007); FrmProblemCheckDetail.this.finish(); } } }