package com.lilin.gps;
import java.util.Date;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.provider.Settings;
import android.text.TextUtils;
import android.text.format.DateFormat;
import android.view.View;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class GPSView extends Activity implements OnClickListener {
private LocationManager locationManager;
private Criteria criteria;
private String provider;
private TextView tv_isgps;// gps的状态
private TextView tv_Y;// 纬度
private TextView tv_X;// 经度
private TextView tv_GpsTime;// 获取的时间
private TextView tv_InfoType;// 信息的来源
private EditText et_SetTimeSpace;// 设置时间间隔
private Button get_btn;
private Button setime_btn;
private Button setgps_btn;
int getTime = 5000;// 每5秒获得一次
int distance = 10;// 距离10米以上
GPS gps = new GPS();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 隐藏输入法
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
setTitle("GPS");
initUI();
}
/**
* @author lilin
* @date 2012-2-21 下午10:04:06
* @annotation
*/
private void initUI() {
tv_isgps = (TextView) findViewById(R.id.tv_isgps);
tv_Y = (TextView) findViewById(R.id.tvlatitude);
tv_X = (TextView) findViewById(R.id.tvlongitude);
tv_GpsTime = (TextView) findViewById(R.id.tvgpstime);
tv_InfoType = (TextView) findViewById(R.id.tvinfotype);
et_SetTimeSpace = (EditText) findViewById(R.id.ettimespace);
get_btn = (Button) findViewById(R.id.get_btn);
setgps_btn = (Button) findViewById(R.id.setgps_btn);
get_btn.setOnClickListener(this);
setime_btn = (Button) findViewById(R.id.settime_btn);
setime_btn.setOnClickListener(this);
setgps_btn.setOnClickListener(this);
}
/**
*
* @author lilin
* @date 2012-2-21 下午10:23:27
* @annotation 检查GPS模块
*/
private boolean checkGPS() {
LocationManager lm = (LocationManager) this
.getSystemService(Context.LOCATION_SERVICE);// 获取位置管理服务
if (lm.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER)) {
Toast.makeText(this, "GPS模块正常", 5000).show();
tv_isgps.setText("GPS模块正常");
return true;
}
tv_isgps.setText("GPS模块已关闭!");
clearDate();
Toast.makeText(GPSView.this, "请开启GPS!", 5000).show();
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("GPS未打开,要打开吗?");
builder.setTitle("提示");
builder.setCancelable(false).setPositiveButton("确定",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// 打开GPS设置
Intent intent = new Intent(
Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivityForResult(intent, 0); // 此为设置完成后返回到获取界面
}
});
builder.setNegativeButton("取消", null).show();
return false;
}
// 初始化
private void initGPS() {
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);// 高精度
criteria.setAltitudeRequired(true);// 显示海拔
criteria.setBearingRequired(false);// 显示方向
criteria.setSpeedRequired(false);// 显示速度
criteria.setCostAllowed(false);// 不允许有花费
criteria.setPowerRequirement(Criteria.POWER_LOW);// 低功耗
provider = locationManager.getBestProvider(criteria, true);
Location location = locationManager.getLastKnownLocation(provider); // 通过GPS获取位置
getGPS(location);
locationManager.requestLocationUpdates(provider, getTime, distance,
locationListener);// 位置变化监听
}
private final LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location arg0) {
// showInfo(getGPS(), 2);
}
public void onProviderDisabled(String arg0) {
// showInfo(null, -1);
}
public void onProviderEnabled(String arg0) {
}
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
}
};
private GPS getGPS(Location location) {// 获取GPS相应的数据
if (location != null) {
gps.Latitude = location.getLatitude();
gps.Longitude = location.getLongitude();
Date d = new Date();
d.setTime(location.getTime() + 28800000);// UTC时间,转北京时间+8小时
gps.GpsTime = DateFormat.format("yyyy-MM-dd kk:mm:ss", d)
.toString();
d = null;
}
return gps;
}
// 显示信息
private void showInfo(GPS gps, int infotype) {
if (gps != null) {
tv_Y.setText("y=" + gps.Latitude);
tv_X.setText("x=" + gps.Longitude);
tv_GpsTime.setText("更新时间:" + gps.GpsTime);
switch (gps.InfoType) {
case 1:
tv_InfoType.setText("信息来源状态:手动获取更新");
break;
case 2:
tv_InfoType.setText("信息来源状态:位置改变更新");
break;
}
} else {
tv_X.setText("GPS数据获取失败,请稍后再试!");
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.get_btn:
if (checkGPS()) {
initGPS();
if (gps != null) {
showInfo(gps, 1);
}
}
break;
case R.id.settime_btn:
String text = et_SetTimeSpace.getText().toString();
if (TextUtils.isEmpty(text)) {
Toast.makeText(this, "请输入更新时间间隔", Toast.LENGTH_LONG).show();
et_SetTimeSpace.requestFocus();
return;
}
Toast.makeText(this, "设置成功 :每" + text + "秒更新", 5000).show();
getTime = Integer.valueOf(text) * 1000;
if (locationManager.isProviderEnabled(Context.LOCATION_SERVICE))
locationManager.requestLocationUpdates(provider, getTime,
distance, locationListener);
break;
case R.id.setgps_btn:
// 打开GPS设置
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivityForResult(intent, 0); // 此为设置完成后返回到获取界面
break;
default:
break;
}
}
public void clearDate() {
tv_GpsTime.setText("");
tv_InfoType.setText("");
tv_X.setText("");
tv_Y.setText("");
}
public void onResume() {
LocationManager lm = (LocationManager) this
.getSystemService(Context.LOCATION_SERVICE);// 获取位置管理服务
if (lm.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER)) {
Toast.makeText(this, "GPS模块正常", 5000).show();
tv_isgps.setText("GPS模块正常");
} else {
tv_isgps.setText("GPS模块已关闭!");
clearDate();
}
super.onResume();
}
public void onPause() {
LocationManager lm = (LocationManager) this
.getSystemService(Context.LOCATION_SERVICE);// 获取位置管理服务
if (lm.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER)) {
Toast.makeText(this, "GPS模块正常", 5000).show();
tv_isgps.setText("GPS模块正常");
} else {
tv_isgps.setText("GPS模块已关闭!");
clearDate();
}
super.onPause();
}
}
- 大小: 25.5 KB
分享到:
相关推荐
"GPSDemo"显然是一款用于演示如何在应用程序中获取和处理GPS信息的示例项目。尽管描述中提到“显示部分还没有做好”,但这并不妨碍我们深入探讨GPS信息获取的基本原理和相关编程知识点。 1. **GPS工作原理**: GPS...
GPSDemo是一款运行于WinCE平台上的小型应用程序,主要用于展示如何获取和处理GPS数据。在C#环境下,我们可以利用.NET Compact Framework提供的类库来实现这一功能。首先,我们需要引入System.Device.Location命名...
标题中的“gpsdemo_GPS_android_android监控_android定位_监控.zip”表明这是一个关于Android平台上的GPS定位与监控系统的示例项目。这个项目可能包含了实现GPS定位、数据监控以及Android应用开发的相关代码和资源。...
1. **GPS接收器**:这是获取卫星信号的核心硬件,可以是内置在设备中的芯片或外接的模块。它接收卫星信号,并进行解码,提供原始的定位数据。 2. **GPS服务**:在软件层面,GpsDemo可能会实现一个服务(Service),...
"GPSDemo"可能是一个实际的示例应用,用于演示如何在代码中集成和使用GPS定位功能。这个Demo可能包括以下部分: 1. **初始化LocationManager**:在应用启动时,初始化LocationManager对象,并设置所需的定位参数,...
在移动设备和计算机上,获取地理位置信息是一项基础且重要的功能,尤其在导航、地图服务、户外活动以及各种位置应用中。GPS(全球定位系统)是实现这一功能的核心技术之一。本文将详细探讨GPS的基本原理,以及如何...
这个名为"基于高德地图定位SDK的GPSDemo"的项目,旨在展示如何集成并使用高德地图服务来获取用户的位置信息。下面我们将深入探讨相关知识点。 首先,`build.gradle`文件是项目的构建配置,它定义了项目的依赖关系,...
IOS应用源码之._GPSDemo.zip
"gpsdemo"可能是一个演示或者示例项目,用于展示如何在Android设备上实现GPS功能,包括获取位置信息和进行实时监控。 【Android GPS定位】 在Android系统中,GPS(全球定位系统)是获取设备地理位置的重要方式。...
本教程通过一个名为"DemoGps"的示例项目,来讲解如何在应用程序中实现GPS定位并获取当前位置信息。 首先,我们要了解GPS(Global Positioning System)的基本原理。GPS是一个由美国建立和运行的全球卫星导航系统,...
一,在很多提供定位服务的应用程序中,不仅需要获取当前的位置信息,还需要监视位置的变化,在位置改变时调用特定的处理方法 ,其中LocationManager提供了一种便捷、高效的位置监视方法requestLocationUpdates(),...
在Android平台上,GPS(全球定位系统)是获取设备位置信息的关键技术。GPS允许应用程序获取用户的实时地理位置,这对于导航、地图应用、运动追踪等用途至关重要。本资料包“GPS.zip_GPS_android”显然包含了与...
在压缩包中的"GPSDemo"可能包含了一个简单的示例应用,展示了如何实现上述功能。通过查看和分析这个示例,你可以更深入地理解GPS定位的实现过程。在实际开发中,还需要考虑网络定位、GPS定位的精度、功耗以及不同...
androidGPS及WIFI基站定位坐标源码.zip项目安卓应用源码下载androidGPS及WIFI基站定位坐标源码.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
在`GPSDemo`项目中,可能包含以下核心部分: - `MainActivity`类:设置权限,初始化`LocationManager`和`LocationListener`,并在`onLocationChanged`中处理定位结果。 - AndroidManifest.xml:添加定位权限 `<uses-...
项目中的GpsDemo可能是实现上述功能的一个具体例子,包含了相关代码和配置。通过查看和学习这个示例,开发者可以更好地理解和应用百度地图API进行定位。同时,为了提高用户体验,还应考虑处理定位权限的请求、异常...
GPS(全球定位系统)是通过卫星导航来获取地理位置信息的技术,而这里的实例则展示了如何在手机平台上,利用C#语言编写程序来读取并处理这些GPS数据。 首先,我们需要理解GPS数据的基本结构。GPS数据通常包括经纬度...
【Android】代码开启/关闭GPSDemo 相关文章:http://blog.csdn.net/etzmico/article/details/7200470 为了方便看效果,您可以在在onCreate中添加finish();方法,然后打开系统GPS设置页面再运行代码,这样就能看到...
在Android平台上,GPS(全球定位系统)是获取设备地理位置信息的重要途径。为了实现“开启GPS显示经纬度”的功能,开发者需要对...在实际的gpsdemo项目中,这些概念会被具体实现并整合在一起,形成一个完整的功能。