mAPRS 是我为 Android 和 iOS 系统开发的一款原创应用,旨在与 APRS 配合使用。开发它并不是因为市场上缺少支持 APRS 的应用——这类程序已经有好几款,其中许多都很好地完成了自己的任务。原因其实简单得多。 日常使用 APRS 时,我常常因为必须根据当前所做的事情不断手动更改设置而感到烦恼。开车时,我希望以不同于步行时的方式显示自己的状态。待在家里时,又应该发送另一组信息。每次都必须记住这些操作。就在那时,我产生了一个问题: 为什么应用不能自行完成这些操作? mAPRS 就这样开始逐步成形。

mAPRS 的创意从何而来?
从项目一开始,核心设想就非常明确:应用应尽可能实现自主运行。我不想在每次出行前都考虑是否设置了正确的图标;不想停车并开始步行后再手动切换配置文件;也不想回到家后还要记得再次切换设置。mAPRS 应该能够识别当前情况并作出适当响应。
应用会判断当前是否: 正在驾车、步行,还是位于家中。 根据这些信息,应用会自动选择发送到 APRS 的相应内容,主要包括 图标、注释以及适当的电台符号/标志。因此,用户不必每次都手动更改配置。这种自动化正是 mAPRS 开发的最重要原因,也是我构建整个项目时围绕的核心特性。
与 APRS-IS 协作
mAPRS 与网络 APRS-IS通信,即 APRS 基础设施中基于互联网的部分。应用会准备与电台相关的信息,并将其传送到网络中。这样,位置和其他数据也能显示在使用 APRS-IS 的其他服务及应用中。对我而言,保持与 APRS 的兼容性同样非常重要。自动化并不是要创建一套自有且封闭的运行方式。恰恰相反,mAPRS 应利用现有的 APRS 基础设施,但代替用户完成通常需要手动执行的部分操作。从网络本身的角度看,这只是一个很小的差异;但对于每天使用该应用的人来说,差别却非常大。
轨迹应保持准确
应用的一项重要功能是记录并展示路线。在开发 mAPRS 的过程中,我非常重视不能以轨迹质量为代价来优化应用性能。如果我沿着某条路线行进,之后希望看到的是实际的行进轨迹,而不是由直线连接起来的几个随机点。因此,负责向 APRS 发送信息的机制,与负责生成轨迹的机制不必完全以相同方式运行。应用可能需要详细的移动信息,才能正确运行并展示路线,尽管其中并非每一条信息都必须立即发送到 APRS-IS。
下一个挑战:能耗
一款连续数小时监测位置的应用,很容易成为手机上耗电最多的应用之一。因此,优化电池消耗是 mAPRS 开发中的又一个重要阶段。但这并不意味着采用最简单的方案,即降低位置检查频率。这样做可能会降低轨迹质量以及识别移动方式的准确性。目标是找到一种使用定位机制的方式,使应用能够获得所需信息,同时又不让手机进行不必要的工作。这在长途旅行或全天户外活动期间尤其重要。mAPRS 应能够在后台长时间运行,而无需用户不断担心手机还剩多少电量。
分阶段开发应用
mAPRS 一直在持续开发。不过,我会尽量避免同时引入许多没有关联的改动。每个新版本都有明确任务:改进某个具体组件、改变应用行为,或优化现有机制。随后,新版本会进入测试阶段。这样的方式能更容易地确认某项改动是否真正带来了预期结果,以及是否同时对原本正常运行的功能产生了负面影响。对于一款在后台运行定位功能的应用而言,这一点尤其重要。有些问题在使用五分钟后并不会出现,只有经过较长时间的驾车、停车、步行或连续运行数小时后才会显现。因此,真实环境中的测试是整个项目非常重要的一部分。
目标不是再开发一款 APRS 应用
mAPRS 并不打算在功能数量上与所有现有程序竞争。项目的目标并不是这样。我首先想解决的是自己在使用 APRS 时遇到的问题。如果应用能够自行发现我正在驾车,那我为什么还要手动更改汽车符号?如果片刻之后我开始步行,为什么又要重新进入设置?而当我回到家时,手机同样可以识别这一情况。对我而言,最重要的正是这个理念: APRS 应适应用户正在做的事情,而不是让用户去适应应用。
一个让我不断学习的项目
mAPRS 同时是一个实用项目和技术项目。在创建它的过程中,我必须结合多个完全不同的领域:系统运行、定位、应用后台运行、网络通信、APRS 的特性、移动分析以及能耗优化。此外,还包括后续版本的准备、测试以及整个应用分发流程。每个阶段都会揭示一些一开始往往看不见的新问题,而这正是这个项目最有趣的地方。mAPRS 并不是一个从第一个界面到最后一个界面都预先规划好的成品。它会随着后续测试以及实际使用应用过程中产生的新想法不断发展。
mAPRS 的下一步是什么?
基本理念保持不变: 在保持对应用行为可控的前提下,尽可能实现 APRS 工作流程的自动化。 后续开发阶段主要涉及进一步改进情境识别、正确切换配置文件、定位功能、位置报告方式以及降低能耗。我还希望用户能够清楚了解应用当前正在执行的操作,以及它向 APRS-IS 传送了哪些数据。但我并不想为了让功能列表更长而盲目增加功能。我更希望少数几个最重要的机制都能真正运行良好。
mAPRS——少一些切换,多一些 APRS
项目源于一个非常简单的烦恼: 不断手动切换 APRS 设置。于是便有了这样一个应用构想:它能够观察当前情况,并自行决定此时应以何种方式展示我的电台。我在驾车。我在步行。我在家中。mAPRS 应识别这些状态,并相应选择图标、注释和 APRS 符号。不必记住切换开关,也不必每次都进入设置。这正是 mAPRS 的核心理念,也是整个项目的起点。
mAPRS 应用的隐私政策位于 此处.

