利用Android的api获取经纬度的方法
来源:互联网 发布:netty java实例 编辑:程序博客网 时间:2024/06/05 11:30
我们知道 在移动开发中涉及到定位的问题 我们通常采用高德,百度等第三方api来实现 ,虽然各家api的坐标体系是不一样的但是他们都提供了相互转换的方法,其实 在Android的官方api中也有定位的api,都在android.location包下。借助这个包下的几个类 我们同样可以实现定位的功能。我这里简单的写了一个demo
import android.content.Context;import android.location.Criteria;import android.location.Location;import android.location.LocationListener;import android.location.LocationManager;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.widget.TextView;public class MainActivity extends AppCompatActivity { private TextView info; private LocationManager locationManager; private String provider; private Location location; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); info = (TextView) findViewById(R.id.tv); locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); } @Override protected void onResume() { super.onResume(); if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_FINE);//高精度 criteria.setAltitudeRequired(false);//不要求海拔 criteria.setBearingRequired(false);//不要求方位 criteria.setCostAllowed(true);//允许有花费 criteria.setPowerRequirement(Criteria.POWER_LOW);//低功耗 locationManager.setTestProviderEnabled("gps", true); //从可用的位置提供器中,匹配以上标准的最佳提供器 provider = locationManager.getBestProvider(criteria, true); //监听位置变化,2秒一次,距离10米以上 locationManager.requestLocationUpdates(provider, 2000*30, 100,locationListener); //获得最后一次变化的位置 Location location = locationManager.getLastKnownLocation(provider); if(null!=location){ info.setText("22经度:"+location.getLongitude()+"--"+"纬度:"+location.getLatitude()); }else{ info.setText("没有获取到经纬度11"); } }else{ Location location= locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); //监听位置变化,2秒一次,距离10米以上 locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 2000*30, 100,locationListener); if(null!=location){ info.setText("11经度:"+location.getLongitude()+"--"+"纬度:"+location.getLatitude()); }else{ //toggleGPS(); info.setText("没有获取到经纬度22"); } } } //位置监听器 LocationListener locationListener = new LocationListener() { @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } //当位置变化时触发 @Override public void onLocationChanged(Location location) { //使用新的location更新TextView显示 } }; @Override protected void onDestroy() { super.onDestroy(); locationManager.removeUpdates(locationListener); locationManager.setTestProviderEnabled(provider, false); }}//权限 <uses-permission android:name="android.permission.INTERNET" /> <!-- GPS定位权限 --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
我在自己测试的时候发现一个问题 当我切换了设置中的定位精度后 这个东西就获取不到经纬度了 只有重启app之后才可以 这太怪异了 不知道啥原因 希望哪位知道的可以告诉我。
阅读全文
0 1
- 利用Android的api获取经纬度的方法
- Android获取经纬度的方法
- Android 的经纬度获取
- 利用百度地图api写的一个获取经纬度和精度半径的类
- Android获取当前位置的经纬度
- 【Android 】获取当前位置的经纬度
- 利用手机的GPS获取经纬度
- 利用百度API获取地址经纬度
- 2.使用地图API,获取经纬度并传到服务器的可行方法
- 获取经纬度方法的使用以及常见问题
- Android开发之--利用系统自带的服务获取经纬度并转为具体位置
- Android利用谷歌地图获取并解析经纬度对应的地理位置
- android 通过经纬度获取具体的地理信息
- android 获取地图中心点的经纬度坐标
- Android 获取手机当前所在的经纬度
- android定位:获取当前位置的经纬度
- Android之获取网络位置的经纬度
- Android之获取当前位置的经纬度
- 算法思想 -- 贪心算法(2) -- 需解决的2个主要问题
- Error type 3
- caffe 学习笔记之caffe.proto注释
- 基于joda time 间隔天数计算
- 通过fcntl设置 非阻塞IO(Linux C)
- 利用Android的api获取经纬度的方法
- 过滤beanutils包的AbstractConverter类的DEBUG信息
- [Android]Android Studio获取开发版和发布版的MD5和SHA1
- ajax请求成功后无法在success方法里给外部变量赋值的问题
- Unity3D 简易计时类
- CloudStack到底和OpenStack区别
- 通过梦网科技平台接口实现网页验证码校验功能
- 配置 logstash 为 Windows Service
- dbus-glib应用入门