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);
}
}