User Ratings

★★★★★
★★★★
★★★
★★
0
1
0
0
0
ease 1 of 5 2 of 5 3 of 5 4 of 5 5 of 5 0 / 5
features 1 of 5 2 of 5 3 of 5 4 of 5 5 of 5 0 / 5
design 1 of 5 2 of 5 3 of 5 4 of 5 5 of 5 0 / 5
support 1 of 5 2 of 5 3 of 5 4 of 5 5 of 5 0 / 5

Rate This Project
Login To Rate This Project

User Reviews

  • Bug Report Aidex X Sensor: Crash on "Исп. Bluetooth" checkbox Juggluco WearOS — Samsung Galaxy Watch 8 Summary On Samsung Galaxy Watch 8 (WearOS), enabling the "Исп. Bluetooth" / "Use Bluetooth" checkbox in the Sensor menu causes Juggluco to crash immediately with a StringIndexOutOfBoundsException in the native library. This prevents direct sensor-to-watch connection for the Aidex X CGM sensor. Environment Watch Samsung Galaxy Watch 8 (WearOS) Juggluco versions tested 10.9.5-wear and 10.7.2-wear — same crash on both Sensor Aidex X (BLE MAC: C0:9B:9E:01:82:42) Phone app JugglucoNG (fork of Juggluco), used for parent relay setup Server relay connection Working correctly via Mirror relay over TCP (not related to this bug) Steps to Reproduce 1. On the watch, open Juggluco → Left menu → Датчик (Sensor) 2. The screen shows: "Переключить" (Switch) button, "Вкл. Bluetooth" (Bluetooth: On) status text, a checkbox labeled "Исп. Bluetooth" (Use Bluetooth), and "Датчики" (Devices) / "Закрыть" (Close) buttons 3. Tap the "Исп. Bluetooth" checkbox 4. The app freezes for ~2-3 seconds, then crashes and returns to the watch face / app list Actual Result App crashes with a fatal exception. Expected Result Checkbox should enable Bluetooth scanning/usage mode for the sensor without crashing, allowing the watch to find and pair with the Aidex X sensor directly (Left menu → Датчики → Find devices → check "Aidex X"). Crash Log (via adb logcat) --------- beginning of crash 07-11 23:34:58.823 21167 21167 E AndroidRuntime: FATAL EXCEPTION: main 07-11 23:34:58.823 21167 21167 E AndroidRuntime: Process: tk.glucodata, PID: 21167 07-11 23:34:58.823 21167 21167 E AndroidRuntime: java.lang.StringIndexOutOfBoundsException: offset=0 length=11 string.length()=7 07-11 23:34:58.823 21167 21167 E AndroidRuntime: at tk.glucodata.Natives.getdataptr(Native Method) 07-11 23:34:58.823 21167 21167 E AndroidRuntime: at tk.glucodata.Applic.l(Unknown Source:421) 07-11 23:34:58.823 21167 21167 E AndroidRuntime: at tk.glucodata.Applic.q(Unknown Source:9) 07-11 23:34:58.823 21167 21167 E AndroidRuntime: at tk.glucodata.MainActivity.v(Unknown Source:24) Key detail: the exception indicates the native code (Natives.getdataptr) expects a string of length 11 but received a string of length 7. This looks like a fixed-length string/buffer mismatch, possibly related to how a previously-paired device identifier, sensor serial number, or MAC address is stored/parsed (note: the sensor's Bluetooth MAC address C0:9B:9E:01:82:42 is 17 characters including colons — neither 11 nor 7 — so the mismatched string may be some other stored identifier, e.g., a truncated serial number or a leftover value from a prior sensor/pairing). Also noted just before the crash in the same session: 07-11 23:34:55.314 21356 21383 E WFReceiverService: Unhandled exception while adding a watch face. 07-11 23:34:55.320 21167 21167 E WfActivation: Caused by: com.google.wear.services.watchfaces.watchfacepush.WatchFacePushManager$AddException: Failed to add watch face with error code 1 (This may be unrelated — a separate watch face push issue — but is included for completeness since it occurred in the same logcat session shortly before the crash.) What We Tried (all unsuccessful in preventing the crash) 1. Granting additional runtime permissions via ADB before opening the app: adb shell pm grant tk.glucodata android.permission.BLUETOOTH_CONNECT adb shell pm grant tk.glucodata android.permission.BLUETOOTH_SCAN adb shell pm grant tk.glucodata android.permission.SYSTEM_ALERT_WINDOW adb shell pm grant tk.glucodata android.permission.ACCESS_FINE_LOCATION adb shell pm grant tk.glucodata android.permission.ACCESS_COARSE_LOCATION Result: permissions granted successfully, but checkbox still crashes identically. 2. Clearing app data (adb shell pm clear tk.glucodata) and reconfiguring from scratch — same crash persists after fresh setup. 3. Downgrading from 10.9.5-wear to 10.7.2-wear — identical crash and identical stack trace on both versions. 4. Programmatic tap via ADB (adb shell input tap X Y at the checkbox's screen coordinates, confirmed via adb shell screencap) instead of a manual finger tap — produced the exact same crash, confirming the issue is triggered by the action itself (the code path executed when the checkbox is toggled), not by how the tap is delivered (touch vs. synthetic input). 5. Attempting to bypass the UI entirely via a broadcast Intent (adb shell am broadcast -a tk.glucodata.CONNECT_SENSOR --es address ... --es type "aidex") — broadcast completed with result=0, indicating no receiver is registered for this action (this was our own guess at a possible internal API, not documented — noted here only to confirm the app does not expose an external Intent-based way to configure the sensor connection, so this is not a bug, just a dead end on our side). Additional Context The phone-side app (JugglucoNG) works correctly with the same Aidex X sensor, receiving data over Bluetooth without issue. We are trying to set up direct sensor-to-watch connection for Aidex X specifically (bypassing the phone), as documented at juggluco.nl/Juggluco/sensors/, using the "Исп. Bluetooth" checkbox as instructed for watches without a camera (cannot use Left menu → Photo to scan the sensor's data matrix QR code, since this watch model has no camera). The alternative documented method — enabling "Direct sensor-watch connection" from the phone's Left menu → Watch → WearOS Config — has not yet been fully tested as a workaround at time of writing, but is suspected to use a different code path and may avoid this crash. Request Could you please check the native getdataptr function in Natives for the length assertion/parsing that expects a fixed length of 11 characters? It appears something (possibly a stored sensor identifier or leftover pairing data) is being passed in with only 7 characters, causing an out-of-bounds read that crashes the whole app rather than failing gracefully. Reference Related GitHub issue: j-kaltes/Juggluco #297 ("support for chinese aidex sensor")
    Reply from Juggluco
    Edited 2026-07-12
    I consider your bug report unreadable. Are you saying that you are trying to connect the WearOS version of Juggluco with the phone version of Juggluco NG? Juggluco NG is not Juggluco. Juggluco NG has maybe a sensor identifier that is less that 11 characters long, which will never happen in Juggluco. If you send rubbish to Juggluco, you can expect the app to crash. For the WearOS to phone connection you even need to sign the apks with the same key. If you compile one yourself, you also need to build the other yourself. They also need to have the same application ID: "tk.glucodata" (for every apk here except the dub version). You need to run my Juggluco on both the phone and WearOS. Could you e-mail me the pure logcat.txt and better run a logging version of Juggluco and e-mail me also trace.log as described at: https://www.juggluco.nl/Juggluco/download.html#bugreport E-mail to jaapkorthalsaltes@gmail.com
  • Previous
  • You're on page 1
  • Next