import android.Manifest;
import android.content.pm.PackageManager;
import android.location.Address;
import android.location.Criteria;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private String TAG = "MainActivity";
private TextView weizhi;
private ListView listview;
private LocationManager systemService;
private final LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
getLoaction(location);
}
public void onProviderDisabled(String provider){
getLoaction(null);
}
public void onProviderEnabled(String provider){ }
public void onStatusChanged(String provider, int status,
Bundle extras){ }
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
weizhi = (TextView) findViewById(R.id.weizhi);
listview = (ListView) findViewById(R.id.shijian);
//动态检查权限,android6.0之后危险权限需要动态声明
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, 0x11);
} else if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, 0x12);
} else {
getWeizhi();
}
}
public void getWeizhi() {
long l = System.currentTimeMillis();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
systemService = (LocationManager) getSystemService(LOCATION_SERVICE);
String provider = systemService.getBestProvider(criteria, true);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
Location location = systemService.getLastKnownLocation(provider);
getLoaction(location);
systemService.requestLocationUpdates(provider, 2000, 10,
locationListener);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode==0x11){
if (grantResults[0]==PackageManager.PERMISSION_GRANTED&&grantResults[1]==PackageManager.PERMISSION_GRANTED){
getWeizhi();
}
else
{
Toast.makeText(this,"没有授权",Toast.LENGTH_SHORT).show();
}
}
}
private void getLoaction(Location location) {
ArrayList<String> dizhi=new ArrayList<>();
String latLongString;
double lat=0;
double lng = 0;
if (location != null) {
lat= location.getLatitude();
lng = location.getLongitude();
latLongString = "纬度:" + lat + "\n经度:" + lng;
} else {
latLongString = "无法获取地理信息";
}
List<Address> addList = null;
Geocoder ge = new Geocoder(this);
try {
//将经纬度转化为街道名
addList = ge.getFromLocation(lat, lng, 1);
} catch (IOException e) {
e.printStackTrace();
}
if(addList!=null && addList.size()>0){
for(int i=0; i<addList.size(); i++){
Address ad = addList.get(i);
latLongString += "\n";
/**
* ad.getCountryName() 国家名 ad.getLocality()城市名 ad.getAdminArea()省名
* ad.getThoroughfare()街道名 ad.getAddressLine(0)周边名
*/
latLongString += ad.getCountryName() + ";" + ad.getLocality()+ad.getAdminArea()+";"+ad.getThoroughfare()+ad.getLocale()+ad.getMaxAddressLineIndex()
+";"+ad.getAddressLine(0);
latLongString +=ad.getAddressLine(1);
dizhi.add(ad.getAddressLine(0));
dizhi.add(ad.getAddressLine(1));
dizhi.add(ad.getAddressLine(2));
dizhi.add(ad.getAddressLine(3));
dizhi.add(ad.getAddressLine(4));
dizhi.add(ad.getAddressLine(5));
dizhi.add(ad.getAddressLine(6));
dizhi.add(ad.getAddressLine(7));
dizhi.add(ad.getAddressLine(8));
dizhi.add(ad.getAddressLine(9));
}
}
weizhi.setText("您当前的位置是:\n" +latLongString);
ArrayAdapter adapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,dizhi);
listview.setAdapter(adapter);
}
}
相关推荐
Android定位实战:如何用LocationManager解决室内GPS失效问题(附完整代码)
本文针对Android应用在室内GPS信号失效的常见痛点,提供了一套基于LocationManager的高可用混合定位实战解决方案。通过并行监听GPS与网络定位提供者,并实现智能择优与动态切换的核心逻辑,确保在复杂环境下仍能获取可用位置。文章详细解析了权限处理、兼容性适配及完整Kotlin代码实现,帮助开发者构建健壮的室内外定位功能。
Android 地理位置Location服务之LocationManager,Geocoder详解
前言 Android 系统提供了地理位置服务相关的API方便开发者去获得当前地理位置。在android framework层的android.loaction包下面主要提供了如下两个类来帮助开发者来获取地理位置信息。 LocationManager:用于获取地理位置的经纬度信息 Geocoder:根据经纬度获取详细地址信息 / 根据详细地址获取经纬度信息 今天我们通过简单例子来详细说明
Android旅游记录APP开发全解析:从轨迹定位到数据同步的实战指南
在移动应用开发中,地图集成与数据持久化是构建LBS(基于位置服务)应用的核心技术。其原理在于通过设备GPS、网络等传感器获取位置信息,结合本地数据库进行高效存储与管理。这项技术的价值在于能够将物理世界的移动轨迹数字化,为各类场景提供数据支撑。在工程实践中,开发者常需处理后台持续定位、多媒体文件管理以及多端数据同步等挑战。例如,利用Android的FusedLocationProviderClient实现低功耗轨迹记录,并通过Room数据库设计合理的表结构来关联行程、轨迹点与多媒体瞬间。这些技术广泛应用于运动
Android LocationManager 使用
前一阵子,老大安排我写一个GPS的程序。大致就是用Android 提供的Location 服务,来获得当前的位置信息和卫星信息。这里就用到了LocationManager类,要使用它,先得获得系统所提供的location_serviceprivate LocationManager locationManager;locationManager = (LocationManager)get
Neo4j桌面版导入CVS文件
我们的relation.csv是这样的。
5G NR 物理层 流程一:从帧结构到TB块,PDSCH/PUSCH 资源映射与TBS计算实战
本文详细解析了5G NR物理层流程,从帧结构到TB块的计算,重点介绍了PDSCH/PUSCH资源映射与TBS计算的实战方法。通过具体案例和公式推导,帮助工程师掌握5G NR资源分配、MCS选择及TBS量化过程,解决实际部署中的常见问题。
Pro Android学习笔记(一一六):Location(2):LocationManager的位置获取
文章转载只能用于非商业性质,且不能带有虚拟货币、积分、注册等附加条件。转载须注明出处http://blog.csdn.net/flowingflying以及作者@恺风Wei-傻瓜与非傻瓜。 LocationManager提供两个主要功能:1、获取设备的地理位置(经纬度);2、当设备进入制定的地理位置,通过通过intent通知。 获取位置信息的基本方法 简单的代码片段如下: privat
基于51单片机+SYN6288语音播报
51单片机控制SYN6288语音播报资料SYN6288模块原理图语音合成命令接线如何接线实现原理程序代码main.csyn6288.cuart.cdelay.c基于 51单片机的其他项目基于51单片机+遥控灯基于51单片机+LCD1602显示基于51单片机+红外遥控解码+LCD1602显示基于51单片机+DHT11温湿度+LCD1602显示基于51单片机+DS18B20温度测温器+LCD1602显示尾声 资料 我用的是绿深电子技术的模块,资料也挺齐全的。也有相关例程。 SYN6288模块原理图 语音合成
Android 位置管理器(LocationManager)
Android LocationManager的提供了一系列与地理位置相关的服务,包括允许应用获取设备的周期性的位置更新;以及接近某个地理位置坐标时触发一个已定义Intent的等。这里介绍LocatinManager的简单使用,以获取当前所在的位置为例。
智能电网中的智能调度与优化算法研究
本文研究智能电网中的智能调度与优化算法,旨在提高电网运行的效率与可靠性,减少能源浪费和设备故障的风险。在智能电网日益复杂化的背景下,传统的调度方法已难以满足高效、稳定的运行要求,因此亟需借助先进的优化算法对电网进行智能调度。本文第一深入分析智能电网调度中的关键问题与挑战,探讨优化算法在智能电网中的应用现状,并分析常见的优化算法,如遗传算法、粒子群算法和模拟退火算法。随后,本文构建智能电网的调度优化数学模型,并对电网负荷、发电模型及约束条件进行详细建模。在算法部分,本文提出改进的粒子群算法和遗传算法,并结合M
数学建模学习(120):使用Python实现基于AHP的供应商选择分析
使用Python实现基于AHP的供应商选择分析
android GPS 获取城市信息
1、取得用户当前位置的经度,纬度。 2、根据经纬度转换成城市名称。 取得用户当前位置的经度,纬度 今天弄了一个多小时,写了一个GPS获取地理位置代码的小例子,包括参考了网上的一些代码,并且对代码进行了一些修改,希望对大家的帮助。具体代码如下: 要实用Adnroid平台的GPS设备,首先需要添加上权限,所以需要添加如下权限: uses-permiss
Agentic AI应用架构师如何提升AI应用的灵活性
可扩展性(Scalability):快速添加新功能或扩展任务范围(如Agent从“客服”扩展到“供应链管理”);可修改性(Modifiability):调整Agent的决策逻辑或动作策略,无需重构整个系统;鲁棒性(Robustness):在环境异常或数据噪声下保持性能稳定;自适应(Self-Adaptation):自主学习新场景,无需人工干预。状态空间(S):Agent能感知的所有内部/外部状态(如用户需求、环境数据);动作空间(A):Agent能执行的所有动作(如调用工具、发送消息);
Android高手进阶教程(十五)之---通过Location获取Address的使用!
大家好,上一节我讲了一下如何通过LocationManager来获取Location,没有看过上一节的同学,可以点击如下链接返回查看: Android高手进阶教程十四之---Android Location的使用! 我们获取Location的目的之一肯定是有获取这个位置的详细地址,而我们有了Location在来获取Address就相对简单多了,因为GoogleApi已经封装好了方法,我们只需
1、 快速掌握R:初学者的计量经济学指南
本博文旨在为初学者提供一个快速掌握R语言的指南,特别是针对计量经济学领域的应用。内容涵盖了R的基本操作、数据管理、可视化、函数编写以及高级统计分析方法,如OLS回归、异方差修正和集群标准误差计算等。通过实际示例和详细说明,帮助读者在数据分析和科学研究中更加得心应手。
西门子S7-1200PLC与FANUC机器人进行PROFINET IO通信的具体方法和步骤详解
西门子S7-1200PLC与FANUC机器人进行PROFINET IO通信的具体方法和步骤详解
通过Location获取Address的使用
推荐安卓开发神器(里面有各种UI特效和android代码库实例) 我们获取Location的目的之一肯定是有获取这个位置的详细地址,而我们有了Location在来获取Address就相对简单多了,因为GoogleApi已经封装好了方法,我们只需呀通过Location获取GeoPoint,然后在通过GeoPoint来获取我们想要的Address.下面是我做的一个简单的Demo. 第...
ET2012新版免狗免安装绿色软件
ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,
Android 获取位置经纬度并转为地址信息
public class MLocationManager { @SuppressLint("MissingPermission") public static Location getLocation() { LocationManager locationManager = (LocationManager) MApplication.getInstance().getSystemService(Context.LOCATION_SERVICE); Str
IEM模型,地表粗糙度模拟
利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟
jre9下载 jdk9
(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】
uni-app 打开定位信息
let bool = false // android平台 if (uni.getSystemInfoSync().platform == 'android') { var context = plus.android.importClass("android.content.Context"); var locationManager = plus.android.importClass("android.location.LocationManager"); var
SAP B1中文培訓教材_SDK
公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说
Android根据经纬度获取城市名的方法
根据经纬度获取当前城市名的几种方式如下(获取城市名需要网络连接) 1. 通过服务获取城市名 百度: http://api.map.baidu.com/geocoder?output=json&location=39.913542,116.379763&ak=esNPFDwwsXWtsQfw4NMNmur1 google: http://maps.google.
Android开发:LocationManager获取经纬度及定位过程(附demo)
在Android开发当中,经常需要用到定位功能,尤其是依赖于地理位置功能的应用,很多人喜欢使用百度地图,高德地图提供的sdk,开放API,但是在仅仅需要经纬度,或者城市,街道地址等信息,并不需要提供预览地图,地图界面的应用中,这时,不需要使用百度地图,高德地图,这样做只会增加apk的体积,怎么办呢? 其实LocationManager,Geocoder这些Android API给我们提供的这
Android中通过经纬度来过去到城市名称
Android中通过经纬度来过去到城市名称Android中通过经纬度来过去到城市名称
Android获取定位经纬度,转换成地址
private LocListener locListener = null; /** * 点击获取地图 * * @param view */ public void onClick(View view) { if (null == locListener) { locListener = new L...
Android 定位地址,获取经纬度,并转换为中文地址
Android 定位地址,获取经纬度,并转换为中文地址Android 定位地址,获取经纬度,并转换为中文地址第一步,判断应用是否开启了位置定位的权限功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘...
经纬度转换成城市信息
-(void)getLocationTitleWithLocation:(CLLocation *)location { //根据经纬度解析成位置 CLGeocoder *geocoder=[[CLGeocoder alloc]init]; [geocoder reverseGeocodeLocation:location completionHand
505



被折叠的 条评论
为什么被折叠?



