GPS开发、定位修改

news/2025/2/22 15:41:40/

GPS开发、定位修改

修改于
AOSP
android7.1.1_r1
NMF26F
openjdk8.0
Mint-linux
nexus5x
原作者:https://blog.csdn.net/aggresss/article/details/54323034
指出文中错误(自己编译时候遇到的)并修正
固件共享出来是不可能的,谁知道我的固件里有没有后门,还是用源码自己编译的比较放心

新鲜的源码最好make -j8 看看能否编译通过

  1. 关于kernel 层

a.隐式函数问题:create_proc_entry 找不到改为 proc_create 编译通过
新建设备文件操作方法表 替换相关方法即可

static struct file_operations m_fops = {  .owner = THIS_MODULE,  // .open = vp_open,  // .release = vp_release, .read = vp_proc_read,  .write = vp_proc_write,   
};  
proc_create(VP_DEVICE_PROC_NAME, 0, NULL, &m_fops);

b.修改drivers/Makefile文件,添加一行:obj-$(CONFIG_HELLO) += vp/

obj-$(CONFIG_VP) += vp/  

c.编译完成内核后会生成一个Image-gz-dtb替换源码中的即可
d.交叉编译环境用源码里面的即可(参考:https://www.jianshu.com/p/7c8f4bcb07bc)

  1. 第二步,修改HAL
    a.vp.c文件中缺少两个头文件
#include <string.h>
#include <stdlib.h>

b.


//LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/hw
//改为
LOCAL_MODULE_PATH := hw
  1. 第四步,修改Framework
    a.路径错误

core/java/android/os/IVirtualPosition.aidl /

改为


core/java/android/os/IVirtualPositionService.aidl /

**此时注意
sepolicy 文件一定要修改 否则不能修改(7.1.1在system文件加下面)
一定要更新framework: make update-api 否则会报错

  1. 文中除新建文件外 请不要替换
  2. 进入 frameworks/base/services/core/jni 目录
    肯能不没有com_android_server_location_GpsLocationProvider.cpp文件
    (7.1.1)改为Gns什么的道理一样
    不要忘记导入头文件
#include "hardware/vp.h"
#include <fcntl.h>  

此时马上成功了 md又出现了几个错误~!!!

a.VirtualPositionService: VirtualPosition JNI: failed to get vp stub module.

解决办法:
需要单独编译 这个模块mmm /hardxxx/libxxx/module/vp/
生成vp_deafult.so
(此时把app文件夹放入packages/apps/下 mmm编译app自动安装进系统)
然后make snod 重新生成system.img

b.open /dev/vp: Permission denied
解决办法:
在domain.te文件中添加
allow domain vp_device:chr_file rw_file_perms;

在untrusted_app.te文件中添加
allow untrusted_app virtualposition_service:service_manager find;

在system_app.te文件中添加
allow system_app virtualposition_service:service_manager find;

这个文件system/core/rootdir/ueventd.rc加入
/dev/vp 0666 root root

c.01-13 04:44:09.981 918-918/system_process E/LocSvc_afw: E/const GpsGeofencingInterface get_geofence_interface(), dlopen for libgeofence.so failed, error = dlopen failed: library “libloc_api_v02.so” not found

解决办法:(此so只对应nmf26f android N 不要乱用)
https://github.com/MoKee/android_vendor_lge_bullhead/blob/mkn-mr1/proprietary/lib/libloc_api_v02.so

https://github.com/mikalackis/proprietary_vendor_lge_bullhead/blob/NMF26F/vendor/lib64/libgeofence.so

此时源码已经改完!

欢迎指正
需要到 室外!室外!室外!测试
在这里插入图片描述


http://www.ppmy.cn/news/877401.html

相关文章

Android-Framework-GPS定位原理和修改

一、 Android定位功能原理概述 1.1 Android三种定位提供方式。 Android 应用层获取定位可以通过三种定位提供方式&#xff1a;gps&#xff0c;network&#xff0c;passive。 gps –>&#xff08;GPS&#xff0c;AGPS&#xff09;&#xff1a; GPS位置提供者的名称。该提供商…

Autoware 中 GPS 定位问题

本文转载自 [1] isl_qdu. Autoware 中 GPS 定位问题 [EB/OL]. https://www.jianshu.com/p/9bfdd11c3fa8, 2019-03-04/2021-09-25. [2] LeonHuo. Autoware 笔记 No. 5——基于GNSS的定位 [EB/OL]. https://www.cnblogs.com/hgl0417/p/11504570.html, 2019-09-11/2021-09-25. 一…

【微信小程序-uniapp】CustomDialog 居中弹窗组件

1. 效果图 2. 组件完整代码 <template><uni-popup :ref="ref" type="center" @change

ES6: Proxy概念及用法

Proxy如其名&#xff0c; 它的作用是在对象和和对象的属性值之间设置一个代理&#xff0c;获取该对象的值或者设置该对象的值&#xff0c; 以及实例化等等多种操作&#xff0c; 都会被拦截住&#xff0c; 经过这一层我们可以统一处理&#xff0c;我们可以认为它就是“代理器” …

【转】nbsp;多姿多彩的宜兴话

http://hi.baidu.com/&#xfffd;lounge/blog/item/e64710cd66da6394c91768e1.html 【转】 多姿多彩的宜兴话 源于生活&#xff0c;传承古音&#xff0c;吸收外来语&#xff0c;合音&#xff0c;多音&#xff0c;文白两读&#xff0c;方言岛&#xff0c;构成了一个多姿多彩的…

服装店起名的知识

服装店起名第一要考虑服装本身用户群体的定位&#xff0c;如女装男装童装&#xff0c;不同用户定位肯定名字不一定&#xff0c;其次服装店起名要考虑名字好记&#xff0c;好读&#xff0c;有利于店铺品牌的传播和推广&#xff0c;如何服装店取名怎么样&#xff0c;有什么名字来…

免费药店简介api 获取药店详情

药店大全可查询药店联系电话,药店邮箱,药房网址、药房地址等相关药店简介信息。 !!注意:这里logo是医院的LOGO,由于有些医院暂且还没有LOGO,网站返回的默认 logo=img/drugstore/default.jpg ;这里开发者可以自由的修改默认返回的LOGO。 对于一些不存在的的参数值这里返…

中国地理

中国地理常识大全 1、中国位于亚洲东部、太平洋西岸&#xff0c;它的版图被形象地比作一只头朝东尾朝西的金鸡&#xff0c;地势西高东低。 2、中国陆地面积约960万平方公里&#xff0c;在世界各国中&#xff0c;仅次于俄罗斯、加拿大&#xff0c;居第三位&#xff0c;差不多同整…