unity制作app(3)--gps定位

news2024/11/26 10:04:17

1.unity中定位Unity之GPS定位(高德解析)_unity gps定位-CSDN博客

代码需要稍微修改一下,先把脚本绑到一个button上试一试!

2.先去高德地图认证(app定位)

创建应用和 Key-Web服务 API | 高德地图API (amap.com)

 3.代码大致如下所示:

using UnityEngine;
using System.Collections;
using LitJson;
using UnityEngine.Networking;
//using UnityTools;
using UnityEngine.Android;
namespace Location
{
    public class LocationTest : MonoBehaviour
    {
        private string longitude;//经度
        private string latitude;//纬度
        void Start() => StartCoroutine(StartGPS());
        IEnumerator StartGPS()
        {
            //Unity给我们提供的一个相关权限类 Permission,可以判断当前相关权限是否开启
            if (Permission.HasUserAuthorizedPermission(Permission.FineLocation))
            {
                //如果没有开启就提示开启权限
                Permission.RequestUserPermission(Permission.FineLocation);
            }
            Debug.LogError("开始获取GPS信息");
            // 检查位置服务是否可用  
            if (!Input.location.isEnabledByUser)
            {
                Debug.Log("位置服务不可用");
                yield break;
            }
            // 查询位置之前先开启位置服务
            Debug.Log("启动位置服务");
            Input.location.Start();
            // 等待服务初始化  
            int maxWait = 20;
            while (Input.location.status == LocationServiceStatus.Initializing && maxWait > 0)
            {
                Debug.Log(Input.location.status.ToString() + ">>>" + maxWait.ToString());
                yield return new WaitForSeconds(1);
                maxWait--;
            }
            // 服务初始化超时  
            if (maxWait < 1)
            {
                Debug.Log("服务初始化超时");
                yield break;
            }
            // 连接失败  
            if (Input.location.status == LocationServiceStatus.Failed)
            {
                Debug.Log("无法确定设备位置");
                yield break;
            }
            else
            {
                Debug.Log("Location:  \n" +
                    "纬度:" + Input.location.lastData.latitude + " \n" +
                           "经度:" + Input.location.lastData.longitude + " \n" +
                           "海拔:" + Input.location.lastData.altitude + " \n" +
                           "水平精度:" + Input.location.lastData.horizontalAccuracy + " \n" +
                           "垂直精度:" + Input.location.lastData.verticalAccuracy + " \n" +
                           "时间戳:" + Input.location.lastData.timestamp);
                longitude = Input.location.lastData.longitude.ToString();
                latitude = Input.location.lastData.latitude.ToString();
                StartCoroutine(GetRequest(
                    "http://restapi.amap.com/v3/geocode/regeo?key=" + key + "&location=" + longitude + "," + latitude));
            }
            // 停止服务,如果没必要继续更新位置,(为了省电
            Input.location.Stop();
        }
        string key = "";       //去高德地图开发者申请
        IEnumerator GetRequest(string uri)
        {
            using (UnityWebRequest webRequest = UnityWebRequest.Get(uri))
            {
                // Request and wait for the desired page.
                yield return webRequest.SendWebRequest();
                string[] pages = uri.Split('/');
                int page = pages.Length - 1;
                if (webRequest.isNetworkError)
                {
                    // Debug.Log(pages[page] + ": Error: " + webRequest.error);
                }
                else
                {
                    JsonData jd = JsonMapper.ToObject(webRequest.downloadHandler.text);
                    Debug.LogError("rn" + jd["regeocode"]["formatted_address"].ToString());
                }
            }
        }
    }
}

4.此时无论电脑,还是手机,都无法获得定位权限,在手机的应用权限中,甚至找不到应用!

Unity 在Unity端申请Android权限_unity android 权限-CSDN博客

具体的开启过程如下:权限是一劳永逸的,做做没坏处

第一步:

第二步:在新建的Assets\Plugins\Android目录下 ,增加对应的权限!

所有的24个权限Android 中的危险权限详细整理_Android_脚本之家 (jb51.net)

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

