Android笔记之使用LocationManager获取经纬度
2024-09-08 05:41:58
LocationManager.getLastKnownLocation(String provider)有可能返回null,概率还挺高
findViewById(R.id.llMain).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AndPermission.with(MainActivity.this).runtime().permission(Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION)
.onGranted(new Action<List<String>>() {
@Override
public void onAction(List<String> data) {
boolean fineLocationPermissionGranted = PermissionChecker.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED;
boolean coarseLocationPermissionGranted = PermissionChecker.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED;
if (fineLocationPermissionGranted && coarseLocationPermissionGranted) {
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (location == null) {
new AlertDialog.Builder(MainActivity.this).setMessage("无法获取位置").show();
} else {
double longitude = location.getLongitude();
double latitude = location.getLatitude();
Log.d(TAG, longitude + ", " + latitude);
new AlertDialog.Builder(MainActivity.this).setMessage("经度:" + longitude + "\n纬度:" + latitude).show();
}
}
}
})
.onDenied(new Action<List<String>>() {
@Override
public void onAction(List<String> data) {
new AlertDialog.Builder(MainActivity.this).setMessage("位置权限被拒绝").show();
}
}).start();
}
});
以下是通过requestSingleUpdate获取经纬度,不过,LocationManager.requestSingleUpdate是异步的,获取到Location的时间不好控制,如果对经纬度的要求不是必须的,还是建议使用第一种
findViewById(R.id.btnGetLongitudeAndLatitude).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AndPermission.with(MainActivity.this).runtime().permission(Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION)
.onGranted(new Action<List<String>>() {
@Override
public void onAction(List<String> data) {
boolean fineLocationPermissionGranted = PermissionChecker.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED;
boolean coarseLocationPermissionGranted = PermissionChecker.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED;
if (fineLocationPermissionGranted && coarseLocationPermissionGranted) {
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
locationManager.requestSingleUpdate(LocationManager.NETWORK_PROVIDER, new LocationListener() {
@Override
public void onLocationChanged(Location location) {
double longitude = location.getLongitude();
double latitude = location.getLatitude();
Log.d(TAG, longitude + ", " + latitude);
new AlertDialog.Builder(MainActivity.this).setMessage("经度:" + longitude + "\n纬度:" + latitude).show();
} @Override
public void onStatusChanged(String provider, int status, Bundle extras) { } @Override
public void onProviderEnabled(String provider) { } @Override
public void onProviderDisabled(String provider) { }
}, null);
} else {
new AlertDialog.Builder(MainActivity.this).setMessage("位置权限被拒绝").show();
}
}
})
.onDenied(new Action<List<String>>() {
@Override
public void onAction(List<String> data) {
new AlertDialog.Builder(MainActivity.this).setMessage("位置权限被拒绝").show();
}
}).start();
}
});
最新文章
- dos 固定ip命令
- 通过版本号实现乐观锁(MVCC)
- java_SE(Day15)_集合1
- 【ZOJ1003】Crashing Balloon(DFS)
- maven引入json-lib的正确方法
- SSIS 关于并发的两个设置
- recv send 阻塞和非阻塞
- checkbox改成radio效果,单选,取消
- oracle11g RAC添加节点
- linux 下 epoll 编程
- Sqoop安装与使用(sqoop-1.4.5 on hadoop 1.0.4)
- android从中国天气网获取天气
- AC Me
- C4.5算法总结
- NHibernate教程(20)——二级缓存(上)
- Datatable转换为Json
- ShoneSharp语言(S#)的设计和使用介绍系列(4)— 入门概述
- java package(包)的用法
- vuex数据管理-数据共享
- 为通过 ATS 检测 Tomcat 完全 TLS v1.2、完全正向加密及其结果检验
热门文章
- 【Visual Studio】Error: forget to add &#39;#include ";stdafx.h";&#39; to your source (转)
- 系统虚拟内存的理解 转载自http://blog.csdn.net/do2jiang/article/details/4690967
- 51nod 1201 整数划分
- 缓存区溢出漏洞工具Doona
- 我的第一个Java程序HelloWorld
- BT网络中DHT和UPnp的解释(转)
- SQLServer 跟踪 扩展事件(Extended Events) 专家
- 给button添加长按手势并侦测到此button
- Windows10下Apache2.4配置Django
- 【转载】Linux下套接字学习