Android 添加LBS辅助定位

1.软件需求:

某Android设备没有sim卡但其支持定位,客户需求为在已有的Android中添加LBS网络定位,用以辅助gps定位。

2.思路分析

首先看到这个需求笔者是比较懵逼的,秉持着客户是上帝的原则,笔者首先先了解了一下什么事LBS定位,在网上找了很多文章,大部分文章较为冗余,笔者简要列举两篇文章帮助大家了解LBS定位是什么。

关于Android中的位置服务解读_com.android.location.fused-CSDN博客文章浏览阅读3.2k次,点赞3次,收藏5次。关于Android中的位置服务解读一提到位置或者定位,一般的开发者会第一时间百度地图和高德。这么做其实把自己仅仅当成了一个Api caller。还是细细了解一下系统的关于位置的架构比较好。下面开始细细品味。不说第三方定位,系统原生带有位置提供者相关的API有三种:提供者描述NETWORK_PROVIDERGMS或者手机制造商,原生手机不装GMS是为空的。装了GMS会出现“Google 位置信息服务”;GPS_PROVIDER手机GPS硬件,硬件有这个模块一般都支持,注意室_com.android.location.fusedhttps://blog.csdn.net/kangear/article/details/106586846/Android定位--GPS定位与LBS基站定位_android location.getprovider lbs-CSDN博客文章浏览阅读6.7k次。虽然现在第三方的定位非常强大,非常方便,但是我们在只需要很简单的定位,且不想用第三方的时候,我们可以自己动动手,基于GPS卫星定位和LBS基站定位的方式获取当前位置。其实我这里测试LBS定位比GPS定位出来的详细信息更加准确,GPS定位超级费电,可能是我这手机比较low,打开一会儿手机就发热,电池掉的也飞快。_android location.getprovider lbshttps://blog.csdn.net/chengliang0315/article/details/53911390

通过以上两篇文章的内容分析,相信大家对定位模式已经有了一个大体的了解,而我们的LBS定位大家可以简单的理解为设备通过连接的网络实现的定位功能,在国内主要使用的网络定位供应商是百度地图(com.baidu.map.location)和高德地图(com.amap.android.location),笔者选择高德地图提供的(com.amap.android.location)来实现合入LBS辅助定位。

3.实现方法

通俗的来讲说白了就是将高德地图提供的网络定位服务包内置进自己的Android 设备中,从而达到LBS网络辅助定位的功能。

实现思路:

//lbs定位属性相关修改点

1.frameworks/base/core/res/res/values/config.xml

//将需要内置的apk放入指定位置中

2.packages/apps/xxxxxxx/AMapLocation.apk

//在放入apk中的同级目录下添加Android.mk文件

3.packages/apps/xxxxxxx/Android.mk

//定义宏控和开启宏控

4.alps/device/mediatek/system/common/device.mk

//验证方式

5.https://m.amap.com(浏览器搜索点击定位图标) && 命令查看包名

adb shell pm list packages 

1.frameworks/base/core/res/res/values/config.xml

//配置文件需要修改四处

//改为false
<bool name="config_enableNetworkLocationOverlay" translatable="false">false</bool>

//修改为自己合入的apk包名
<string name="config_networkLocationProviderPackageName" translatable="false">com.amap.android.location</string>

//修改为自己合入的apk包名
<string name="config_geocoderProviderPackageName" translatable="false">com.amap.android.location</string>

//将使用的包名放入到首位
<string-array name="config_locationProviderPackageNames" translatable="false">
    <!-- The standard AOSP fused location provider -->
    <item>com.amap.android.location</item>
</string-array>

2.系统需合入的aok需自己寻找添加

3.apk同目录下Android.mk文件

###重点关注带注释的属性值###


宏控名称
ifeq ($(strip $(HX_MAP_LOCATION_APP)), yes)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

//编译成功模块名称
LOCAL_MODULE := MapLocation
//编译所需apk
LOCAL_SRC_FILES := AMapLocation.apk

LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := APPS
LOCAL_BUILT_MODULE_STEM := package.apk 
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
#PRESIGNED  platform
//签名方式
LOCAL_CERTIFICATE := PRESIGNED
#LOCAL_PRIVILEGED_MODULE := true
#LOCAL_OVERRIDES_PACKAGES := Home Launcher2 Launcher3 MtkLauncher3 MtkLauncher3QuickStep Launcher3QuickStep
#LOCAL_MODULE_PATH := $(TARGET_OUT)/operator/app

