android确定经纬度的小误区
来源:互联网 发布:通信协议json rpc 编辑:程序博客网 时间:2024/06/07 06:12
android LocationManager的使用
android提供LoacationManager类来获取自己的经纬度。也可以通过反向地理编码发送http给google返回一个确定值给自己再在解析显示到textview上(Geocoding API)。
首先需要申明权限 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission
android:name="android.permission.INTERNET" />
FINE权限对应的是GPS功能权限,
COARSE对应的是NETWORK权限,
Internet对应的是联网权限。
public class MainActivity extends AppCompatActivity { @Bind(R.id.one_text) TextView oneText; private LocationManager locationManager; private String provider; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); //这里传入true表示启用的位置提供器都得到返回 List<String> providerList = locationManager.getProviders(true); if (providerList.contains(LocationManager.GPS_PROVIDER)) { provider = LocationManager.GPS_PROVIDER; } else if (providerList.contains(LocationManager.NETWORK_PROVIDER)) { provider = LocationManager.NETWORK_PROVIDER; } else { Toast.makeText(this, "没有打开任何位置提供器", Toast.LENGTH_SHORT).show(); return; } /** //如果直接拿GPS定位,这个Location很有肯能为Null.而出现空指针 //可能是BUG,GPS在室内,会为location或者很难找到 //而是用network则不会出现这个情况 */ Location location = locationManager.getLastKnownLocation(provider); if (location != null) { /** * 这个lacation是空的 * Toast也不会弹出来,说明程序不运行进来,location是空的 */ Toast.makeText(this, "dadadaadadaadaddadadadada", Toast.LENGTH_SHORT).show(); showLocation(location); } //这个if也是要你检查权限,不加也能运行,但会红线提示而已 if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { return; } /** * 四个参数,第一个是GPS/NETWORK,第二个是刷新时间(毫秒),第三个是刷新距离(米),第四个是接口实例 */ locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 0, locationListener); //调用GPS locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 3000, 0, locationListener);//调用NETWORK } private void showLocation(Location location) { String myLocation = "经度:" + location.getLatitude() + "\n" + "纬度:" + location.getLongitude(); Toast.makeText(this, "" + myLocation, Toast.LENGTH_SHORT).show(); oneText.setText(myLocation); } LocationListener locationListener = new LocationListener() { /** * 移动距离超过,调用此方法 * @param location */ @Override public void onLocationChanged(Location location) { showLocation(location); } @Override public void onStatusChanged(String s, int i, Bundle bundle) { } @Override public void onProviderEnabled(String s) { } @Override public void onProviderDisabled(String s) { } }; @Override protected void onDestroy() { super.onDestroy(); if (locationManager != null) { //这个if也是要你检查权限,不加也能运行,但会红线提示而已 if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { return; } locationManager.removeUpdates(locationListener); } }}
0 0
- android确定经纬度的小误区
- Android——确定自己的位置(获得经纬度)
- Android中确定自己位置的经纬度展示到界面
- java小的误区
- Html 的小误区
- 开发者的一些小误区
- fork函数的小误区
- Android 的经纬度获取
- 初学Android的误区
- Android static的误区
- 调用百度地图API确定地址的经纬度,根据地址的经纬度查找中文地址
- 确定经纬度 搜索附件 sql
- Android获取经纬度的方法
- android取得所在位置的经纬度
- android取得所在位置的经纬度
- Android 获得当前位置的经纬度
- Android获取当前位置的经纬度
- 【Android 】获取当前位置的经纬度
- 装箱问题
- html学习笔记 3种doctype
- Hello World !
- CentOS下安装完vsftpd后报错:500 OOPS: cannot change directory:/home/
- MongoDB学习(一)——NoSQL简介
- android确定经纬度的小误区
- ubuntu uboot busybox等下载地址
- 深入理解JVM虚拟机学习笔记(二)垃圾收集器与垃圾收集算法
- jeesite快速开发平台(一)----简介
- redis源码安装运行
- php制作验证码
- eclipse开启自动提示
- Spring中的自动代理
- php 的 echo(),print(),print_r(),printf() var_dump() return 的区别