第三步:此时依旧无法申请,手机权限管理中找不到unity应用,同时发现unity是可以调用手机模拟器的,这下任务简单了太多太多。

第四步:在手机安装的时候确实有权限提示,但程序执行后感觉动态链接是失效的

 第五步:根据AI的回答,继续进行尝试吧,浪费时间了

第六步:此时other settings中API的等级情况如下图所示:

有已知

 大胆推测是最低版本设置过高!修改为:

改了以后还不行!

第七步:再加一个launcher  manifest,加了也不行

第八步:实测手机中已经开启了gps功能,也就是不会显示22。

但是27行的会出问题!

把start放到上面以后,任务顺利完成

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1639483.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java】HOT100 贪心算法

目录 理论基础 一、简单贪心 LeetCode455&#xff1a;分发饼干 二、中等贪心 2.1 序列问题 LeetCode376&#xff1a;摆动序列 2.2 贪心股票问题 LeetCode121&#xff1a;买卖股票的最佳时机 LeetCode121&#xff1a;买卖股票的最佳时机ii 2.3 两个维度权衡问题 LeetCode135&…

GitHub Copilot Workspace:欢迎进入原生Copilot开发环境

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

华为Pura70发布,供应链公司进入静默保密期

保密措施&#xff1a;与华为Pura70发布相关的供应链公司在产品发布前后处于静默保密期。这可能是由于华为对于手机供应链的一些信息处于保密状态&#xff0c;尤其是关于麒麟芯片的代工厂商等敏感信息。这种保密措施有助于保持产品的神秘感&#xff0c;调动用户的好奇心&#xf…

mac电脑关于ios端的appium真机自动化测试环境搭建

一、app store 下载xcode,需要登录apple id 再开始下载 二、安装homebrew 1、终端输入命令&#xff1a; curl -fsSL <https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh>如果不能直接安装&#xff0c;而是出现了很多内容&#xff0c;那么这个时候不要着急&…

MFC 列表控件修改实例(源码下载)

1、本程序基于前期我的博客文章《MFC下拉菜单打钩图标存取实例&#xff08;源码下载&#xff09;》 2、程序功能选中列表控件某一项&#xff0c;修改这一项的按钮由禁止变为可用&#xff0c;双击这个按钮弹出对话框可对这一项的记录数据进行修改&#xff0c;点击确定保存修改数…

《R语言与农业数据统计分析及建模》学习——数字图像处理

数字图像处理&#xff08;digital image processing&#xff09;又称计算机图像处理&#xff0c;它是指将图像信号转换成数字信号并利用数字图像处理计算机对其进行处理的过程。 常见的数字图像处理是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理。 R语言…

信息管理与信息系统就业方向及前景分析

信息管理与信息系统(IMIS)专业的就业方向十分广泛&#xff0c;包含计算机方向、企业信息化管理、数据处理和数据分析等&#xff0c;随着大数据、云计算、人工智能、物联网等技术的兴起&#xff0c;对能够处理复杂信息系统的专业人才需求激增&#xff0c;信息管理与信息系统就业…

数据分析:基于DESeq2的转录组功能富集分析

介绍 DESeq2常用于识别差异基因&#xff0c;它主要使用了标准化因子标准化数据&#xff0c;再根据广义线性模型判别组间差异&#xff08;组间残差是否显著判断&#xff09;。在获取差异基因结果后&#xff0c;我们可以进行下一步的富集分析&#xff0c;常用方法有基于在线网站…

Mac 安装 JDK21 流程

一、下载JDK21 访问Oracle官方网站或选择OpenJDK作为替代品。Oracle JDK从11版本开始是商业的&#xff0c;可能需要支付费用。OpenJDK是一个免费开源选项。 Oracle JDK官方网站&#xff1a;Oracle JDK Downloads OpenJDK官方网站&#xff1a;OpenJDK Downloads 这里以JDK21为…

Servlet详解(从xml到注解)

文章目录 概述介绍作用 快速入门Servelt的执行原理执行流程&#xff1a;执行原理 生命周期概述API 服务器启动&#xff0c;立刻加载Servlet对象(理解)实现Servlet方式(三种)实现Servlet接口实现GenericServlet抽象类&#xff0c;只重写service方法实现HttpServlet实现类实现Htt…