#LOCAL_MULTILIB :=32
LOCAL_DEX_PREOPT := false
LOCAL_PRIVATE_PLATFORM_APIS := true
LOCAL_PRODUCT_MODULE := true

//该项可有可无,若报错请屏蔽,不报错正常即可
#LOCAL_ENFORCE_USES_LIBRARIES := false

include $(BUILD_PREBUILT)
endif

4.定义宏控

//注意此处的包名对应Android.mk文件的包名

ifeq ($(strip $(HX_MAP_LOCATION_APP)), yes)
  PRODUCT_PACKAGES += MapLocation
endif

5.adb shell pm list packages命令查看包名

4.总结

虽然只是一个简单的合入apk的问题,但是对于初学者来说,刚一接手还是比较懵逼的,在此做个笔记仅供大家学习参考。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【深海王国】小学生都能玩的语音模块?ASRPRO打造你的第一个智能语音助手(7)

Hi~ (o^^o)♪, 各位深海王国的同志们&#xff0c;早上下午晚上凌晨好呀~ 辛勤工作的你今天也辛苦啦(/≧ω) 今天大都督继续为大家带来系列——小学生都能玩的语音模块&#xff0c;帮你一周内快速学会语音模块的使用方式&#xff0c;打造一个可用于智能家居、物联网领域的语音助…

通过SDK使用百度智能云的图像生成模型SDXL

登录进入百度智能云控制台&#xff0c;在模型广场按照图像生成类别进行筛选&#xff0c;可以找到Stable-Diffusion-XL模型。点击Stable-Diffusion-XL模型的API文档后在弹出的新页面下拉可以找到SDK调用的说明。 import qianfandef sdxl(file: str, prompt: str, steps: int 2…

商品分页,商品模糊查询

一、商品分页 引入分页 定义分页主件的参数 在请求url上拼接参数 定义改变当前页码后触发的事件&#xff0c;把当前页码的值给到分页表单&#xff0c;重新查询 二、商品查询&#xff08;以商品的名称查询name为例&#xff09; 引入elementplus的from表单组件 定义一个FormData…

Spring源码十二:事件发布源码跟踪

上一篇我们在Spring源码十一&#xff1a;事件驱动中&#xff0c;介绍了spring refresh方法的initMessageSource方法与initApplicationEventMulticaster方法&#xff0c;举了一个简单的例子进行简单的使用的Spring为我们提供的事件驱动发布的示例。这一篇我们将继续跟踪源码&…

创建React项目

使用 create-react-app快速搭建开发环境 create-react-app 是一个快速创建React开发环境的工具&#xff0c;底层由Webpack构建&#xff0c;封装了配置细节&#xff0c;开箱即用。 安装npx npx是一个由Node.js官方提供的用于快速执行npm包中的可执行文件的工具&#xff0c;np…

如何给gitlab其他访问者创建账号并增加权限

嗨&#xff0c;今天创建了项目之后&#xff0c;我想把项目链接发送给其他人&#xff0c;让他下载这个项目&#xff0c;结果发现对方打开显示登录的界面&#xff0c;没错&#xff0c;他要想使用这个git下载项目&#xff0c;首先他的有一个git账号 接下来我找有权限的相关人员给他…

C语言之常用内存函数以及模拟实现

目录 前言 一、memcpy的使用和模拟实现 二、memmove的使用和模拟实现 三、memset的使用和模拟实现 四、memcmp的使用和模拟实现 总结 前言 本文主要讲述C语言中常用的内存函数&#xff1a;memcpy、memmove、memset、memcmp。内容不多&#xff0c;除了了解如何使用&#x…

前端根据目录生成模块化路由routes

根据约定大于配置的逻辑&#xff0c;如果目录结构约定俗成&#xff0c;前端是可以根据目录结构动态生成路由所需要的 route 结构的&#xff0c;这个过程是要在编译时 进行&#xff0c;生成需要的代码&#xff0c;保证运行时的代码正确即可 主流的打包工具都有对应的方法读取文…

在生产环境中部署Elasticsearch:最佳实践和故障排除技巧——聚合与搜索(三)

#在生产环境中部署Elasticsearch&#xff1a;最佳实践和故障排除技巧——聚合与搜索&#xff08;三&#xff09; 前言 文章目录 前言- 聚合和分析- 执行聚合操作- 1. 使用Java API执行聚合操作- 2. 使用CURL命令执行聚合操作- 1. 使用Java API执行度量操作- 2. 使用CURL命令执…

