Android 获取手机GPS

本文详细介绍了在Android平台上如何获取GPS定位信息,并通过代码示例展示了如何修正使用谷歌地图查询时出现的位置偏移问题。同时,文章还强调了在AndroidManifest.xml文件中加入必要的权限对于定位功能实现的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

同时别忘了在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);
	}

}





Android 中,获取手机 GPS 定位可以通过系统的 LocationManager 类来实现。下面是一个简单的示例代码: ```java // 获取 LocationManager 实例 LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); // 检查是否有定位权限 if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { // 没有定位权限,申请权限 ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.ACCESS_FINE_LOCATION}, 1); return; } // 请求 GPS 定位 locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, new LocationListener() { @Override public void onLocationChanged(Location location) { // 获取到新的位置信息 double latitude = location.getLatitude(); double longitude = location.getLongitude(); Log.d("Location", "Latitude: " + latitude + ", Longitude: " + longitude); } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } }); ``` 在代码中,首先获取了 LocationManager 实例,并检查是否有定位权限。如果没有定位权限,则申请权限。然后使用 `requestLocationUpdates()` 方法请求 GPS 定位,可以设置定位时间间隔和定位距离间隔。当获取到新的位置信息时,会回调 `onLocationChanged()` 方法,可以在该方法中获取到经纬度信息。需要注意的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值