package com.jqyd.manager; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import org.json.JSONException; import org.json.JSONObject; import android.annotation.SuppressLint; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.ProgressDialog; import android.content.ContentResolver; import android.content.ContentValues; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.graphics.Bitmap; import android.media.MediaScannerConnection; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.provider.MediaStore; import android.provider.MediaStore.Audio.Media; import android.text.Html; import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import com.jqyd.app.BitmapUtils; import com.jqyd.app.LocationUtils; import com.jqyd.app.ShareMethod; import com.jqyd.camera.PhotoUtil; import com.jqyd.camera.UIUtil; import com.jqyd.model.LocationModule; import com.jqyd.model.RecordModel; import com.jqyd.model.XxfkModule; import com.jqyd.shareInterface.Baidu_location; import com.jqyd.shareInterface.Optdb_interfce; import com.jqyd.shareInterface.Optsharepre_interface; import com.jqyd.shareInterface.SystemInfo; import com.jqyd.shareInterface.UpdataToServer; import com.jqyd.son.PicMoreDetail; import com.jqyd.son.Rzsb; public class Xxfk extends Activity implements OnClickListener { private EditText xxbt; private EditText xxnr; private Button up; private Button pz; private Button bc; private Optsharepre_interface share_obj = null; private String xxcjlb = ""; private static String imagePath; private static String imagePath_new = ""; private Bundle bundle = null; private Baidu_location baidu = null; private Optdb_interfce db = null; private String xxbtStr; private String xxnrStr; private int num = 1; private ArrayList<String> paths = new ArrayList<String>(); private ShareMethod share; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.xxfk); xxbt = (EditText) this.findViewById(R.id.xxbt); xxnr = (EditText) this.findViewById(R.id.xxnr); up = (Button) this.findViewById(R.id.up); pz = (Button) this.findViewById(R.id.pz); bc = (Button) this.findViewById(R.id.bc); // bc.setVisibility(View.GONE); up.setOnClickListener(this); pz.setOnClickListener(this); bc.setOnClickListener(this); share = new ShareMethod(Xxfk.this); share_obj = new Optsharepre_interface(Xxfk.this); if (share_obj.getDataFromPres("istakephoto").equals("1")) { xxcjlb = share_obj.getDataFromPres("temp"); share_obj.editPres("istakephoto", "0"); share.recordLog("----onCreate---拍照内存不足,失败"); UIUtil.showMsg(Xxfk.this, "手机内存不足,拍照失败"); } else { Intent intent = this.getIntent(); xxcjlb = intent.getStringExtra("xxcjlb"); share_obj.editPres("temp", xxcjlb); } bundle = new Bundle(); // 注册百度 baidu = new Baidu_location(Xxfk.this); } @Override public void onClick(View v) { // TODO Auto-generated method stub xxbtStr = xxbt.getText().toString(); xxnrStr = xxnr.getText().toString(); if (v == up) { if (xxbtStr.equals("") || xxnrStr.equals("")) { warnTell(); } else { XxfkModule msg = new XxfkModule(); msg.setCosim(share_obj.getDataFromPres("COSIM")); msg.setRegsim(share_obj.getDataFromPres("REGSIM")); msg.setXxbt(xxbtStr); msg.setXxnr(xxnrStr); msg.setXxcjlb(xxcjlb); msg.setGguid(share_obj.getDataFromPres("GGUID")); msg.setZguid(share_obj.getDataFromPres("GUID")); new XxfkThread(msg).start(); } } else if (v == pz) { if (xxbtStr.equals("") || xxnrStr.equals("")) { warnTell(); } else { share_obj = new Optsharepre_interface(Xxfk.this); bundle.putString("gguid", share_obj.getDataFromPres("GGUID")); bundle.putString("guid", share_obj.getDataFromPres("GUID")); bundle.putString("cosim", share_obj.getDataFromPres("COSIM")); bundle.putString("regsim", share_obj.getDataFromPres("REGSIM")); bundle.putString("xxbt", xxbtStr); bundle.putString("xxnr", xxnrStr); bundle.putString("xxcjlb", xxcjlb); takePhotosMore(); } } else if (v == bc) { if (xxbtStr.equals("") || xxnrStr.equals("")) { warnTell(); } else { // Optdb_interfce db = new Optdb_interfce(Xxfk.this); // ArrayList<Object> list = new ArrayList<Object>(); // RecordModel record = new RecordModel(); // record.setGid("3"); // record.setXxcjlb(xxcjlb); // record.setContent(xxnrStr);//内容存放信息内容 // record.setBz(xxbtStr);//备注存放信息标题 // record.setAdd_time(new Date().getTime()+"");//保存时间 // list.add(record); // db.updateToDb("T_RECORDS", list); // db.close_SqlDb(); try { save(); Toast.makeText(Xxfk.this, "保存成功", Toast.LENGTH_SHORT) .show(); } catch (Exception e) { Toast.makeText(Xxfk.this, "保存失败", Toast.LENGTH_SHORT) .show(); } } } } /** * 信息反馈保存 */ private void save() { Message msg = new Message(); msg.what = 4; myHander.sendMessage(msg); LocationModule loc = new LocationUtils(Xxfk.this).takeCellInfos(); LocationUtils locationUtils = new LocationUtils(Xxfk.this); boolean b = locationUtils.getLocation(loc, "All", "", baidu); Optdb_interfce db = new Optdb_interfce(Xxfk.this); ArrayList<Object> list = new ArrayList<Object>(); RecordModel record = new RecordModel(); record.setGid("3"); record.setXxcjlb(xxcjlb); record.setContent(xxnrStr);// 内容存放信息内容 record.setRemark2(xxbtStr);// 备注存放信息标题 record.setAdd_time(new Date().getTime() + "");// 保存时间 record.setCcode(loc.getCcode()); record.setNcode(loc.getNcode()); record.setXhqd(loc.getXhqd()); record.setBz(loc.getYys()); record.setCid(loc.getCell_id()); record.setLac(loc.getLac()); if (b) {// 定位成功 record.setLon(String.valueOf(loc.getLon())); record.setLat(String.valueOf(loc.getLat())); record.setRaduis(loc.getRadius()); record.setWzbs(String.valueOf(loc.getDw_type())); } else { record.setLon("0.0"); record.setLat("0.0"); record.setRaduis("0"); record.setWzbs("-1"); } list.add(record); db.updateToDb("T_RECORDS", list);// 写入数据库 db.close_SqlDb(); Message msg2 = new Message(); msg2.what = 5; myHander.sendMessage(msg2); } /** * 非空警告提示 */ public void warnTell() { new AlertDialog.Builder(Xxfk.this).setTitle("警告") .setMessage("请将信息填写完整!").setPositiveButton("确定", null).show(); } /** * 信息反馈线程 * * @author Administrator * */ class XxfkThread extends Thread { private XxfkModule msg; public XxfkThread(XxfkModule msg) { this.msg = msg; } @Override public void run() { // TODO Auto-generated method stub super.run(); Looper.prepare(); Message message = new Message(); message.what = 1; myHander.sendMessage(message); Message message2 = new Message(); message2.what = 2; Bundle bundle = new Bundle(); // 获取基站相关信息 LocationModule loc = new LocationUtils(Xxfk.this).takeCellInfos(); LocationUtils locationUtils = new LocationUtils(Xxfk.this); boolean b = locationUtils.getLocation(loc, "All", "", baidu); db = new Optdb_interfce(Xxfk.this); // 获得登录者姓名 String userName = share_obj.getDataFromPres("username"); db.close_SqlDb(); JSONObject object = new JSONObject(); try { // 位置相关 object.put("guid", share_obj.getDataFromPres("GUID")); object.put("zdmc", userName); object.put("time", loc.getTime()); object.put("cell_id", loc.getCell_id()); object.put("lac_code", loc.getLac()); object.put("country_code", loc.getCcode()); object.put("ncode", loc.getNcode()); object.put("signal_strength", loc.getXhqd()); object.put("yys", loc.getYys()); if (b) { object.put("lon", loc.getLon()); object.put("lat", loc.getLat()); object.put("radius", loc.getRadius()); object.put("loc_method", loc.getDw_type()); } else { object.put("lon", 0.0); object.put("lat", 0.0); object.put("radius", "0"); object.put("loc_method", -1); } // 信息反馈相关 object.put("cosim", msg.getCosim()); object.put("regsim", msg.getRegsim()); object.put("gguid", msg.getGguid()); object.put("zguid", msg.getZguid()); object.put("xxcjlb", msg.getXxcjlb()); object.put("xxbt", msg.getXxbt()); object.put("xxnr", msg.getXxnr()); } catch (JSONException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } // 请求服务器 String result = new UpdataToServer(Xxfk.this).dataToServer("XXFK", object); if (result != null && !result.equals("-1") && !result.equals("500")) { try { JSONObject obj = new JSONObject(result); String res = obj.getString("result"); if (res.equals("0")) { bundle.putString("msg", "上传成功"); } else { String errMsg = obj.getString("detail"); bundle.putString("msg", errMsg); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } message2.setData(bundle); myHander.sendMessage(message2); } else { /* * if(result.equals("-1")){ bundle.putString("msg", * "抱歉,网络连接失败!"); } else if(result.equals("500")){ * bundle.putString("msg", "上传失败,请联系你的管理员!"); } */ message2.what = 3; myHander.sendMessage(message2); save(msg); } Looper.loop(); } } Handler myHander = new Handler() { @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); switch (msg.what) { case 1: showDialog(1); break; case 2: removeDialog(1); Bundle data = msg.getData(); String message = data.getString("msg"); showToast(message); break; case 3: removeDialog(1); break; case 4: showDialog(2); break; case 5: removeDialog(2); break; } } }; /** * 拍照按钮 */ public void takePhotos() { if (!Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { Toast.makeText(this, "SD卡不可用", Toast.LENGTH_SHORT).show(); return; } share_obj.editPres("istakephoto", "1"); SimpleDateFormat timeStampFormat = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); String filename = timeStampFormat.format(new Date()); ContentValues values = new ContentValues(); values.put(Media.TITLE, filename); Uri photoUri = getContentResolver().insert( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); ShareMethod shareMethd = new ShareMethod(Xxfk.this); if (photoUri == null) { shareMethd.recordNetState("------------------photoUriisnull"); } if (getContentResolver() == null) { shareMethd .recordNetState("------------------getContentResolverisnull"); } if (photoUri != null) { imagePath = getRealPathFromURI(photoUri, getContentResolver()); } else { String sdDir = Environment.getExternalStorageDirectory().toString(); imagePath = sdDir + "/DCIM/Camera/" + System.currentTimeMillis() + ".jpg"; } Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(imagePath))); // intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0); startActivityForResult(intent, 0); } public void takePhotosMore() { if (!Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { share.recordLog("拍照SD卡不可用"); Toast.makeText(this, "SD卡不可用", Toast.LENGTH_SHORT).show(); return; } share_obj.editPres("istakephoto", "1"); SimpleDateFormat timeStampFormat = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); Uri photoUri = null; try { String filename = timeStampFormat.format(new Date()); ContentValues values = new ContentValues(); values.put(Media.TITLE, filename); photoUri = getContentResolver().insert( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); } catch (Exception e1) { e1.printStackTrace(); } // 限制最多拍五张照片 if (num <= 5) { try { num += 1; share.recordLog("调用系统相机"); if(photoUri==null){ imagePath=""; }else{ imagePath = getRealPathFromURI(photoUri, getContentResolver()); } // paths.add(imagePath); System.out.println("imagePath:" + imagePath); String picTime = new Date().getTime() + ""; // picTimes.add(picTime); Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); share.recordLog("增加设置保存路径"); if(!new File(imagePath).exists()){ File dir = new File(PhotoUtil.SDCARD_ROOT_PATH+ PhotoUtil.SAVE_PATH_IN_SDCARD); if(!dir.exists()){ dir.mkdirs(); } imagePath=PhotoUtil.SDCARD_ROOT_PATH+ PhotoUtil.SAVE_PATH_IN_SDCARD+PhotoUtil.createPhotoName(); } intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(imagePath))); // intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0); share.recordLog("开始调用。。。。"); startActivityForResult(intent, 0); } catch (Exception e) { share.recordLog("调用系统相机失败"); Toast.makeText(Xxfk.this, "调用系统相机失败", Toast.LENGTH_LONG).show(); } } else { new AlertDialog.Builder(Xxfk.this) .setTitle("提示") .setMessage(Html.fromHtml("对不起最多只能拍摄五张照片!")) .setPositiveButton("确定", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { jumpActivity(); } }).show(); } } /** * 执行跳转 */ public void jumpActivity() { Intent intent = new Intent(); String xxbtStr = xxbt.getText().toString(); String xxnrStr = xxnr.getText().toString(); share_obj = new Optsharepre_interface(Xxfk.this); bundle.putString("gguid", share_obj.getDataFromPres("GGUID")); bundle.putString("zguid", share_obj.getDataFromPres("GUID")); bundle.putString("cosim", share_obj.getDataFromPres("COSIM")); bundle.putString("regsim", share_obj.getDataFromPres("REGSIM")); bundle.putString("xxbt", xxbtStr); bundle.putString("xxnr", xxnrStr); bundle.putString("xxcjlb", xxcjlb); intent.putExtras(bundle); intent.putExtra("pic_sort", "xxfk"); db = new Optdb_interfce(Xxfk.this); // 获得登录者姓名 String userName = share_obj.getDataFromPres("username"); db.close_SqlDb(); bundle.putString("zdmc", userName); intent.putStringArrayListExtra("imagePaths", paths);// 存放多图片路径 intent.setClass(Xxfk.this, PicMoreDetail.class); intent.putExtras(bundle); startActivity(intent); finish(); } @SuppressLint("NewApi") @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode != 0) { return; } else if (resultCode == Activity.RESULT_OK) { share.recordLog("拍照成功"); System.out.println("GetCamera+sendPath:" + imagePath); BitmapUtils bitmapUtils = new BitmapUtils(Xxfk.this); // 压缩图片之后保存起来 Bitmap bitmap = bitmapUtils.decodeBitmap(imagePath); if (bitmap != null) { share.recordLog("压缩图片"); Bitmap bitmap_new = bitmapUtils.zoomBitmap(bitmap); try { share.recordLog("保存图片"); imagePath_new = bitmapUtils.saveBitmap(bitmap_new); if (imagePath_new.equals("0")) { imagePath_new = imagePath; } } catch (IOException e) { // TODO Auto-generated catch block share.recordLog("保存图片出错"); e.printStackTrace(); } paths.add(imagePath_new.equals("") ? imagePath : imagePath_new); if (!imagePath_new.equals("0") && !imagePath_new.equals("")) { new Thread(new Runnable() { @Override public void run() { Looper.prepare(); File originImage = new File(imagePath); boolean b = originImage.delete(); Looper.loop(); } }).start(); } new AlertDialog.Builder(Xxfk.this) .setTitle("提示") .setMessage(Html.fromHtml("是否继续拍照?")) .setPositiveButton("继续拍", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { takePhotosMore(); } }) .setNegativeButton("不拍了", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { for(String path : paths){ share.recordLog("信息反馈---地址++"+Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getPath()+"/"+path); MediaScannerConnection.scanFile(Xxfk.this, new String[]{path}, null, null); } jumpActivity(); } }).show(); } else { share.recordLog("读取图片失败,对外提示内存不足拍照失败"); Toast.makeText(this, "手机内存不足,拍照失败", Toast.LENGTH_SHORT).show(); } } else { share.recordLog("取消拍照"); Toast.makeText(this, "取消拍照", Toast.LENGTH_SHORT).show(); } // // if (requestCode != 0) { // return; // }else if(resultCode == Activity.RESULT_OK){ // System.out.println("GetCamera+sendPath:"+imagePath); // // BitmapUtils bitmapUtils=new BitmapUtils(Xxfk.this); // //压缩图片之后保存起来 // Bitmap bitmap = bitmapUtils.decodeBitmap(imagePath); // if(bitmap!=null){ // Bitmap bitmap_new = bitmapUtils.zoomBitmap(bitmap); // try { // imagePath_new=bitmapUtils.saveBitmap(bitmap_new); // if(imagePath_new.equals("0")){ // imagePath_new=imagePath; // } // // } catch (IOException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // if(!imagePath_new.equals("0")){ // new Thread(new Runnable() { // @Override // public void run() { // Looper.prepare(); // File originImage=new File(imagePath); // originImage.delete(); // Looper.loop(); // } // }).start(); // } // // // Intent intent = new Intent(); // bundle.putString("imagePath", // imagePath_new.equals("")?imagePath:imagePath_new); // String xxbtStr = xxbt.getText().toString(); // String xxnrStr = xxnr.getText().toString(); // share_obj = new Optsharepre_interface(Xxfk.this); // bundle.putString("gguid", share_obj.getDataFromPres("GGUID")); // bundle.putString("zguid", share_obj.getDataFromPres("GUID")); // bundle.putString("cosim", share_obj.getDataFromPres("COSIM")); // bundle.putString("regsim", share_obj.getDataFromPres("REGSIM")); // bundle.putString("xxbt", xxbtStr); // bundle.putString("xxnr", xxnrStr); // bundle.putString("xxcjlb", xxcjlb); // intent.putExtras(bundle); // intent.putExtra("pic_sort", "xxfk"); // // db = new Optdb_interfce(Xxfk.this); // // 获得登录者姓名 // String userName = share_obj.getDataFromPres("username"); // db.close_SqlDb(); // bundle.putString("zdmc", userName); // intent.setClass(Xxfk.this, PicDetail.class); // intent.putExtras(bundle); // startActivity(intent); // finish(); // }else{ // Toast.makeText(this, "手机内存不足,拍照失败", Toast.LENGTH_SHORT).show(); // } // }else{ // Toast.makeText(this, "取消拍照", Toast.LENGTH_SHORT).show(); // } } // 获得图片保存的路径 public static String getRealPathFromURI(Uri uri, ContentResolver resolver) { String[] proj = { MediaStore.Images.Media.DATA }; Cursor cursor = resolver.query(uri, proj, null, null, null); int column_index = cursor .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); String str = cursor.getString(column_index); cursor.close(); return str; } /** * 清空历史数据 */ public void cheanHisdatas() { xxbt.setText(""); xxnr.setText(""); } /** * 结果显示 * * @param message */ public void showToast(final String message) { new AlertDialog.Builder(Xxfk.this).setTitle("提示").setMessage(message) .setPositiveButton("确定", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { if (message.contains("成功")) { cheanHisdatas(); } } }).show(); } /** * 上传失败后保存 */ public void save(final XxfkModule msg) { new AlertDialog.Builder(Xxfk.this).setTitle("提示") .setMessage("上传失败,是否保存?") .setPositiveButton("保存", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { save(); } }).setNegativeButton("取消", null).show(); } @Override protected Dialog onCreateDialog(int id) { // TODO Auto-generated method stub ProgressDialog dialog = new ProgressDialog(Xxfk.this); dialog.setIndeterminate(true); dialog.setCancelable(false); switch (id) { case 1: dialog.setMessage("正在上传,请稍候……"); break; case 2: dialog.setMessage("正在保存,请稍候……"); break; } return dialog; } @Override public void finish() { // TODO Auto-generated method stub super.finish(); freeBdListener(); } // 销毁百度定位监听器 public void freeBdListener() { if (baidu != null) { baidu.stopListener(); baidu = null; } } // 返回就关闭activity @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { finish(); } return super.onKeyDown(keyCode, event); } }