GNU General Public License v3.0

技术解读

以下内容由 GitRead 中文社区 编辑团队基于项目 README 与官方资料整理, 结合中文开发者的常见使用场景补充技术选型建议。具体以项目官方文档为准。

深度技术分析:Juggluco

项目背景与痛点

Juggluco 是一款旨在提升糖尿病管理质量的 Android 应用。它集成了 Freestyle Libre 1,2 和 3,Dexcom G7/ONE+,Sibionics GS1Sb 和 GS3,AccuChek SmartGuide,CareSens Air 和 Linx/Aidex X 等多个品牌的血糖传感器。对用户来说,这意味着可以使用 Juggluco 在一个统一的平台上监测和管理不同类型的血糖传感器数据。在现代医疗环境中,糖尿病患者需要持续监控血糖水平,而市面上的多种血糖传感器则增加了数据整合的难度。Juggluco 的出现为了解决这个痛点,提供了一个涵盖多种传感器的全栈解决方案。

核心技术揭秘

Juggluco 的技术核心在于通过统一的数据接口对接多种血糖传感器。在这个过程中,开发者需要处理不同的设备协议和通信机制,并确保数据解析和显示的高准确性和低延迟。下面是一个简化后的技术架构图,展示了 Juggluco 的数据流:

graph TD A[用户请求] --> B{"传感器类型"} B -->|"Freestyle Libre"| C[Libre 通信] B -->|"Dexcom G7/ONE+"| D[Dexcom 通信] B -->|"Sibionics GS1Sb/GS3"| E[Sibionics 通信] B -->|"AccuChek SmartGuide"| F[SmartGuide 通信] B -->|"CareSens Air"| G[CareSens 通信] B -->|"Linx/Aidex X"| H[Linx/Aidex 通信] C --> I[数据解析] D --> I E --> I F --> I G --> I H --> I I --> J[数据展示]

每个传感器通信节点(如 C, D, E 等)包含设备连接、数据获取和解析流程。传感器检测本身就是一项技术挑战,不同品牌和型号的设备有着不同的通信协议。为了简化这一过程,开发者需要为每个传感器实现独立的通信逻辑,并进行单元测试以确保通信的正确性和稳定性。数据解析部分负责处理从设备接收的数据包,将其解密并转换为应用能够直接展示的血糖值。

功能亮点与差异

Juggluco 的最大亮点在于其广泛的传感器兼容性,这一点让它在同类竞品中脱颖而出。此应用不仅支持市面上常见的血糖传感器,还关注小众设备及跨品牌的使用体验。通过为每个传感器添加专门的数据处理逻辑,实现了无需用户额外配置便能支持多种血糖监测设备的功能。这样的设计不仅体现了开发者对用户实际使用场景的深入理解,也扩大了应用的可观用户群。

应用场景与落地建议

在实际的生产环境中,使用 Juggluco 并非毫无挑战。首先,用户需要确保所使用的传感器设备与其硬件兼容。部分老旧或小众设备可能因为驱动库更新不及时,无法获得最佳的用户体验。因此,在使用之前建议用户查阅已集成的传感器列表及兼容性说明。此外,考虑到医疗数据的敏感性,应用的安全性也十分重要,务必确保拥有足够的数据加密与保护措施。对于医疗相关企业来说,这种类型的综合监控应用适用于医院乃至消费市场中的自我医疗场景。

综合评价

Juggluco 凭借良好的传感器兼容性、精准的数据解析能力和简洁的用户界面在血糖监测应用中具备明显的竞争优势。其广泛的设备支持能力满足了糖尿病患者日常生活中多场景需求。然而,与此同时,项目面临的最大挑战在于传感器与应用之间的数据接口和通信协议的复杂性,需要不断更新支持新的传感器类型,以保证其领先优势。总体而言,Juggluco 不仅能有效推进糖尿病用户的自我健康管理,还能提供给开发者未来医疗移动应用设计的重要参考。

关于

GitHub 原始描述(英文)

Android app for Freestyle Libre 1,2 and 3, Dexcom G7/ONE+, Sibionics GS1Sb and GS3 , AccuChek SmartGuide, CareSens Air and Linx/Aidex X sensors

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

语言占比

Batchfile
C
C++
CMake
HTML
Java
Kotlin
Makefile
Shell
sed

Release

README

value

Juggluco

Libre 2/2+/3/3+, Sibionics GS1, Dexcom G7/1+, Accu-Chek, CareSensAir, Aidex X

