Android : GPS定位 获取当前位置—简单应用
示例图:

MainActivity.java
package com.example.mygpsapp;import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;import android.Manifest;
import android.content.pm.PackageManager;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;import java.util.List;public class MainActivity extends AppCompatActivity {private Button button, btnGetData;//系统位置管理对象private LocationManager locationManager;private TextView textView;private EditText editText;private ListView listView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button = findViewById(R.id.btn_get_provider);textView = findViewById(R.id.tv_see);listView = findViewById(R.id.list_view);btnGetData = findViewById(R.id.btn_get_data);editText = findViewById(R.id.et_content);//1.获取系统 位置管理对象 LocationManagerlocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);// 2. 获取所有设备名字List<String> providerName = locationManager.getAllProviders();//2.1获取指定设备 gps
// LocationProvider gpsProvider = locationManager.getProvider(LocationManager.GPS_PROVIDER);//3 把数据放到listView 中显示/**3个* passive: 代码表示:LocationManager.PASSIVE_PROVIDER* gps: 代码表示:LocationManager.GPS_PROVIDER* network: 网络获取定位信息 LocationManager.NETWORK_PROVIDER* */ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(this, R.layout.list_layout, providerName);listView.setAdapter(arrayAdapter);//从6.0系统开始,需要动态获取权限int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION);if (permissionCheck != PackageManager.PERMISSION_GRANTED) {ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 0);}button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// Criteria 过滤 找到 定位设备//1.获取位置管理对象 LocationManagerLocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);//2. 创建 Criteria 过滤条件Criteria criteria = new Criteria();//要求设备是免费的criteria.setCostAllowed(false);// 要求能提供高精度信息criteria.setAltitudeRequired(true);// 要求能提供反方向信息criteria.setBearingRequired(true);// 设置精度 标准不限
// criteria.setAccuracy(Criteria.NO_REQUIREMENT);// 设置功率要求 电量 标准不限
// criteria.setPowerRequirement(Criteria.NO_REQUIREMENT);//获取最佳提供商List<String> datas = locationManager.getAllProviders();textView.setText(datas.toString());}});//获取定位信息事件btnGetData.setOnClickListener(new View.OnClickListener() {@SuppressWarnings("all") //警告过滤@Overridepublic void onClick(View v) {try {//1.获取系统 位置管理对象 LocationManagerlocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);//2.从GPS 获取最近定位信息//获取到位置相关信息Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);//把信息设置到文本框中updatView(location);//设置每3秒 获取一次Gps 定位信息locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 8, new LocationListener() {@Overridepublic void onLocationChanged(@NonNull Location location) {//当GPS 位置发生改变时 执行方法updatView(location);}@Overridepublic void onProviderDisabled(@NonNull String provider) {//禁用时 执行方法updatView(null);}@Overridepublic void onProviderEnabled(@NonNull String provider) {// 可以用时 执行方法updatView(locationManager.getLastKnownLocation(provider));}});} catch (Throwable e) {e.printStackTrace();}}});}//把信息设置到文本框中public void updatView(Location location) {if(location != null){StringBuilder cont = new StringBuilder();cont.append("实时定位信息:\n");cont.append("经度:");cont.append(location.getLongitude());cont.append("\n纬度:");cont.append(location.getLatitude());cont.append("\n高度:");cont.append(location.getAltitude());cont.append("\n速度:");cont.append(location.getSpeed());cont.append("\n方向:");cont.append(location.getBearing());editText.setText(cont.toString());}else {editText.setText("没有开启定位信息!");}}//请求权限结果
// ACCESS_FINE_LOCATION 访问精细定位
// ACCESS_COARSE_LOCATION 访问粗略定位@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);switch (requestCode) {case 0:if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {Toast.makeText(MainActivity.this, "访问精细定位权限授权成功", Toast.LENGTH_SHORT).show();//从6.0系统开始,需要动态获取权限int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION);if (permissionCheck != PackageManager.PERMISSION_GRANTED) {ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, 1);}}break;case 1:if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {Toast.makeText(MainActivity.this, "访问粗略定位权限授权成功", Toast.LENGTH_SHORT).show();}break;default:break;}}
}
布局文件 activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="GPS简单应用:"android:textSize="24sp"/><Buttonandroid:id="@+id/btn_get_provider"android:layout_width="match_parent"android:layout_height="wrap_content"android:textSize="18sp"android:text="Criteria过滤获取定位设备"/><TextViewandroid:id="@+id/tv_see"android:textSize="24sp"android:textColor="#FF00ff00"android:layout_width="match_parent"android:layout_height="wrap_content"/><TextViewandroid:text="定位设备:"android:textSize="24sp"android:layout_width="match_parent"android:layout_height="wrap_content"/><ListViewandroid:id="@+id/list_view"android:layout_width="match_parent"android:layout_height="150dp"/><Buttonandroid:id="@+id/btn_get_data"android:layout_width="match_parent"android:layout_height="wrap_content"android:textSize="24sp"android:text="点击获取位置信息"/><EditTextandroid:id="@+id/et_content"android:layout_width="match_parent"android:layout_height="200dp"/>
</LinearLayout>
listView 布局文件 list_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"android:textSize="20sp"android:textColor="#ff0f"android:layout_width="match_parent"android:layout_height="match_parent"></TextView>
权限配置 AndroidManifest.xml
<!-- 配置 读取位置权限ACCESS_FINE_LOCATION location 访问精细定位ACCESS_COARSE_LOCATION 访问粗略定位GPS--><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
相关文章:
Android : GPS定位 获取当前位置—简单应用
示例图: MainActivity.java package com.example.mygpsapp;import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat;import android.Manif…...
目标检测——R-CNN算法解读
论文:Rich feature hierarchies for accurate object detection and semantic segmentation 作者:Ross Girshick, Jeff Donahue, Trevor Darrell, Jitendra Malik 链接:https://arxiv.org/abs/1311.2524 代码:http://www.cs.berke…...
基于傅里叶变换的运动模糊图像恢复算法matlab仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1、傅里叶变换与图像恢复 4.2、基于傅里叶变换的运动模糊图像恢复算法原理 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 %获取角度 img…...
使用mock.js模拟数据
一、安装mock.js npm i mockjs 二、配置JSON文件 我们创建一个mock文件夹,用于存放mock相关的模拟数据和代码实现。 我们将数据全部放在xxx.json文件夹下,里面配置我们需要的JSON格式的数据。 注意:json文件中不要留有空格,否则…...
Android Handler同步屏障:深入解析
Android Handler同步屏障:深入解析 在Android开发中,Handler和MessageQueue是处理线程间通信的重要组件。除了常见的消息发送和处理功能,Handler还提供了一个高级特性:同步屏障。本文将深入探讨这一特性,包括它的工作…...
HT for Web (Hightopo) 使用心得(5)- 动画的实现
其实,在 HT for Web 中,有多种手段可以用来实现动画。我们这里仍然用直升机为例,只是更换了场景。增加了巡游过程。 使用 HT 开发的一个简单网页直升机巡逻动画(Hightopo 使用心得(5)) 这里主…...
Leetcode(面试题 08.01.)三步问题
文章目录 前言一、题目分析二、算法原理1.状态表示2.状态转移方程3.初始化4.填表顺序5.返回值是什么 三、代码实现总结 前言 在本文章中,我们将要详细介绍一下Leetcode(面试题 08.01.)三步问题相关的内容 一、题目分析 1.小孩可以上一阶,两阶ÿ…...
AIGC: 关于ChatGPT中输出表格/表情/图片/图表这些非文本的方式
ChatGPT 不止是 文本输出 ChatGPT是一个文本模型, 它本身并不能直接去生成图片图表等内容在我们的工作当中,经常需要通过表格, 图表的方式去进行数据的处理和展示在这种情况下,GPT由于不支持去直接的生成图片和图表,我们还能够使用它的GPT帮…...
聊聊logback的addtivity属性
序 本文主要研究一下logback的addtivity属性 LoggerModel ch/qos/logback/classic/model/LoggerModel.java PhaseIndicator(phase ProcessingPhase.SECOND) public class LoggerModel extends Model {private static final long serialVersionUID 5326913660697375316L;S…...
在网络安全护网中,溯源是什么?
在网络安全护网中,溯源是什么? 在网络安全护网中,溯源是指通过收集、分析和解释数字证据来追踪和还原网络攻击或其他网络犯罪活动的过程。它旨在确定攻击者的身份、行为和意图,以便采取适当的对策,并为法律机构提供必…...
【刷题】动态规划
动态规划 139. 单词拆分(一维) 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 示例 1&…...
hadoop操作
文件操作 注意当前所在的路径,创建一个mytest文件夹 创建一个1.txt文件 将1.txt文件移动到mytest中,通过mv改名字,然后查看mytest文件夹的txt文件变成了test.txt 删除文件 上传下载文件 新建1.txt 然后编辑它 随便输入什么 上传 然后看看网…...
角色管理--高级产品经理岗
研发组织管理--角色管理--高级产品经理岗 定位 产品从规划到推进落地的绝对主力,同时能赋能新人,带领新人高质,高效的完成产品的各项工作; 所需资质 某一领域产品专家,有产品架构能力,熟悉产品落地流程…...
nginx: [alert] could not open error log file
先把cmd的报错信息粘出来 nginx: [alert] could not open error log file: CreateFile() “logs/error.log” failed (3: The system cannot find the path specified) 2023/11/29 11:27:37 [emerg] 5040#18772: CreateDirectory() “D:\enviroment\nginx-1.24.0\conf/temp/cli…...
MySQL数据库:外键、唯一键、唯一索引
目录 说明 一、如果要使用外键,表的存储引擎选择哪个? 1.1 答 1.2 示范 1.2.1 主表 (1)MyISAM的表:masterTable2 (2)InnoDB的表:masterTable1 1.2.2 从表 (1&am…...
CSS核心功能手册:从熟悉到精通
CSS核心功能代码 文章目录 CSS核心功能代码[toc]参考HTML代码尺寸操作设置元素尺寸内边距外边距设置默认布局边距用途和使用场景: 背景设置**背景颜色 (background-color)**:**背景图像 (background-image)**:**背景重复 (background-repeat)**:**背景位置 (backgro…...
编程的重要性及解决技术难题的方法
看到这个话题之后,出于好奇,使用某chat,输入相应主题得到的一篇文章,分享给大家。 PS:现在不同版本的chat和其快速更新升级也可以说是编程的结果,其重要性和发展历程也反映了编程的重要性。 一、编程的重要…...
如何成为一名高效的前端开发者(10X开发者)
如今,每个人都想成为我们所说的“10倍开发者”。然而,这个术语经常被误解和高估。 本质上,一个高效或者10倍开发者,在我看来,是指那些能够充分利用所有可用工具的人,通过让这些工具处理冗余和重复的任务&am…...
Docker port 命令
docker port:列出指定的容器的端口映射,或者查找将PRIVATE_PORT NAT到面向公众的端口。 语法 docker port [OPTIONS] CONTAINER [PRIVATE_PORT[/PROTO]]实例 查看容器mymysql的端口映射情况: docker port mymysql##效果如下: …...
PostgreSQL-SQL联表查询LEFT JOIN 数据去重复
我们在使用left join联表查询时,如果table1中的一条记录对应了table2的多条记录,则会重复查出id相同的多条记录。 1、解决方法一 SELECT t1.* FROM table1 t1 LEFT JOIN table2 t2 ON t1.id t2.tid 第一种方法我们发现还是有重复数据 2、解决方法二…...
未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...
windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...
