当前位置: 首页 > news >正文

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定位 获取当前位置—简单应用

示例图&#xff1a; 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算法解读

论文&#xff1a;Rich feature hierarchies for accurate object detection and semantic segmentation 作者&#xff1a;Ross Girshick, Jeff Donahue, Trevor Darrell, Jitendra Malik 链接&#xff1a;https://arxiv.org/abs/1311.2524 代码&#xff1a;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文件夹&#xff0c;用于存放mock相关的模拟数据和代码实现。 我们将数据全部放在xxx.json文件夹下&#xff0c;里面配置我们需要的JSON格式的数据。 注意&#xff1a;json文件中不要留有空格&#xff0c;否则…...

Android Handler同步屏障:深入解析

Android Handler同步屏障&#xff1a;深入解析 在Android开发中&#xff0c;Handler和MessageQueue是处理线程间通信的重要组件。除了常见的消息发送和处理功能&#xff0c;Handler还提供了一个高级特性&#xff1a;同步屏障。本文将深入探讨这一特性&#xff0c;包括它的工作…...

HT for Web (Hightopo) 使用心得(5)- 动画的实现

其实&#xff0c;在 HT for Web 中&#xff0c;有多种手段可以用来实现动画。我们这里仍然用直升机为例&#xff0c;只是更换了场景。增加了巡游过程。 使用 HT 开发的一个简单网页直升机巡逻动画&#xff08;Hightopo 使用心得&#xff08;5&#xff09;&#xff09; 这里主…...

Leetcode(面试题 08.01.)三步问题

文章目录 前言一、题目分析二、算法原理1.状态表示2.状态转移方程3.初始化4.填表顺序5.返回值是什么 三、代码实现总结 前言 在本文章中&#xff0c;我们将要详细介绍一下Leetcode(面试题 08.01.)三步问题相关的内容 一、题目分析 1.小孩可以上一阶&#xff0c;两阶&#xff…...

AIGC: 关于ChatGPT中输出表格/表情/图片/图表这些非文本的方式

ChatGPT 不止是 文本输出 ChatGPT是一个文本模型, 它本身并不能直接去生成图片图表等内容在我们的工作当中&#xff0c;经常需要通过表格, 图表的方式去进行数据的处理和展示在这种情况下&#xff0c;GPT由于不支持去直接的生成图片和图表&#xff0c;我们还能够使用它的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…...

在网络安全护网中,溯源是什么?

在网络安全护网中&#xff0c;溯源是什么&#xff1f; 在网络安全护网中&#xff0c;溯源是指通过收集、分析和解释数字证据来追踪和还原网络攻击或其他网络犯罪活动的过程。它旨在确定攻击者的身份、行为和意图&#xff0c;以便采取适当的对策&#xff0c;并为法律机构提供必…...

【刷题】动态规划

动态规划 139. 单词拆分&#xff08;一维&#xff09; 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意&#xff1a;不要求字典中出现的单词全部都使用&#xff0c;并且字典中的单词可以重复使用。 示例 1&…...

hadoop操作

文件操作 注意当前所在的路径&#xff0c;创建一个mytest文件夹 创建一个1.txt文件 将1.txt文件移动到mytest中&#xff0c;通过mv改名字&#xff0c;然后查看mytest文件夹的txt文件变成了test.txt 删除文件 上传下载文件 新建1.txt 然后编辑它 随便输入什么 上传 然后看看网…...

角色管理--高级产品经理岗

研发组织管理--角色管理--高级产品经理岗 定位 产品从规划到推进落地的绝对主力&#xff0c;同时能赋能新人&#xff0c;带领新人高质&#xff0c;高效的完成产品的各项工作&#xff1b; 所需资质 某一领域产品专家&#xff0c;有产品架构能力&#xff0c;熟悉产品落地流程…...

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数据库:外键、唯一键、唯一索引

目录 说明 一、如果要使用外键&#xff0c;表的存储引擎选择哪个&#xff1f; 1.1 答 1.2 示范 1.2.1 主表 &#xff08;1&#xff09;MyISAM的表&#xff1a;masterTable2 &#xff08;2&#xff09;InnoDB的表&#xff1a;masterTable1 1.2.2 从表 &#xff08;1&am…...

CSS核心功能手册:从熟悉到精通

CSS核心功能代码 文章目录 CSS核心功能代码[toc]参考HTML代码尺寸操作设置元素尺寸内边距外边距设置默认布局边距用途和使用场景&#xff1a; 背景设置**背景颜色 (background-color)**:**背景图像 (background-image)**:**背景重复 (background-repeat)**:**背景位置 (backgro…...

编程的重要性及解决技术难题的方法

看到这个话题之后&#xff0c;出于好奇&#xff0c;使用某chat&#xff0c;输入相应主题得到的一篇文章&#xff0c;分享给大家。 PS&#xff1a;现在不同版本的chat和其快速更新升级也可以说是编程的结果&#xff0c;其重要性和发展历程也反映了编程的重要性。 一、编程的重要…...

如何成为一名高效的前端开发者(10X开发者)

如今&#xff0c;每个人都想成为我们所说的“10倍开发者”。然而&#xff0c;这个术语经常被误解和高估。 本质上&#xff0c;一个高效或者10倍开发者&#xff0c;在我看来&#xff0c;是指那些能够充分利用所有可用工具的人&#xff0c;通过让这些工具处理冗余和重复的任务&am…...

Docker port 命令

docker port&#xff1a;列出指定的容器的端口映射&#xff0c;或者查找将PRIVATE_PORT NAT到面向公众的端口。 语法 docker port [OPTIONS] CONTAINER [PRIVATE_PORT[/PROTO]]实例 查看容器mymysql的端口映射情况&#xff1a; docker port mymysql##效果如下&#xff1a; …...

PostgreSQL-SQL联表查询LEFT JOIN 数据去重复

我们在使用left join联表查询时&#xff0c;如果table1中的一条记录对应了table2的多条记录&#xff0c;则会重复查出id相同的多条记录。 1、解决方法一 SELECT t1.* FROM table1 t1 LEFT JOIN table2 t2 ON t1.id t2.tid 第一种方法我们发现还是有重复数据 2、解决方法二…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...