利用Android的api获取经纬度的方法
2017-06-22 10:59
309 查看
我们知道 在移动开发中涉及到定位的问题 我们通常采用高德,百度等第三方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之后才可以 这太怪异了 不知道啥原因 希望哪位知道的可以告诉我。
相关文章推荐
- Android 使用GPS定位获取经纬度的方法
- 利用百度地图Geocoding API获取特定地区或地址的经纬度信息
- 利用百度api技术获取客户端IP地址经纬度及所在城市位置
- Android简单获取经纬度的方法
- android 获取栈顶activty的方法总结(兼容API 5.0)
- android利用百度api解析经纬度
- Android中获取api&nbsp;key的方法
- android 获取栈顶activty的方法总结(兼容API 5.0)
- android获取经纬度3种方法
- android中获取位置(一)--利用locationManager获取当前经纬度信息
- 利用google地图获取位置经纬度坐标的方法
- 【Android开发经验】利用反射机制,获取类的字段、方法、并实现简单调用
- android利用Http协议实现从网络上面获取图片的方法
- android两种没接触过的api获取方法
- 利用Google Map API获取给定地址的经纬度
- Android调用百度api 获取经纬度以及地图 demo你怎么可以那么坑我????
- Android获取经纬度的方法
- 使用Android中的Google Maps的最新方法--获取Map API Key
- android 获取栈顶activty的方法总结(兼容API 5.0)
- Android-利用Uri获取返回的参数即getQueryParameter()方法的使用