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