The motivation to write Juggluco was the need to use the sensor glucose values for something more than knowing my current glucose level or getting a global view the success of my glucose control. I wanted to use the glucose curve to easily refer back to previous experiences and see exactly how it went in relation to insulin doses, carbohydrate intake and activities. A little isolated slowly generated curve in portrait mode doesn’t allow for that. Juggluco is an app that receives glucose values via Bluetooth from Freestyle Libre 2, 2+, 3 and 3+, Sibionics GS1Sb, Dexcom G7/ONE+, Accu-Chek SmartGuide, CareSens Air and Aidex X sensors. In addition, Juggluco can scan NovoPen® 6 and NovoPen Echo® Plus and receive test results via Bluetooth from Contour Next glucose meters. Juggluco can send glucose values to all kinds of smartwatches, see left menu→Watch→Help: https://www.juggluco.nl/Jugglucohelp/watchinfo.html The phone version of Juggluco can talk out incoming glucose values, display it in a widget on the home screen and in floating glucose above other apps. Juggluco can display the usual glucose statistics. Other apps can receive data from Juggluco via glucose broadcasts and the web server in Juggluco. Juggluco can send data to Health Connect, Libreview and Nightscout. Data can also be exported to a file or send to another exemplar of Juggluco on another phone, tablet, emulator or watch. It has the option to set low and high glucose alarms and medication reminders.

Start
To use a Libre 2 sensor, scan it with Juggluco. To take over a Libre 3 sensor from Abbott's Libre 3-only app, you need to enter in left menu→Settings→Exchange data→Libreview the same account as when activating the sensor and press Get account ID, to receive a number from Libreview. When you now scan the sensor this number will be sent to the sensor. No Libreview account is needed, when the Libre 3 sensor is activated with Juggluco: enter an arbitrary number before scanning the sensor. The first time it takes 2 to 10 minutes before Juggluco receives a glucose value via Bluetooth from the sensor. To prevent interference, force stop apps and turn off devices previously used with the sensor. To keep Juggluco running in the background, allow background activity and turn off battery optimizations for Juggluco. Don’t hide Juggluco’s notification. After scanning a Libre 2 sensor with Juggluco, Abbott’s Libre 2 app can only scan the sensor (when two apps are on the same phone they can both receive glucose values from European Libre 2 sensors, but this can give connection problems.) Libre 3 sensors can still be used with Abbott’s Libre 3 only app after using it with Juggluco: stop Juggluco and scan the sensor with Abbott’s Libre 3 app, agreeing that you stop the current sensor and start a new one. When going back to Juggluco you have to scan again. Scan with left menu→Photo the data matrix on the applicator for of Dexcom G7/ONE+, the package of Sibionics GS1Sb and Aidex X and the inner package of CareSens Air, and the blue cap of Accu-Check SmartGuide sensors. For the last enter the pin when asked. Warning: CareSens Air sensors can switch device only once. See: https://www.juggluco.nl/Juggluco/sensors

Wear OS

The phone version of Juggluco scans the sensor and sends this data to the WearOS version of Juggluco. Bluetooth on both phone and watch needs to be turned on. For fast transmission, also WIFI. After initialization, you can switch on and off directly connecting the sensor with the watch, with left menu→Watch→Wear OS config→Direct sensor-watch connection. https://github.com/j-kaltes/Juggluco/wiki#wearos-watches collects information about how well different watches work with Juggluco. Wear OS version contains complications to display the glucose level on a watch face.

https://www.juggluco.nl/Jugglucohelp/introhelp.html

BUILD Juggluco

To download do:

git clone --recurse-submodules https://github.com/j-kaltes/Juggluco.git

(If you have already done git clone without submodules, cd to the Juggluco root directory and execute: git submodule update --init)

The following files need to be added to build Juggluco and can be found by unzipping an Arm/Arm64/x86/x86_64 Juggluco apk from https://www.juggluco.nl/Juggluco/download.html

libcalibrat2.so and/or libcalibrate.so in lib/* of the APK should be put in the corresponding directories (e.g. the libraries from armeabi-v7a of the apk should be put in armeabi-v7) in:
./Common/src/main/jniLibs/x86_64/
./Common/src/main/jniLibs/armeabi-v7a/
./Common/src/main/jniLibs/x86/
./Common/src/main/jniLibs/arm64-v8a/

liblibre3extension.so and libinit.so in the corresponding directories of:
./Common/src/libre3/jniLibs/x86_64/
./Common/src/libre3/jniLibs/armeabi-v7a/
./Common/src/libre3/jniLibs/x86/
./Common/src/libre3/jniLibs/arm64-v8a/

libCALCULATION.so libnative-algorithm-jni-v116A.so libnative-algorithm-v1_1_6A.so libnative-sensitivity-v110.so libnative-algorithm-jni-v115G.so libnative-algorithm-v1_1_5G.so libnative-encrypy-decrypt-v110.so libnative-struct2json.so in:
./Common/src/mobileSi/jniLibs/armeabi-v7a/
./Common/src/mobileSi/jniLibs/arm64-v8a/

To build a logging mobile phone release version, do the following from the Juggluco root directory:

./gradlew assembleMobileLibre3SiDexNogoogleReleaseLog

评论

暂无评论