LocInfo 是一个基于 Android 的地理信息聚合系统,实时获取设备位置并计算天文数据。应用将定位结果与当前 UTC/local 时间联动,展示太阳方位、高度角、月相、昼夜/晨昏时间以及食相预警等信息。
Note
本项目需要使用您的位置信息,但所有处理均在本地完成,不会上传至任何服务器。
- 实时定位:使用系统位置服务获取当前纬度、经度、海拔和精度。
- 天文计算:根据当前时间和地理位置计算太阳、月球与昼夜信息。
- 月相分析:实时计算月龄、相位名称和照明比例。
- 晨昏时间:支持日出/日落、民用/航海/天文晨昏边界计算。
- 食相预警:基于简化几何关系判断日食、月食条件。
- 手动位置输入:支持用户手动输入经纬度作为备用定位方式。
LocInfo 的核心算法位于 app/src/main/java/com/hoeteam/locinfo/data/Calc.kt,这是一个综合天文计算模块,主要包含以下内容:
-
Julian Day 计算
- 通过公历日期和时间计算儒略日(Julian Day),用于后续天文计算基准。
-
太阳位置计算
- 使用太阳赤纬、时角、方位角和高度角公式。
- 计算步骤包括:
- 当前日期的太阳赤纬(太阳在黄道上的位置)。
- 平太阳时和时间修正项(Equation of Time)。
- 由经纬度和太阳赤纬计算太阳高度和方位。
-
昼夜与晨昏时间计算
- 通过太阳高度角阈值计算:
- 日出/日落(-0.8333°,考虑大气折射和太阳半径)。
- 民用晨昏(-6°)、航海晨昏(-12°)和天文晨昏(-18°)。
- 对极夜与极昼情况进行边界判断。
- 通过太阳高度角阈值计算:
-
月相与照明计算
- 基于朔望月周期(约 29.53058867 天)计算月龄。
- 通过月相角计算当前月相名称和照明比例。
-
食相预警
- 通过月相角与月球纬度距离(简化的黄道交点距离)判断可能的日食/月食条件。
- 该判断为预警级别,适用于快速提示当前几何条件。
-
度分秒转换
- 将经纬度、方位角、高度角等角度值转换为度-分-秒格式,适配 UI 展示。
- Kotlin
- Android Jetpack Compose
- Coroutine Flow
- Android LocationManager
- Java 时间 API
app/src/main/java/com/hoeteam/locinfo/data/:数据模型与天文计算逻辑。app/src/main/java/com/hoeteam/locinfo/ui/:UI 层与状态管理。app/src/main/java/com/hoeteam/locinfo/network/:时间数据接口定义(并不含网络定义,属于历史代码遗留问题)。
版权所有 ©2026 HOE Team. 保留所有权利。
采用 Apache License 2.0 许可。
Note
这份许可证意味着:
自由使用与分发:你可以自由使用、修改、复制和分发本项目的代码,无论是个人项目还是商业项目。
宽松的再发布条件:如果你修改并重新发布代码,不需要强制开源你的修改部分(不具“传染性”)。你可以将本项目代码闭源集成到你的商业软件中。
保留声明:你必须在分发副本中保留原始的版权、专利、商标和归属声明,并附上一份 Apache 2.0 许可证副本。
专利授权:许可证包含明确的专利许可授予,同时规定如果你针对本项目提起专利诉讼,相关专利授权将自动终止。
免责声明:作者不提供任何明示或暗示的保证,使用该软件产生的风险由你自行承担。