zoukankan      html  css  js  c++  java
  • Android GPS应用:动态获取位置信息

    在上文中,介绍了GPS概念及Android开发GPS应用涉及到的常用类和方法。在本文中,开发一个小应用,实时获取定位信息,包括用户所在的纬度、经度、高度、方向、移动速度等。代码如下:

    Activity:

    package comhome.location;
    
    import android.app.Activity;
    import android.content.Context;
    import android.location.Location;
    import android.location.LocationListener;
    import android.location.LocationManager;
    import android.os.Bundle;
    import android.widget.EditText;
    
    public class LocationTestActivity extends Activity {
    	// 定义LocationManager对象
    	private LocationManager locationManager;
    	private EditText show;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
    		show = (EditText) findViewById(R.id.main_et_show);
    		// 获取系统LocationManager服务
    		locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    		// 从GPS获取最近的定位信息
    		Location location = locationManager
    				.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    		// 将location里的位置信息显示在EditText中
    		updateView(location);
    		// 设置每2秒获取一次GPS的定位信息
    		locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
    				2000, 8, new LocationListener() {
    
    					@Override
    					public void onLocationChanged(Location location) {
    						// 当GPS定位信息发生改变时,更新位置
    						updateView(location);
    					}
    
    					@Override
    					public void onProviderDisabled(String provider) {
    						updateView(null);
    					}
    
    					@Override
    					public void onProviderEnabled(String provider) {
    						// 当GPS LocationProvider可用时,更新位置
    						updateView(locationManager
    								.getLastKnownLocation(provider));
    
    					}
    
    					@Override
    					public void onStatusChanged(String provider, int status,
    							Bundle extras) {
    					}
    				});
    	}
    
    	private void updateView(Location location) {
    		if (location != null) {
    			StringBuffer sb = new StringBuffer();
    			sb.append("实时的位置信息:
    经度:");
    			sb.append(location.getLongitude());
    			sb.append("
    纬度:");
    			sb.append(location.getLatitude());
    			sb.append("
    高度:");
    			sb.append(location.getAltitude());
    			sb.append("
    速度:");
    			sb.append(location.getSpeed());
    			sb.append("
    方向:");
    			sb.append(location.getBearing());
    			sb.append("
    精度:");
    			sb.append(location.getAccuracy());
    			show.setText(sb.toString());
    		} else {
    			// 如果传入的Location对象为空则清空EditText
    			show.setText("");
    		}
    	}
    
    }
    

    布局XML:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    
        <EditText
            android:id="@+id/main_et_show"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:cursorVisible="false"
            android:editable="false" />
    
    </LinearLayout>

    权限:

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

    附上图片效果:


    如果把该程序与Google Map结合,让程序根据GPS提供的信息实时地显示用户在地图上的位置,即可开发出GPS导航系统。

  • 相关阅读:
    python中xrange和range的异同
    Python:使用threading模块实现多线程编程
    python Queue模块
    Python中pass语句的作用
    Python的作用域
    eclipse颜色配置
    protobuf
    python调试总结
    chardet安装
    Windows下搭建PHP开发环境
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3202887.html
Copyright © 2011-2022 走看看