`

GPSDemo-手动获取

    博客分类:
  • GPS
 
阅读更多


 

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信息部分

    "GPSDemo"显然是一款用于演示如何在应用程序中获取和处理GPS信息的示例项目。尽管描述中提到“显示部分还没有做好”,但这并不妨碍我们深入探讨GPS信息获取的基本原理和相关编程知识点。 1. **GPS工作原理**: GPS...

    wince GPSDemo

    GPSDemo是一款运行于WinCE平台上的小型应用程序,主要用于展示如何获取和处理GPS数据。在C#环境下,我们可以利用.NET Compact Framework提供的类库来实现这一功能。首先,我们需要引入System.Device.Location命名...

    gpsdemo_GPS_android_android监控_android定位_监控.zip

    标题中的“gpsdemo_GPS_android_android监控_android定位_监控.zip”表明这是一个关于Android平台上的GPS定位与监控系统的示例项目。这个项目可能包含了实现GPS定位、数据监控以及Android应用开发的相关代码和资源。...

    Gpsdemo.rar

    1. **GPS接收器**:这是获取卫星信号的核心硬件,可以是内置在设备中的芯片或外接的模块。它接收卫星信号,并进行解码,提供原始的定位数据。 2. **GPS服务**:在软件层面,GpsDemo可能会实现一个服务(Service),...

    GPS定位Demo

    "GPSDemo"可能是一个实际的示例应用,用于演示如何在代码中集成和使用GPS定位功能。这个Demo可能包括以下部分: 1. **初始化LocationManager**:在应用启动时,初始化LocationManager对象,并设置所需的定位参数,...

    GPSDemo.zip

    在移动设备和计算机上,获取地理位置信息是一项基础且重要的功能,尤其在导航、地图服务、户外活动以及各种位置应用中。GPS(全球定位系统)是实现这一功能的核心技术之一。本文将详细探讨GPS的基本原理,以及如何...

    基于高德地图定位SDK的GPSDemo

    这个名为"基于高德地图定位SDK的GPSDemo"的项目,旨在展示如何集成并使用高德地图服务来获取用户的位置信息。下面我们将深入探讨相关知识点。 首先,`build.gradle`文件是项目的构建配置,它定义了项目的依赖关系,...

    IOS应用源码之._GPSDemo.zip

    IOS应用源码之._GPSDemo.zip

    gpsdemo_GPS_android_android监控_android定位_监控_源码.zip

    "gpsdemo"可能是一个演示或者示例项目,用于展示如何在Android设备上实现GPS功能,包括获取位置信息和进行实时监控。 【Android GPS定位】 在Android系统中,GPS(全球定位系统)是获取设备地理位置的重要方式。...

    GPS定位Demo获取位置信息

    本教程通过一个名为"DemoGps"的示例项目,来讲解如何在应用程序中实现GPS定位并获取当前位置信息。 首先,我们要了解GPS(Global Positioning System)的基本原理。GPS是一个由美国建立和运行的全球卫星导航系统,...

    Android GPS定位简单 DEMO

    一,在很多提供定位服务的应用程序中,不仅需要获取当前的位置信息,还需要监视位置的变化,在位置改变时调用特定的处理方法 ,其中LocationManager提供了一种便捷、高效的位置监视方法requestLocationUpdates(),...

    GPS.zip_GPS_android

    在Android平台上,GPS(全球定位系统)是获取设备位置信息的关键技术。GPS允许应用程序获取用户的实时地理位置,这对于导航、地图应用、运动追踪等用途至关重要。本资料包“GPS.zip_GPS_android”显然包含了与...

    GPS定位获取经纬度

    在压缩包中的"GPSDemo"可能包含了一个简单的示例应用,展示了如何实现上述功能。通过查看和分析这个示例,你可以更深入地理解GPS定位的实现过程。在实际开发中,还需要考虑网络定位、GPS定位的精度、功耗以及不同...

    androidGPS及WIFI基站定位坐标源码.zip项目安卓应用源码下载

    androidGPS及WIFI基站定位坐标源码.zip项目安卓应用源码下载androidGPS及WIFI基站定位坐标源码.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考

    A-GPS定位与GPS定位的Android简单实现

    在`GPSDemo`项目中,可能包含以下核心部分: - `MainActivity`类:设置权限,初始化`LocationManager`和`LocationListener`,并在`onLocationChanged`中处理定位结果。 - AndroidManifest.xml:添加定位权限 `<uses-...

    android-百度地图定位

    项目中的GpsDemo可能是实现上述功能的一个具体例子,包含了相关代码和配置。通过查看和学习这个示例,开发者可以更好地理解和应用百度地图API进行定位。同时,为了提高用户体验,还应考虑处理定位权限的请求、异常...

    手机GPS数据读取程序源码

    GPS(全球定位系统)是通过卫星导航来获取地理位置信息的技术,而这里的实例则展示了如何在手机平台上,利用C#语言编写程序来读取并处理这些GPS数据。 首先,我们需要理解GPS数据的基本结构。GPS数据通常包括经纬度...

    【Android】代码开启/关闭GPS

    【Android】代码开启/关闭GPSDemo 相关文章:http://blog.csdn.net/etzmico/article/details/7200470 为了方便看效果,您可以在在onCreate中添加finish();方法,然后打开系统GPS设置页面再运行代码,这样就能看到...

    android 开启gps显示经纬度

    在Android平台上,GPS(全球定位系统)是获取设备地理位置信息的重要途径。为了实现“开启GPS显示经纬度”的功能,开发者需要对...在实际的gpsdemo项目中,这些概念会被具体实现并整合在一起,形成一个完整的功能。

Global site tag (gtag.js) - Google Analytics