当前位置: 首页 > 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、解决方法二…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机&#xff0c;因为在使用过程中发现 Airsim 对外部监控相机的描述模糊&#xff0c;而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置&#xff0c;最后在源码示例中找到了&#xff0c;所以感…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

Muffin 论文 现有方法 CRADLE 和 LEMON&#xff0c;依赖模型推理阶段输出进行差分测试&#xff0c;但在训练阶段是不可行的&#xff0c;因为训练阶段直到最后才有固定输出&#xff0c;中间过程是不断变化的。API 库覆盖低&#xff0c;因为各个 API 都是在各种具体场景下使用。…...

Ubuntu Cursor升级成v1.0

0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开&#xff0c;快捷键也不好用&#xff0c;当看到 Cursor 升级后&#xff0c;还是蛮高兴的 1. 下载 Cursor 下载地址&#xff1a;https://www.cursor.com/cn/downloads 点击下载 Linux (x64) &#xff0c;…...