Android 获取手机GPS

如果使用的是谷歌地图查询。需要进行修正
如果使用的是百度地图查询。不需要进行修正

同时别忘了在AndroidManifest.xml文件中加入如下权限:

    <!-- 连接互联网Internet权限 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- GPS定位权限 -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>



-----------1.获取GPS

package com.heima.gps;

import java.util.List;

import android.app.Activity;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends Activity {
	// 位置管理
	private LocationManager lm;

	// 监听位置信息
	private LocationListeners listener;

	private TextView tv_location;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		tv_location = (TextView) findViewById(R.id.tv_location);

		// 实例化
		lm = (LocationManager) getSystemService(LOCATION_SERVICE);

		listener = new LocationListeners();
		// 监听位置信息
		// 第二个参数:两次位置更新的时间间隔
		lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, listener);

	}

	@Override
	protected void onDestroy() {
		super.onDestroy();
		// 关闭监听
		lm.removeUpdates(listener);
		listener = null;

	}

	class LocationListeners implements LocationListener {

		// 位置信息改变调用
		@Override
		public void onLocationChanged(Location location) {
			// 获取精度 返回的是double 转换为String
			String longitude = "经度:" + location.getLongitude();
			String latitude = "纬度:" + location.getLatitude();
			String accuracy = "精度:" + location.getAccuracy();
			tv_location.setText(longitude + "\n" + latitude + "\n" + accuracy);

			System.out.println(longitude + "\n" + latitude + "\n" + accuracy);
		}

		// 状态信息改变调用 开启->关闭 关闭->开启
		@Override
		public void onStatusChanged(String provider, int status, Bundle extras) {

		}

		// 当一个位置提供者可以使用了调用
		@Override
		public void onProviderEnabled(String provider) {

		}

		// 当一个位置提供者不可以使用了调用
		@Override
		public void onProviderDisabled(String provider) {

		}

	}

	// 显示获取位置信息的方法
	private void getLocationFunctions() {
		// 拿到获取位置的方式
		// 模拟器有两种获取方式 1.passive 2.gps
		// 真机有三种方式获取位置信息 1.passive 2.gps 3.network
		List<String> allProviders = lm.getAllProviders();
		for (String s : allProviders) {
			System.out.println(s);
		}
	}

}
</pre><pre name="code" class="java">----------2.修正GPS获取坐标
项目名称 : GPSLocationAmendment
需要文件: ModifyOffset.java  axisoffset.dat
</pre><pre name="code" class="java"><pre name="code" class="java">public class Demo {

	public static void main(String[] args) throws Exception {
		/**
		 * 修正火星坐标。
		 */
		// 如果使用坐标直接在百度地图查询是没有问题的,因为百度地图有修正 如果使用谷歌地图会出现偏移需要修正
		ModifyOffset offset = ModifyOffset.getInstance(Demo.class.getResourceAsStream("axisoffset.dat"));
		PointDouble s2c = offset.s2c(new PointDouble(108.23229969, 22.83799822));
		System.out.println(s2c);
	}

}


 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值