Java——继承(Inheritance)

一、继承简要介绍 1、继承是什么 在Java中&#xff0c;继承是一种面向对象编程的重要特性&#xff0c;它允许一个类&#xff08;子类或派生类&#xff09;继承另一个类&#xff08;父类或基类&#xff09;的属性和方法。继承的目的是实现代码的重用和设计的层次化。 子类通常…

探索LlamaIndex:如何用Django打造高效知识库检索

简介 LlamaIndex&#xff08;前身为 GPT Index&#xff09;是一个数据框架&#xff0c;为了帮助我们去建基于大型语言模型&#xff08;LLM&#xff09;的应用程序。 主要用于处理、构建和查询自定义知识库。 它支持多种数据源格式 excel&#xff0c;txt&#xff0c;pdf&…

DaViT(ECCV 2022,Microsoft)

paper&#xff1a;DaViT: Dual Attention Vision Transformers official implementation&#xff1a;https://github.com/dingmyu/davit third-party implementation&#xff1a;https://github.com/huggingface/pytorch-image-models/blob/main/timm/models/davit.py 出发点…

独家揭秘!格行随身WiFi‘骄傲’宣言背后的震撼行业的真相!随身WiFi行业内黑马

近几年以来&#xff0c;随行WiFi产品呈现爆发式增长&#xff0c;随行WiFi的火爆&#xff0c;是技术进步带给消费者的一种“福利”&#xff0c;各大直播间也充斥着品牌各异的随身WiFi。但真正脱颖而出、赢得消费者信赖的优质品牌却凤毛麟角。而其中最受欢迎的格行随身WiFi也因设…

Java语言+后端+前端Vue,ElementUI 数字化产科管理平台 产科电子病历系统源码

Java语言后端前端Vue,ElementUI 数字化产科管理平台 产科电子病历系统源码 Java开发的数字化产科管理系统&#xff0c;已在多家医院实施&#xff0c;支持直接部署。系统涵盖孕产全程&#xff0c;包括门诊、住院、统计和移动服务&#xff0c;整合高危管理、智能提醒、档案追踪等…

Stream练习

运用点&#xff1a; 流内数据类型转换(map)、filter、limit、skip、concat(让两个流合并) 题目&#xff1a; 操作1、2&#xff1a; ArrayList<String> manList new ArrayList<>();ArrayList<String> womanList new ArrayList<>();Collections.addAl…

C++之static关键字

文章目录 前提正文多重定义extern关键字使用staticstatic 全局变量(在.cpp文件中定义)static变量存放在哪里static变量可不可以放在.h文件中 static 函数static局部变量static 成员变量static 成员函数 总结参考链接 前提 好吧&#xff0c;八股&#xff0c;我又回来了。这次想…

8.14 矢量图层面要素2.5D渲染

文章目录 前言2.5D渲染QGis设置面符号为2.5D二次开发代码实现2.5D 总结 前言 本章介绍矢量图层面要素2.5D渲染的使用说明&#xff1a;文章中的示例代码均来自开源项目qgis_cpp_api_apps 2.5D渲染 2.5D渲染可以将多边形渲染为类3D效果。 QGis设置面符号为2.5D 以"hou…

数据库7.4

第二次作业 1.登陆数据库 2.创建数据库zoo 3.修改数据库zoo字符集为gbk 4.选择当前数据库为zoo 5.查看创建数据库zoo信息 6.删除数据库zoo C:\Windows\System32>mysql -uroot -p20040830Nmx mysql> create database zoo; alter database zoo character set gbk; mys…

Java springboot校园管理系统源码

Java springboot校园管理系统源码-014 下载地址&#xff1a;https://download.csdn.net/download/xiaohua1992/89364089 技术栈 运行环境&#xff1a;jdk8 tomcat9 mysql5.7 windows10 服务端技术&#xff1a;Spring Boot Mybatis VUE 使用说明 1.使用Navicati或者其它工…

VBA初学:零件成本统计之三(获取材料外协的金额)

第三步&#xff0c;从K3的数据库中获取金额 我这里是使用循环&#xff0c;通过任务单号将金额汇总出来&#xff0c;如果使用数组的话&#xff0c;还要按任务单写GROUP&#xff0c;还要去对应&#xff0c;不如循环直接一点 获取材料和外协金额的表格Sub getje()Dim rowcount A…