uni-app scroll-view隐藏滚动条的小细节 兼容主流浏览器

开端 想写个横向滚动的列表适配浏览器&#xff0c;主要就是隐藏一下滚动条在手机上美观一点。 但是使用uni-app官方文档建议的::-webkit-scrollbar在目标标签时发现没生效。 .scroll-view_H::-webkit-scrollbar{display: none; }解决 F12看了一下&#xff0c;原来编译到浏览…

基于 Wireshark 分析 IP 协议

一、IP 协议 IP&#xff08;Internet Protocol&#xff09;协议是一种网络层协议&#xff0c;它用于在计算机网络中实现数据包的传输和路由。 IP协议的主要功能有&#xff1a; 1. 数据报格式&#xff1a;IP协议将待传输的数据分割成一个个数据包&#xff0c;每个数据包包含有…

Ant Design助力:实现用户列表的优雅展示与管理

文章目录 概要前端讲解登录组件注册组件用户列表组件 后端讲解连接数据库db.js路由routes.jsexpress应用app.js 启动项目小结 概要 在上一篇博客&#x1f6aa;中&#xff0c;我们已经成功实现了登录注册系统的基本功能。现在&#xff0c;我们将进一步完善系统&#xff0c;实现…

第一课 自动驾驶概述

1. contents 2. 什么是无人驾驶/自动驾驶 3 智慧出行大智慧 4. 无人驾驶的发展历程

用户中心(末)

文章目录 开发用户注销前后端后端前端 补充用户注册校验逻辑前后端设计后端前端 后端代码优化封装通用返回对象封装全局异常处理全局请求日志和登录校验 TODO 前端代码优化 开发用户注销前后端 后端 当用户登录成功之后&#xff0c;我们在请求体的 session 中保存了用户的登录…

一对一WebRTC视频通话系列(一)—— 创建页面并显示摄像头画面

本系列博客主要记录WebRtc实现过程中的一些重点&#xff0c;代码全部进行了注释&#xff0c;便于理解WebRTC整体实现。 一、创建html页面 简单添加input、button、video控件的布局。 <html><head><title>WebRTC demo</title></head><h1>…

vue2(4)之scoped解决样式冲突/组件通信/非父子通信/ref和$refs/异步更新/.sync/事件总线/provide和inject

vue2 一、学习目标1.组件的三大组成部分&#xff08;结构/样式/逻辑&#xff09;2.组件通信3.综合案例&#xff1a;小黑记事本&#xff08;组件版&#xff09;4.进阶语法 二、scoped解决样式冲突**1.默认情况**&#xff1a;2.代码演示3.scoped原理4.总结 三、data必须是一个函数…

自动驾驶规划与控制技术解析

目录 1. 自动驾驶技术 2.定位location 3. 地图HD Map ​编辑 4 预测prediction 5 自动驾驶路径规划 6. 自动驾驶路径规划 7. 规划planning 8. 视频路径 1. 自动驾驶技术 2.定位location 3. 地图HD Map 4 预测prediction 5 自动驾驶路径规划 6. 自动驾驶路径规划 7.…

IDEA 2022.1版本开始,可以直接运行Markdown里的命令行

参照这种格式&#xff1a; shell mvn clean install注意idea支持的版本&#xff1a;是从 2022.1版本开始的。 ps&#xff1a;之前有人写过了&#xff0c;感觉很实用但是蛮多开发者不一定会知道的功能。 参考资料&#xff1a; https://www.cnblogs.com/didispace/p/16144107.h…

2.4Java全栈开发前端+后端(全栈工程师进阶之路)-前端框架VUE3-基础-Vue组件

初识Vue组件 Vue中的组件是页面中的一部分&#xff0c;通过层层拼装&#xff0c;最终形成了一个完整的组件。这也是目前前端最流行的开发方 式。下面是Vue3官方给出的一张图&#xff0c;通过图片能清楚的了解到什么是Vue中的组件。 图的左边是一个网页&#xff0c;网页分为了…