package ayh.mygps;
import java.util.Date;
import android.app.Activity;
import android.content.Context;
import android.location.Criteria;
//import android.location.GpsStatus;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.text.format.DateFormat;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class mainatt extends Activity implements OnClickListener
{
private LocationManager lm;
private Location loc;
private Criteria ct;
private String provider;
private TextView tvLatitude;
private TextView tvLongitude;
private TextView tvHigh;
private TextView tvDirection;
private TextView tvSpeed;
private TextView tvGpsTime;
private TextView tvInfoType;
private EditText etSetTimeSpace;
private Button btnmanual;
private Button btnsettimespace;
private Button btnexit;
private DBGps dbgps = new DBGps(this);
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tvLatitude = (TextView) findViewById(R.id.tvlatitude);
tvLongitude = (TextView) findViewById(R.id.tvlongitude);
tvHigh = (TextView) findViewById(R.id.tvhigh);
tvDirection = (TextView) findViewById(R.id.tvdirection);
tvSpeed = (TextView) findViewById(R.id.tvspeed);
tvGpsTime = (TextView) findViewById(R.id.tvgpstime);
tvInfoType = (TextView) findViewById(R.id.tvinfotype);
etSetTimeSpace = (EditText) findViewById(R.id.ettimespace);
btnmanual = (Button) findViewById(R.id.btnmanual);
btnmanual.setOnClickListener(this);
btnsettimespace = (Button) findViewById(R.id.btnsettimespace);
btnsettimespace.setOnClickListener(this);
btnexit = (Button) findViewById(R.id.btnexit);
btnexit.setOnClickListener(this);
dbgps.openDB();
initLocation();
}
private final LocationListener locationListener = new LocationListener()
{
@Override
public void onLocationChanged(Location arg0)
{
showInfo(getLastPosition(), 2);
}
@Override
public void onProviderDisabled(String arg0)
{
showInfo(null, -1);
}
@Override
public void onProviderEnabled(String arg0)
{
}
@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2)
{
}
};
private void initLocation()
{
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (lm.isProviderEnabled(LocationManager.GPS_PROVIDER))
{
ct = new Criteria();
ct.setAccuracy(Criteria.ACCURACY_FINE);// 高精度
ct.setAltitudeRequired(true);// 显示海拔
ct.setBearingRequired(true);// 显示方向
ct.setSpeedRequired(true);// 显示速度
ct.setCostAllowed(false);// 不允许有花费
ct.setPowerRequirement(Criteria.POWER_LOW);// 低功耗
provider = lm.getBestProvider(ct, true);
// 位置变化监听,默认5秒一次,距离10米以上
lm.requestLocationUpdates(provider, 5000, 10, locationListener);
} else
showInfo(null, -1);
}
private gpsdata getLastPosition()
{
gpsdata result = new gpsdata();
loc = lm.getLastKnownLocation(provider);
if (loc != null)
{
result.Latitude = (int) (loc.getLatitude() * 1E6);
result.Longitude = (int) (loc.getLongitude() * 1E6);
result.High = loc.getAltitude();
result.Direct = loc.getBearing();
result.Speed = loc.getSpeed();
Date d = new Date();
d.setTime(loc.getTime() + 28800000);// UTC时间,转北京时间+8小时
result.GpsTime = DateFormat.format("yyyy-MM-dd kk:mm:ss", d).toString();
d = null;
}
return result;
}
private void showInfo(gpsdata cdata, int infotype)
{
if (cdata == null)
{
if (infotype == -1)
{
tvLatitude.setText("GPS功能已关闭");
tvLongitude.setText("");
tvHigh.setText("");
tvDirection.setText("");
tvSpeed.setText("");
tvGpsTime.setText("");
tvInfoType.setText("");
btnmanual.setEnabled(false);
btnsettimespace.setEnabled(false);
etSetTimeSpace.setEnabled(false);
}
} else
{
tvLatitude.setText(String.format("纬度:%d", cdata.Latitude));
tvLongitude.setText(String.format("经度:%d", cdata.Longitude));
tvHigh.setText(String.format("海拔:%f", cdata.High));
tvDirection.setText(String.format("方向:%f", cdata.Direct));
tvSpeed.setText(String.format("速度:%f", cdata.Speed));
tvGpsTime.setText(String.format("GPS时间:%s", cdata.GpsTime));
cdata.InfoType = infotype;
switch (infotype)
{
case 1:
tvInfoType.setText("信息来源状态:手动获取更新");
break;
case 2:
tvInfoType.setText("信息来源状态:位置改变更新");
break;
/*
* case 3: tvInfoType.setText("信息来源状态:位置改变更新"); break;
*/
}
dbgps.addGpsData(cdata);
}
}
@Override
public void onClick(View v)
{
if (v.equals(btnmanual))
{
showInfo(getLastPosition(), 1);
}
if (v.equals(btnsettimespace))
{
if (TextUtils.isEmpty(etSetTimeSpace.getText().toString()))
{
Toast.makeText(this, "请输入更新时间间隔", Toast.LENGTH_LONG).show();
etSetTimeSpace.requestFocus();
return;
}
int timespace = Integer.valueOf(etSetTimeSpace.getText().toString()) * 1000;
if (lm.isProviderEnabled(LocationManager.GPS_PROVIDER))
lm.requestLocationUpdates(provider, timespace, 10, locationListener);
}
if (v.equals(btnexit))
android.os.Process.killProcess(android.os.Process.myPid());
}
@Override
protected void onDestroy()
{
if (dbgps != null)
{
dbgps.closeDB();
dbgps = null;
}
super.onDestroy();
}
}
yxkfw
- 粉丝: 82
- 资源: 2万+
最新资源
- 基于java+ssm+mysql的可视化高校公寓管理系统 源码+数据库+论文(高分毕设项目).zip
- "高压直流输电仿真(HVDC)研究:双侧调谐器与双闭环控制策略的优化及MATLAB仿真结果报告",高压直流输电仿真(HVDC),AD-DC-AC双侧均采用调谐器 整流侧采用电压电流双闭环控制,逆变侧
- 基于java+ssm+mysql的量化积分管理系统 源码+数据库+论文(高分毕设项目).zip
- 基于java+ssm+mysql的绿色蔬菜销售管理系统 源码+数据库+论文(高分毕设项目).zip
- Python自动化办公源码-03一键抓出PPT中所有文字
- 基于java+ssm+mysql的敏捷工贸公司销售管理系统 源码+数据库+论文(高分毕设项目).zip
- 基于java+ssm+mysql的农家乐内部管理系统 源码+数据库+论文(高分毕设项目).zip
- 基于java+ssm+mysql的农产品质量安全检测网站 源码+数据库+论文(高分毕设项目).zip
- 电子凸轮位置跟随区间运动Ver1.2.1:精准主轴伺服与从轴伺服联动控制,电子凸轮-区间运动Ver1.2.1(位置跟随,去程) 0.一个主轴伺服(定速)+一个从轴伺服 1.主轴伺服定速运动(主轴启动时
- 基于java+ssm+mysql的社区团购网站 源码+数据库+论文(高分毕设项目).zip
- 基于java+ssm+mysql的商城系统 源码+数据库+论文(高分毕设项目).zip
- 基于java+ssm+mysql的软件开发团队管理网站 源码+数据库+论文(高分毕设项目).zip
- IEEE69节点系统Simulink仿真模型:潮流计算与故障分析及分布式电源影响观察,IEEE69节点系统Simulink仿真 1.基础功能:基于Matlab simulink平台搭建IEEE33节点
- 基于java+ssm+mysql的实验室管理与排课系统 源码+数据库+论文(高分毕设项目).zip
- 基于java+ssm+mysql的社区再就业培训管理系统 源码+数据库+论文(高分毕设项目).zip
- 基于java+ssm+mysql的生鲜在线销售系统 源码+数据库+论文(高分毕设项目).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