package com.jiuqi.njt.son;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnFocusChangeListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import com.jiuqi.lbsinterface.bean.UserPositionBean;
import com.jiuqi.lbsinterface.manager.IPositionManager;
import com.jiuqi.mobile.nigo.comeclose.ws.client.LBSClientContext;
import com.jiuqi.njt.R;
import com.jiuqi.njt.data.MyApp;
import com.jiuqi.njt.util.Constants;
import com.jiuqi.njt.util.DateUtil;
import com.jiuqi.njt.util.TitleBarUtil;
import com.jiuqi.njt.util.UIUtil;
import com.jiuqi.njt.widget.ProgressDialogStyle;
import com.jqyd.android.module.lbs.util.CheckState_interface;
public class TakePosition extends Activity implements OnClickListener {
private EditText name;
private EditText start_date;
private EditText end_date;
private Button sure;
private Button textDesc;
private Calendar c;
private String nameStr = "";
private String regsim = "";
private String url = "";
private ArrayList<UserPositionBean> positionBeans = null; // 查询目标的位置结果list
ArrayList<UserPositionBean> positionBeansOut = new ArrayList<UserPositionBean>();
private MyApp application;
private GjhfTask gjhfTask;
private GjhfDetailTask gjhfDetailTask;
private long startTime, endTime;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
doinit();
}
private void doinit() {
initParam();
initWidgets();
initListeners();
loadData();
}
private void initParam() {
application = (MyApp) getApplication();
Intent intent = getIntent();
nameStr = intent.getStringExtra("name");
regsim = intent.getStringExtra("sim");
}
private void initWidgets() {
setContentView(R.layout.takeposition);
View rlTitleBar = findViewById(R.id.titleBarStub);
TitleBarUtil.createTitleBar(this, rlTitleBar, "轨迹回放",
new OnClickListener() {
@Override
public void onClick(View v) {
TakePosition.this.finish();
}
});
name = (EditText) this.findViewById(R.id.name);
start_date = (EditText) this.findViewById(R.id.start_date);
end_date = (EditText) this.findViewById(R.id.end_date);
sure = (Button) this.findViewById(R.id.sure);
textDesc = (Button) this.findViewById(R.id.textDesc);
sure.setText("现在回放");
}
private void initListeners() {
sure.setOnClickListener(this);
textDesc.setOnClickListener(this);
start_date.setOnClickListener(this);
end_date.setOnClickListener(this);
start_date.setOnFocusChangeListener(new TouchDateFocusListener());
end_date.setOnFocusChangeListener(new TouchDateFocusListener());
}
@Override
public void onClick(View v) {
if (v == sure) {
if (UIUtil.isFastDoubleClick()) {
return;
}
if (new CheckState_interface(TakePosition.this).checkConnection()) {
gjhfTask = new GjhfTask();
gjhfTask.execute();
} else {
UIUtil.showMsg(TakePosition.this, Constants.NETWORK_STATE_ERROR);
}
} else if (v == textDesc) {
if (UIUtil.isFastDoubleClick()) {
return;
}
if (new CheckState_interface(TakePosition.this).checkConnection()) {
gjhfDetailTask = new GjhfDetailTask();
gjhfDetailTask.execute();
} else {
UIUtil.showMsg(TakePosition.this, Constants.NETWORK_STATE_ERROR);
}
} else if (v == start_date) {
getDate(1);
} else if (v == end_date) {
getDate(2);
}
}
@Override
protected void onStart() {
super.onStart();
}
/**
* 加载数据
*/
public void loadData() {
c = Calendar.getInstance();
// 时间默认当天
SimpleDateFormat formate = new SimpleDateFormat("yyyy-MM-dd");
String rq = formate.format(new Date());
start_date.setText(rq);
end_date.setText(rq);
startTime = DateUtil.getDayStartTime();
endTime = DateUtil.getDayEndTime();
name.setText(nameStr);
}
/**
* 获得焦点事件监听器
*
* @author Administrator
*
*/
class TouchDateFocusListener implements OnFocusChangeListener {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus && v == start_date) {
getDate(1);
} else if (hasFocus && v == end_date) {
getDate(2);
}
}
};
// 弹出日期框
public void getDate(final int num) {
new DatePickerDialog(TakePosition.this,
new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker arg0, int year, int month,
int dat) {
String m = "";
String d = "";
if ((month + 1) < 10) {
m = "0" + (month + 1);
} else {
m = (month + 1) + "";
}
if (dat < 10) {
d = "0" + dat;
} else {
d = dat + "";
}
String time = year + "-" + m + "-" + d;
if (num == 1) {
startTime = DateUtil.getTimeStampFromYearMonthDayStart(
year, month, dat);
start_date.setText(time);
} else {
endTime = DateUtil.getTimeStampFromYearMonthDayEnd(
year, month, dat);
end_date.setText(time);
}
}
}, c.get(Calendar.YEAR), c.get(Calendar.MONTH),
c.get(Calendar.DAY_OF_MONTH)).show();
}
// 轨迹查询请求
private class GjhfTask extends AsyncTask<Void, Void, String> {
Dialog pd = null;
protected void onPreExecute() {
pd = ProgressDialogStyle.createLoadingDialog(TakePosition.this,
"正在获取用户轨迹");
pd.show();
if (positionBeans == null) {
positionBeans = new ArrayList<UserPositionBean>();
} else {
positionBeans.clear();
}
}
@SuppressLint("NewApi")
protected String doInBackground(Void... params) {
String msg = "";
try {
if (application.getIsLogin()) {
LBSClientContext context = application.getLbsClientContext();
if(context==null){
context = LBSClientContext.getClientContext(Constants.LBS_SERVER_URL);
application.setLbsClientContext(context);
}
IPositionManager position = context
.getManager(IPositionManager.class);
UserPositionBean[] pArray = position.getOldsByMobileNumber(
regsim, startTime, endTime);
positionBeans.addAll(Arrays.asList(pArray));
for (int i = 0; i < positionBeans.size(); i++) {
// 经度范围:73°33′E至135°05′E long
// 纬度范围:3°51′N至53°33′N
double longitude = positionBeans.get(i).getLongitude();
double latitude = positionBeans.get(i).getLatitude();
if (73.33 <= longitude && longitude <= 135.05 && 3.51 <= latitude && latitude <= 53.33) {
positionBeansOut.add(positionBeans.get(i));
}
}
while (positionBeansOut.size() > 200) {
ArrayList<UserPositionBean> tracklist = new ArrayList<UserPositionBean>();
for (int i = 0; i < positionBeansOut.size(); i++) {
if (i % 2 == 0) {
tracklist.add(positionBeansOut.get(i));
}
}
positionBeansOut.clear();
positionBeansOut = tracklist;
}
// application.setPositionBeansList(positionBeansOut);
}
} catch (Exception e) {
msg = "轨迹查询异常";
e.printStackTrace();
}
return msg;
}
protected void onCancelled() {
super.onCancelled();
}
@SuppressLint("NewApi")
protected void onPostExecute(String result) {
if (null != positionBeans && positionBeans.size() > 0) {
Intent intent = new Intent();
intent.setClass(TakePosition.this, Gzgj.class);
intent.putExtra("locList", positionBeansOut);
TakePosition.this.startActivity(intent);
} else {
result = "该时间内没有轨迹信息";
}
if (!TextUtils.isEmpty(result)) {
UIUtil.showMsg(TakePosition.this, result);
}
pd.dismiss();
}
}
// 请求轨迹详情查询
private class GjhfDetailTask extends AsyncTask<Void, Void, String> {
Dialog pd = null;
protected void onPreExecute() {
pd = ProgressDialogStyle.createLoadingDialog(TakePosition.this,
"正在获取用户列轨迹详情");
pd.show();
if (positionBeans == null) {
positionBeans = new ArrayList<UserPositionBean>();
} else {
positionBeans.clear();
}
}
protected String doInBackground(Void... params) {
String msg = "";
try {
if (application.getIsLogin()) {
LBSClientContext context = application.getLbsClientContext();
if(context==null){
context = LBSClientContext.getClientContext(Constants.LBS_SERVER_URL);
application.setLbsClientContext(context);
}
IPositionManager position = context
.getManager(IPositionManager.class);
UserPositionBean[] pArray = position.getOldsByMobileNumber(
regsim, startTime, endTime);
positionBeans.addAll(Arrays.asList(pArray));
} else {
msg = "请先登录";
}
} catch (Exception e) {
msg = "用户轨迹详情获取异常";
e.printStackTrace();
}
return msg;
}
protected void onCancelled() {
super.onCancelled();
}
protected void onPostExecute(String result) {
pd.dismiss();
if (null != positionBeans && positionBeans.size() > 0) {
Intent intent = new Intent();
intent.setClass(TakePosition.this, LocationDetail.class);
intent.putExtra("locList", positionBeans);
TakePosition.this.startActivity(intent);
} else {
result = "该时间段内没有轨迹";
}
if (!TextUtils.isEmpty(result)) {
UIUtil.showMsg(TakePosition.this, result);
}
}
}
}