草庐IT

安卓 OBD-II : How to get distance traveled in meters?

coder 2023-12-19 原文

我正在制作一个通过蓝牙连接到 OBD-II 设备(ELM327 - http://www.dx.com/p/elm327-bluetooth-odb2-v1-5-car-diagnostic-interface-126921#.V86wdih97IU)的安卓应用。

我也在使用 https://github.com/pires/obd-java-api/库从设备中获取数据。

我能够连接到设备并毫无问题地获取数据,但是当我尝试检索距离时,它总是以 KM 为单位返回。有没有办法以米为单位获取旅行的距离?

我尝试使用 Torque Lite 应用程序 (https://play.google.com/store/apps/details?id=org.prowl.torquefree&hl=en),它能够以 KM 为单位返回行程距离,保留一位小数 (0.0 KM)。

想知道它使用什么命令来实际获取值,或者它是从其他东西派生的。

最佳答案

不幸的是,根本不存在表示行驶距离的标准 PID。参见 this获取标准 PID 列表。

您现在使用的代码 DistanceSinceCCCommand 使用标准模式 01 PID 0x31 来检索自上次清除代码命令以来的行驶距离。 PID 的单位是整数千米,因此无法为您提供所需的精度。

I tried using the Torque Lite app (https://play.google.com/store/apps/details?id=org.prowl.torquefree&hl=en) and its able to return Trip distance in KM with one decimal place (0.0 KM).

扭矩应用程序使用来自 Android 设备的位置 (GPS) 信息来记录地理位置。我猜它正在使用该信息来确定行程距离,精度为 0.1 公里。

推荐

如果您需要那种准确性,我建议您效仿他们并使用位置数据来确定行进的距离。

使用来自 google location api 的位置监听器和 Location.distanceTo(location)以确定增量位置变化。

关于增强型 PID 的更多信息

增强型 PID(也称为 DID)是特定于车辆的模式 22 参数。

还有许多其他未公开记录的车辆参数,可能会提供更高的精度。它们是特定于车辆的(但通常是同一制造商的一部分车辆所共有的)。它们是模式 22 增强型 PID。 Here's a list of old Ford DIDs .如果有人能找到更新的 22 模式 DID 列表,请编辑我的帖子并添加它,因为我知道公开可用的列表比我发现的要多得多。

关于安卓 OBD-II : How to get distance traveled in meters?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39348702/

有关安卓 OBD-II : How to get distance traveled in meters?的更多相关文章

  1. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  2. (一)专题介绍:移动端安卓手机改造成linux服务器&linux服务器中安装软件、部署前后端分离项目实战 - 2

    快捷目录前言一、涉及到的相关技术简介二、具体实现过程及踩坑杂谈1.安卓手机改造成linux系统实现方案2.改造后的手机Linux中软件的安装3.手机Linux中安装MySQL5.7踩坑实录4.手机Linux中安装软件的正确方法三、Linux服务器部署前后端分离项目流程1.前提准备(安装必要软件,搭建环境):2.前后端分离项目的详细部署过程:总结前言总体概述:本篇文章隶属于“手机改造服务器部署前后端分离项目”系列专栏,该专栏将分多个板块,每个板块独立成篇来详细记录:手机(安卓)改造成个人服务器(Linux)、Linux中安装软件、配置开发环境、部署JAVA+VUE+MySQL5.7前后端分离项目

  3. day44|● 完全背包● 518. 零钱兑换 II ● 377. 组合总和 Ⅳ - 2

    518.零钱兑换II1.代码classSolution{public:intchange(intamount,vector&coins){vectorf(amount+1,0);f[0]=1;for(inti=0;i2.动规五部曲1.确定dp数组和其下标含义由题目说可知求选择钱票得到总和为target的方案数,dp[j]相当于选择物品体积相加为i的方案数2.递推公式每次加入物品,都有可能到达体积j,所以在每次加上这个物品到达j时加上这个方案数f[j]+=f[j-coins[i]];3.初始化因为在for循环和dp公式中没有确切的值,肯定需要初始化,初始化第一个就可以保证后面的推导出来了,f[0

  4. UEFI学习---EDK II开发环境的搭建 - 2

    EDKII的开发环境搭建(Windows系统)一、搭建前的准备工作二、软件安装1、安装VS2019社区版2、安装Python3、安装Git4、安装Nasm5、安装IASL6、安装Qemu三、下载EDK2的源码1、下载edk2的源码2、设置环境变量3、下载更新子模块四、编译代码1、编译basetools(编译工具)2、修改配置文件(target.txt)3、编译edk2源码五、运行EmulatorPkg模拟器1、运行EmulatorPkg模拟器2、下载英文输入法一、搭建前的准备工作操作系统:Windows10;编译器:VS2019社区版;Python:Python3.10.5;Git:Git2.

  5. 微信小程序安卓视频播放卡顿问题 - 2

    在微信小程序开发中遇到在video组件的两个问题1.安卓手机里播放视频会有明显的卡顿问题刚开始以为是网络问题,或者是视频文件问题。排查了一下发现都没问题最后加了个属性就OK了uniapp和原生小程序方法:custom-cache="false"custom-cache={{false}}video组件兼容iOS手机custom-cache加了这个属性会让2.iOS手机第一次播放视频会有几秒黑屏问题因此我加了当前手机型号的判断uni.getDeviceInfo().deviceType获取当前设备api当为iPhone时不加custom-cache属性,否则加上custom-cache=“fal

  6. LeetCode:454. 四数相加 II —— 哈希表为什么叫哈希表~ - 2

    🍎道阻且长,行则将至。🍓🌻算法,不如说它是一种思考方式🍀算法专栏:👉🏻123hash是什么,哈希表为什么叫哈希表?一、🌱454.四数相加II题目描述:给你四个整数数组nums1、nums2、nums3和nums4,数组长度都是n,请你计算有多少个元组(i,j,k,l)能满足:0nums1[i]+nums2[j]+nums3[k]+nums4[l]==0来源:力扣(LeetCode)难度:中等提示:n==nums1.lengthn==nums2.lengthn==nums3.lengthn==nums4.length1-2^28示例1:输入:nums1=[1,2],nums2=[-2,-1],n

  7. 安卓渐变的背景框实现 - 2

    安卓渐变的背景框实现1.背景实现方法1.利用PorterDuffXfermode进行图层的混合,这是最推荐的方法,也是最有效的。2.利用canvas裁剪实现,这个方法有个缺陷,就是圆角会出现毛边,也就是锯齿。3.利用layer绘制边框1.背景万恶的设计小姐姐又来搞事情啦,你说好好的设计一个纯色的背景框框不好嘛,非要把一个框框弄成渐变的,如果不拿出放大镜估计没几个人能看出来它是渐变的。来,我让你看看是啥样框子是从左到右渐变的,设计应该是做了一个底图,然后上面盖了一个白色圆角矩形。那么我们该怎么去实现它呢?实现方法下面介绍三种实现它的方法。先贴上源码地址,大家记得给个starhttps://git

  8. 安卓手机浏览器:远程调试 - 2

    简介:有时我们需要调试手机浏览器网页信息,这时除了使用fiddler抓包拦截篡改,还可以通过USB连接,通过PC远程调试手机上的浏览器信息,进行映射。历史攻略:adb:安卓手机USB调试模式前置准备:网页内容在移动设备上的体验可能和电脑上完全不同。ChromeDevTools提供远程调试功能安卓远程调试支持:在浏览器选项卡中调试网站。在原生安卓应用中调试网页内容。将屏幕从你的安卓设备上投影到你的开发机器上。使用端口转发和虚拟主机映射来让安卓设备访问开发使用的服务器。操作步骤:1、手机通过USB连接电脑。2、开启手机调试模式。3、PC电脑edge输入:edge://inspect/#device

  9. 安卓性能优化之内存优化 - 2

    Java对象生命周期:创建:为对象分配内存空间,构造对象应用:此时对象至少被一个强引用持有不可见:未被任何强引用持有,进行可达性分析不可达:可达性分析为不可达,进入下一阶段收集:当垃圾回收器发现该对象已经处于“不可达阶段”并且垃圾回收器已经对该对象的内存空间重新分配做好准备时,则对象进入了“收集阶段”。如果该对象已经重写了finalize()方法,则会去执行该方法的终端操作。终结:当对象执行完finalize()方法后仍然处于不可达状态时(可达性分析垃圾回收算法被回收前,会有两次标记过程,判断是否执行lfinalize()方法,执行完之后判断是否GCROOT可达,如果仍不可达,则准备回收),则

  10. Qt安卓开发:调用java代码的获取usb权限 - 2

    最近换了工作,新工作是负责用qml做qt安卓开发。工作中遇到一个问题:安卓设备有USB口,需要插入一个U盘在程序里读写U盘中的文件,由于安卓系统的安全性的问题导致QFile、c++的文件操作相关方法都不能读写成功,想要读写成功只能调用java代码,在java代码里面使用安卓的DocumentFile库。经过一番探索,成功解决了问题。qt如何添加java代码不说了,网上有。下面是具体的java代码:packagecom.example.myapplication;importandroid.annotation.TargetApi;importandroid.content.Context;im

随机推荐