您的位置:首页 > 移动开发 > Android开发

Android 获取手机GPS

2015-11-30 19:59 549 查看
如果使用的是谷歌地图查询。需要进行修正

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

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

}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: