LocationManager定位获取经纬度并且转换成城市

uniapp拍照离线定位,获取图片信息,经纬度解析地址 ✅作者简介:我是痴心阿文,你们的学友哥,今天给大家分享uniapp拍照离线定位,获取图片信息,经纬度解析地址🔥本文前言:需求,手机拍照定位,获取经纬度并上传图片,当手机无网络的时候也可以离线拍照通过定位上传图片,用到的有地图定位api,设备信息api,相机api等。 阅读详情
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);
    }
}
uniapp - APP判断是否开启位置信息服务&&判断是否授权位置信息权限 当我们在使用uni.getLocation的API时,会发现用户并没有开启微信信息服务或者没有授权位置信息权限,而导致回调fail,那么就需要去判断并引导用户前往开启。 判断是否开启位置信息服务(安卓Android) checkOpenGPSService() { let systemType = uni.getSystemInfoSync().platform; // 安卓 if (systemType === 'android') { var context = plus.android. 阅读详情

相关推荐

Android定位实战:如何用LocationManager解决室内GPS失效问题(附完整代码)

本文针对Android应用在室内GPS信号失效的常见痛点,提供了一套基于LocationManager的高可用混合定位实战解决方案。通过并行监听GPS与网络定位提供者,并实现智能择优与动态切换的核心逻辑,确保在复杂环境下仍能获取可用位置。文章详细解析了权限处理、兼容性适配及完整Kotlin代码实现,帮助开发者构建健壮的室内外定位功能。

weixin_29266647的博客 505

Android 地理位置Location服务之LocationManager,Geocoder详解

前言 Android 系统提供了地理位置服务相关的API方便开发者去获得当前地理位置。在android framework层的android.loaction包下面主要提供了如下两个类来帮助开发者来获取地理位置信息。 LocationManager:用于获取地理位置的经纬度信息 Geocoder:根据经纬度获取详细地址信息 / 根据详细地址获取经纬度信息 今天我们通过简单例子来详细说明

废墟的树的专栏 2万+

Android旅游记录APP开发全解析:从轨迹定位到数据同步的实战指南

在移动应用开发中,地图集成与数据持久化是构建LBS(基于位置服务)应用的核心技术。其原理在于通过设备GPS、网络等传感器获取位置信息,结合本地数据库进行高效存储与管理。这项技术的价值在于能够将物理世界的移动轨迹数字化,为各类场景提供数据支撑。在工程实践中,开发者常需处理后台持续定位、多媒体文件管理以及多端数据同步等挑战。例如,利用Android的FusedLocationProviderClient实现低功耗轨迹记录,并通过Room数据库设计合理的表结构来关联行程、轨迹点与多媒体瞬间。这些技术广泛应用于运动

weixin_29185167的博客 297

Android LocationManager 使用

前一阵子,老大安排我写一个GPS的程序。大致就是用Android 提供的Location 服务,来获得当前的位置信息和卫星信息。这里就用到了LocationManager类,要使用它,先得获得系统所提供的location_serviceprivate LocationManager locationManager;locationManager = (LocationManager)get

saint_bxg的专栏 2万+

Neo4j桌面版导入CVS文件

我们的relation.csv是这样的。

m0_53573725的博客 818

5G NR 物理层 流程一:从帧结构到TB块,PDSCH/PUSCH 资源映射与TBS计算实战

本文详细解析了5G NR物理层流程,从帧结构到TB块的计算,重点介绍了PDSCH/PUSCH资源映射与TBS计算的实战方法。通过具体案例和公式推导,帮助工程师掌握5G NR资源分配、MCS选择及TBS量化过程,解决实际部署中的常见问题。

weixin_30897233的博客 95

Pro Android学习笔记(一一六):Location(2):LocationManager的位置获取

文章转载只能用于非商业性质,且不能带有虚拟货币、积分、注册等附加条件。转载须注明出处http://blog.csdn.net/flowingflying以及作者@恺风Wei-傻瓜与非傻瓜。 LocationManager提供两个主要功能:1、获取设备的地理位置(经纬度);2、当设备进入制定的地理位置,通过通过intent通知。 获取位置信息的基本方法 简单的代码片段如下: privat

愷风(Wei)的专栏 2万+

基于51单片机+SYN6288语音播报

51单片机控制SYN6288语音播报资料SYN6288模块原理图语音合成命令接线如何接线实现原理程序代码main.csyn6288.cuart.cdelay.c基于 51单片机的其他项目基于51单片机+遥控灯基于51单片机+LCD1602显示基于51单片机+红外遥控解码+LCD1602显示基于51单片机+DHT11温湿度+LCD1602显示基于51单片机+DS18B20温度测温器+LCD1602显示尾声 资料 我用的是绿深电子技术的模块,资料也挺齐全的。也有相关例程。 SYN6288模块原理图 语音合成

weixin_47457689的博客 3万+

Android 位置管理器(LocationManager)

Android LocationManager的提供了一系列与地理位置相关的服务,包括允许应用获取设备的周期性的位置更新;以及接近某个地理位置坐标时触发一个已定义Intent的等。这里介绍LocatinManager的简单使用,以获取当前所在的位置为例。

Ricky 6744

智能电网中的智能调度与优化算法研究

本文研究智能电网中的智能调度与优化算法,旨在提高电网运行的效率与可靠性,减少能源浪费和设备故障的风险。在智能电网日益复杂化的背景下,传统的调度方法已难以满足高效、稳定的运行要求,因此亟需借助先进的优化算法对电网进行智能调度。本文第一深入分析智能电网调度中的关键问题与挑战,探讨优化算法在智能电网中的应用现状,并分析常见的优化算法,如遗传算法、粒子群算法和模拟退火算法。随后,本文构建智能电网的调度优化数学模型,并对电网负荷、发电模型及约束条件进行详细建模。在算法部分,本文提出改进的粒子群算法和遗传算法,并结合M

weixin_44553616的博客 1891

数学建模学习(120):使用Python实现基于AHP的供应商选择分析

使用Python实现基于AHP的供应商选择分析

全栈川川 912

android GPS 获取城市信息

1、取得用户当前位置的经度,纬度。  2、根据经纬度转换成城市名称。 取得用户当前位置的经度,纬度 今天弄了一个多小时,写了一个GPS获取地理位置代码的小例子,包括参考了网上的一些代码,并且对代码进行了一些修改,希望对大家的帮助。具体代码如下:  要实用Adnroid平台的GPS设备,首先需要添加上权限,所以需要添加如下权限:     uses-permiss

过河卒子 1万+

Agentic AI应用架构师如何提升AI应用的灵活性

可扩展性(Scalability):快速添加新功能或扩展任务范围(如Agent从“客服”扩展到“供应链管理”);可修改性(Modifiability):调整Agent的决策逻辑或动作策略,无需重构整个系统;鲁棒性(Robustness):在环境异常或数据噪声下保持性能稳定;自适应(Self-Adaptation):自主学习新场景,无需人工干预。状态空间(S):Agent能感知的所有内部/外部状态(如用户需求、环境数据);动作空间(A):Agent能执行的所有动作(如调用工具、发送消息);

项目管理的博客 585

Android高手进阶教程(十五)之---通过Location获取Address的使用!

大家好,上一节我讲了一下如何通过LocationManager来获取Location,没有看过上一节的同学,可以点击如下链接返回查看: Android高手进阶教程十四之---Android Location的使用! 我们获取Location的目的之一肯定是有获取这个位置的详细地址,而我们有了Location在来获取Address就相对简单多了,因为GoogleApi已经封装好了方法,我们只需

caobaokang的专栏 762

1、 快速掌握R:初学者的计量经济学指南

本博文旨在为初学者提供一个快速掌握R语言的指南,特别是针对计量经济学领域的应用。内容涵盖了R的基本操作、数据管理、可视化、函数编写以及高级统计分析方法,如OLS回归、异方差修正和集群标准误差计算等。通过实际示例和详细说明,帮助读者在数据分析和科学研究中更加得心应手。

weixin_35734408的博客 150

西门子S7-1200PLC与FANUC机器人进行PROFINET IO通信的具体方法和步骤详解

西门子S7-1200PLC与FANUC机器人进行PROFINET IO通信的具体方法和步骤详解

Robot_PLC_HMI_Automation 1万+

通过Location获取Address的使用

推荐安卓开发神器(里面有各种UI特效和android代码库实例) 我们获取Location的目的之一肯定是有获取这个位置的详细地址,而我们有了Location在来获取Address就相对简单多了,因为GoogleApi已经封装好了方法,我们只需呀通过Location获取GeoPoint,然后在通过GeoPoint来获取我们想要的Address.下面是我做的一个简单的Demo.   第...

xSTARx 176

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Android 获取位置经纬度并转为地址信息

public class MLocationManager { @SuppressLint("MissingPermission") public static Location getLocation() { LocationManager locationManager = (LocationManager) MApplication.getInstance().getSystemService(Context.LOCATION_SERVICE); Str

再也不做的事 802

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

郑州彭于晏 882

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.

qilu0882的专栏 7572

Android开发:LocationManager获取经纬度及定位过程(附demo)

在Android开发当中,经常需要用到定位功能,尤其是依赖于地理位置功能的应用,很多人喜欢使用百度地图,高德地图提供的sdk,开放API,但是在仅仅需要经纬度,或者城市,街道地址等信息,并不需要提供预览地图,地图界面的应用中,这时,不需要使用百度地图,高德地图,这样做只会增加apk的体积,怎么办呢? 其实LocationManager,Geocoder这些Android API给我们提供的这

MichaelX的专栏 2万+

Android中通过经纬度来过去到城市名称

Android中通过经纬度来过去到城市名称Android中通过经纬度来过去到城市名称

Laihh933260的博客 2212

Android获取定位经纬度,转换成地址

private LocListener locListener = null; /** * 点击获取地图 * * @param view */ public void onClick(View view) { if (null == locListener) { locListener = new L...

iblade的博客 8468

Android 定位地址,获取经纬度,并转换为中文地址

Android 定位地址,获取经纬度,并转换为中文地址Android 定位地址,获取经纬度,并转换为中文地址第一步,判断应用是否开启了位置定位的权限功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘...

u014714188的博客 3068

经纬度转换成城市信息

-(void)getLocationTitleWithLocation:(CLLocation *)location {     //根据经纬度解析成位置     CLGeocoder *geocoder=[[CLGeocoder alloc]init];     [geocoder reverseGeocodeLocation:location completionHand

dachao_me的专栏 8678
上一篇: android debug bridge的环境配置
下一篇: 查看应用的安全码
snow_zhang_123
博客等级 码龄11年 7粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值