Commit Graph
100 Commits
Author SHA1 Message Date
Gordon Williams 849997b145 Fixes for NullPointerException spotted on Play Store
These are probably edge cases but they do appear to happen occasionally

Fixes Exception java.lang.NullPointerException: Attempt to invoke virtual method 'int android.bluetooth.BluetoothClass.getDeviceClass()' on a null object reference
  at nodomain.freeyourgadget.gadgetbridge.devices.generic_headphones.GenericHeadphonesCoordinator.supports (GenericHeadphonesCoordinator.java:45)
  at nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper.resolveDeviceType (DeviceHelper.java:140)
  at nodomain.freeyourgadget.gadgetbridge.activities.discovery.GBScanEventProcessor.processCandidate (GBScanEventProcessor.java:175)
  at nodomain.freeyourgadget.gadgetbridge.activities.discovery.GBScanEventProcessor.processAllScanEvents (GBScanEventProcessor.java:237)
  at nodomain.freeyourgadget.gadgetbridge.activities.discovery.GBScanEventProcessor.run (GBScanEventProcessor.java:81)
  at nodomain.freeyourgadget.gadgetbridge.activities.discovery.GBScanEventProcessor$1.run (GBScanEventProcessor.java:103)

Fixes Exception java.lang.NullPointerException: Attempt to invoke virtual method 'int java.io.InputStream.read(byte[], int, int)' on a null object reference
  at android.bluetooth.BluetoothSocket.read (BluetoothSocket.java:692)
  at android.bluetooth.BluetoothInputStream.read (BluetoothInputStream.java:88)
  at java.io.InputStream.read (InputStream.java:218)
  at nodomain.freeyourgadget.gadgetbridge.service.btbr.BtBRQueue$1.run (BtBRQueue.java:73)
2025-06-20 10:48:34 +01:00
Gordon Williams ef8d4bae21 Fix NullPointerException caused by 0acba61522 calling getMacAddress when DiscoveryActivity might not have had deviceTarget set
Discovered via Bangle.js App Store ANR reporting
2025-06-18 09:29:28 +01:00
Gordon WilliamsandJosé Rebelo 5805559e4d Added HTML-compatible xpath implementation for Bangle.js http requests as per https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/4845#issuecomment-4588211 2025-05-23 21:49:45 +02:00
Gordon Williams 839cbcd3e5 Bangle.js: Fix call notification in Turkish locale
Turns out toUpper/Lowercase use the current locale, so for Turkish, "INCOMING" turns into "ıncomıng" (the 'i' is different!)
2024-12-13 11:07:21 +00:00
Gordon Williams 9a962bd495 Bangle.js: Support sending activity type from Bangle (#4323) 2024-12-05 09:31:07 +00:00
Gordon Williams 53144ff220 Bangle.js: ensure we escape char code 16 as it's not 100% foolproof to use 2024-09-11 14:17:39 +01:00
Gordon Williams 0c19010ca2 Bangle.js: when converting text to bitmaps, try and split up emoji so we can render just those in color.
Rendering text as well uses more memory but means text is rendered white, which doesn't work on some backgrounds
2024-06-03 15:58:05 +01:00
Gordon Williams 7ea2261ba3 Bangle.js: honour the enable_calendar_sync setting
Allow handleCalendarSync to send a single `calendar-` command with all IDs before it starts adding new items (faster)
2024-05-24 09:26:37 +01:00
Gordon Williams 4da5a73cd6 Bangle.js - remove large lines of _____ from calendar (generated by google teams) 2024-05-23 09:48:37 +01:00
Gordon Williams 1165a5d03c Revert "Bangle.js: add support for SMS replies" - not needed as per #3654
This reverts commit 323f8028e0.
2024-03-28 08:45:14 +00:00
Gordon Williams 323f8028e0 Bangle.js: add support for SMS replies 2024-03-28 08:31:07 +00:00
Gordon Williams 665656ddc0 Bangle.js: Fix message reply (and add .reply in notify if message supports reply)
NotificationListener now stores the handle ID in wearableAction.handle rather than hard-coding the calculation
Should fix ZeppOS too which was copy&paste from Bangle.js
2024-03-27 10:50:50 +00:00
Gordon Williams 8d43624a9a Bangle.js: filter calendar events to try and remove :~:~:~:~:~ lines for google meet, double newlines, and HTML 2024-03-22 11:43:30 +00:00
Gordon Williams d3c16a1d40 Bangle.js ensure we don't try and use base64 to encode something that is actually UTF8 2024-03-19 13:36:55 +00:00
Gordon Williams f91156cd3e Bangle.js - fix issue where a newline right at the beginning of a received string could cause "String index out of range: -1" errors for all subsequent received data 2024-03-13 09:52:03 +00:00
Gordon Williams dd0dfb23ac Bangle.js: Ensure we request a higher MTU if it's been enabled in settings (otherwise Android just uses the default). Really improves communication speed. 2024-02-22 12:00:33 +00:00
Gordon Williams 684d976bfc Bangle.js: Ensure SMS messages have src field set to "SMS Message" (it was previously left out) 2023-11-30 09:33:07 +00:00
Gordon Williams 8ef80a2565 Bangle.js: ensure GPS speed is reported correctly when the phone is providing it 2023-11-29 10:04:33 +00:00
Gordon Williams 66b36564ab Bangle.js: Attempt to fix some of the warnings generated by Android Studio - some addec null checks, and appending using StringBuilder 2023-11-20 11:42:41 +00:00
Gordon Williams 140c62ac55 Bangle.js: Fix #2996 - force a reconnect when rx/tx characteristics can't be found 2023-11-20 11:02:16 +00:00
Gordon Williams cb0962e0f6 Bangle.js: Ensure we split Chinese words every 2 chars when converting them to bitmaps to give us the opportunity to wrap text better
Also make sure we never create a bitmap >255 width/height as this wouldn't work on Espruino
2023-11-09 15:12:59 +00:00
Gordon Williams f4707c15f4 Bangle.js - mention 'Android Integration' app for Bangle, not 'Gadgetbridge', add extra character conversions 2023-11-08 10:51:00 +00:00
Gordon Williams 1aadc04fd7 Bangle.js: add more non-ascii characters which can be converted to ASCII equivalents.
This helps for Chinese where words would normally break on these chars anyway - based on https://forum.espruino.com/conversations/391391
2023-11-06 14:42:24 +00:00
Gordon Williams a3f3bb212a Bangle.js: lower threshold for low battery warning 2023-10-10 11:15:05 +01:00
Gordon Williams 7f962912bb minor tweak - ensure we round wind speed so it's not to 12 decimal places 2023-10-10 11:11:23 +01:00
Gordon Williams c647c2647f Bangle.js: Improve file downloads - we can now at least get files downloaded 2023-09-14 12:49:37 +01:00
Gordon Williams e18a991b13 Bangle.js: ensure char code 255 is translated properly into a String - this can then be sent to the App Loader. Fixes https://github.com/espruino/EspruinoAppLoaderCore/issues/55 2023-09-14 11:07:05 +01:00
Gordon Williams 1b281c7c62 Fixing SecurityErrors on Android 12+ discovered via Play Store (after API31 update)...
* Check for bluetooth permissions in DiscoveryActivity
 * At startup we now pop up a dialog explaining why we want *any* permissions
 * Fixing ControlCenterv2 permissions requests for Android S and later (requesting background location stopped *any* dialog appearing)
 * Fixing all errors in DiscoveryActivity from Android Studio by catching errors
 * Move permission requests around to ensure that we only call RequestMultiplePermissions from onCreate
 * Only show dialog if we have permissions to request
 * Fix "LifecycleOwners must call register before they are STARTED" on some Android devices: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/3192/files#issuecomment-967267
2023-07-25 11:50:53 +01:00
Gordon Williams 88e0b9543d Bangle.js: HTTP request XPath can now return Arrays.
More robost toJSON that deals with unicode and null
Log messages when converting words to images so we can debug when words are being converted that shouldn't be
2023-06-30 11:34:53 +01:00
Gordon Williams 0e0f72410a Bangle.js: fix mixup of navigation left slight&sharp icons 2023-06-29 14:49:22 +01:00
Gordon Williams c6ebfc4900 Update changelog 2023-06-26 12:09:47 +01:00
Gordon Williams d82ba7a04c Bangle.js: Send the timestamp of our last activity sample to the Bangle on connect, so that it can update us on missing activity samples 2023-06-26 11:39:29 +01:00
Gordon Williams 2aac797dec Remove some build warnings in BangleJSDeviceSupport 2023-06-26 11:20:50 +01:00
Gordon Williams 8e010bc6dd Stop BangleJSDeviceSupport repeatedly calling GBLocationManager.stop and spamming the log with "Stop location updates" 2023-06-26 11:15:54 +01:00
Gordon Williams 94cd7523db Ensure we now escape chars in the unicode start range. With Bangle.js ~2v18.20+ we added Unicode support, but if we're sending non-unicode chars in the unicode range it will confuse Espruino 2023-06-26 11:07:38 +01:00
Gordon WilliamsandJosé Rebelo b2aa61e182 Changed NavigationSpec's distance into a String.
Previously we used an integer (in meters) but when using
Google Maps navigation, Google Maps picks units based on locale *and*
the distance - it might report "100m" or "20km". Then we carefully undo
all that work, and for PineTime we just as "m" so you may well have "20000m"
or more displayed, which is not ideal.

I imagine at some point that will change, but we probably want to
be able to handle that in the OSMAnd side of Gadgetbridge so all watches
that implement navigation will benefit (and won't duplicate code).
2023-06-13 07:32:12 +00:00
Gordon Williams 1fa8936544 Google Maps: Added more recognised icons - needed another enum for going all the way around a roundabout 2023-06-09 13:59:05 +01:00
Gordon Williams 735f27d5bf Add Navigation handling to Bangle.js
Add extra 'ETA' field to NavigationInfoSpec
Allow Local Notifications from Google Maps to be parsed into NavigationInfoSpec by GoogleMapsNotificationHandler

Moved notification handling after blacklist check as per https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/3136#issuecomment-920095

Ensure we don't create a nav message for 'Location Shared with you' messages.
Recognise 'ft' as a distance unit and convert accordingly

Google Maps navigation: Adding new recognised icons, and removing warnings/errors from file
2023-06-09 08:50:40 +01:00
Gordon Williams b334773856 Bangle.js: fix the rare case where we're converting an emoji/unicode to a bitmap but it doesn't have a width/height - we just create a bitmap of min. 1px 2023-06-08 12:36:12 +01:00
Gordon Williams e59375242e Bangle.js: Allow an activity sample to have a time specified - first steps in allowing Bangle.js to send 'missed' health data 2023-06-06 20:25:58 +01:00
Gordon Williams 788cb15500 Based on Play Store crash reports and stack traces, add a null check to try and avoid crashes 2023-05-22 13:38:04 +01:00
Gordon Williams 82778c46a5 Bangle.js: ensure we can return to appsmanagementactivity after having opened another window
Attempting to handle file open and close dialogs from the WebView
2023-05-22 13:13:50 +01:00
Gordon Williams 757e36ebd6 Bangle.js: Add message size limitation to Calendar and Messages - stops huge data streams being sent out esp for calendar events 2023-05-19 10:46:37 +01:00
Gordon Williams 0debd26a37 Add null pointer check based on Google Play store reports:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.net.Uri.getPath()' on a null object reference
2023-05-19 09:44:10 +01:00
Gordon Williams 2a5cd559d5 Fix issue updating timezone in setting.json if the timezone is zero (https://github.com/espruino/BangleApps/issues/2575) 2023-03-21 15:08:59 +00:00
Gordon Williams 521edc4332 Bangle.js: Increase default realtime HRM/step interval to 10 seconds
Disable manual heart rate measurement - the current implementation in Gadgetbridge seems not really compatible with Bangle.js. There's no way to turn the HRM off when the window is closed, and HRM samples from *any* device would appear to be shown - not just the one that HRM info was requested on
2023-01-26 10:31:13 +00:00
Gordon Williams b16464b3b6 Bangle.js stop 'toast' warning message appearing when starting the app loader. Fix https://github.com/espruino/BangleApps/issues/2496 2023-01-13 14:28:38 +00:00
Gordon Williams f3fa01dfba Bangle.js: Quick tweak to stop us sending bitmaps for common characters that already had good enough equivalents 2023-01-11 13:45:46 +00:00
Gordon Williams 6d35ca3ec0 fix gbDevice==null errors again, and avoid spamming log with ACTION_DEVICE_CHANGED messages 2022-12-12 16:10:14 +00:00
Gordon WilliamsandGitea 0dd0b2bead Bangle.js flow control. If the Bangle is busy and unable to accept more data, Gadgetbridge will now pause sending until the Bangle is ready for more.
This works by adding the ability to pause the sending of data from the Bluetooth LE queue. While BtLEQueue is modified, unless setPaused(true) is called it behaves exactly as before so shouldn't cause any issues.
2022-12-12 07:43:20 +00:00
Gordon WilliamsandGitea bb1323dd61 Ensure we automatically convert unrenderable chars the title/description of calendar events 2022-12-12 07:42:22 +00:00
Gordon WilliamsandGitea e003e0b672 Fix the code that forces a calendar sync on Bangle.js - previously sending "android.intent.action.PROVIDER_CHANGED" didn't work 2022-12-12 07:42:22 +00:00
Gordon Williams 55cbac5f8f Squashing some build warnings. Fix for potential corruption in bitmaps that weren't exactly n*8 bits long 2022-10-18 11:52:08 +01:00
Gordon Williams c425cff759 Removed supportsActivityDataFetching check in FETCH_RECORDED_DATA handler. This
fixes a regression for Bangle.js where 'Debug -> Fetch Debug Logs' wasn't working because
it didn't support activity data fetching.

see https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/2526#issuecomment-648446
2022-10-18 08:25:14 +01:00
Gordon Williams 6eeb70ac6b Remove un-needed import in last commit (sorry!) 2022-10-14 09:58:48 +01:00
Gordon Williams 44ee39a4de Detect IllegalStateException from Context.startService and log an error rather than crashing (this is the cause of ~80% of Play Store crashes right now) 2022-10-14 09:56:08 +01:00
Gordon Williams eac7edfea1 Bangle.js - small tweak to fix occasional NullPointerException reported via Play Store 2022-10-14 09:48:55 +01:00
Gordon WilliamsandGitea abec54fb1a Bangle.js: Added PATCH HTTP request type, and fix for VolleyError UnsupportedOperationException when supplying custom headers 2022-09-27 11:11:52 +02:00
Gordon WilliamsandGitea 87c61948a6 Bangle.js: smooth out battery level readings 2022-09-06 21:13:37 +02:00
Gordon Williams 0f052f5467 Bangle.js: Fix null pointer issue if headers not supplied for HTTP request 2022-08-24 20:26:25 +01:00
Gordon WilliamsandGitea f996973a4d Minor fixes for crashes that Play Store build has encountered 2022-08-12 08:41:16 +02:00
Gordon WilliamsandGitea c762bafb2e support for specifying HTTP method, headers and body 2022-08-12 08:41:16 +02:00
Gordon Williams 2e4fa6d699 Tweak for potential null pointer exception seen after play store release 2022-07-25 14:52:30 +01:00
Gordon Williams 14db0d7df6 Merge branch 'master' of codeberg.org:gfwilliams/Gadgetbridge 2022-07-25 14:35:25 +01:00
Gordon Williams 1e4fb7ee87 Bangle.js - make 'text as bitmaps' have transparent background, and allow font size to be specified - fixes https://github.com/espruino/BangleApps/issues/2057 2022-07-25 14:34:34 +01:00
Gordon Williams fd31acd517 revert last changes - we can just use banglejs/AndroidManifest.xml 2022-06-15 13:41:48 +01:00
Gordon Williams c7351156ca Merge remote-tracking branch 'freeyourgadget/master' 2022-06-15 13:40:41 +01:00
Gordon Williams 6bea0af9e0 Bangle.js flavor - move to SDK 30 as we need it for Play Store 2022-06-15 13:39:11 +01:00
Gordon Williams abf6785fb5 Merge remote-tracking branch 'freeyourgadget/master' 2022-06-15 11:49:08 +01:00
Gordon Williams c2d98b5a24 Bangle.js - fix corruption in images with a certain sequence of chars 2022-06-15 11:48:41 +01:00
Gordon Williams 4c27f43fea Bangle.js - fix corruption in images with a certain sequence of chars 2022-06-15 11:36:35 +01:00
Gordon Williams ae3fc3ed48 Extra QUERY_ALL_PACKAGES permission required for SDK 30 (which Play Store needs) 2022-06-15 11:36:24 +01:00
Gordon Williams f606e85e1b Bangle.js: fix null pointer issue for debug messages, and ensure '...' special char is just replaced with '...' 2022-06-14 14:31:18 +01:00
Gordon Williams c11af9e95c Keep data sent to Bangle.js in the log as well 2022-06-14 14:31:12 +01:00
Gordon Williams 1eab878c8e Bangle.js: fix null pointer issue for debug messages, and ensure '...' special char is just replaced with '...' 2022-06-14 14:30:33 +01:00
Gordon Williams b9096b3b74 Keep data sent to Bangle.js in the log as well 2022-06-14 11:23:38 +01:00
Gordon Williams 657a117c9e bringing back into sync with freeyourgadget 2022-06-13 08:46:15 +01:00
Gordon Williams 3ef39433a6 Bangle.js build: remove the 'Donate' link for the Bangle.js build only, and instead add a message in the app's About dialog (unfortunately this is needed because Google Play store policy doesn't allow you to 'buy' stuff outside of the store) 2022-06-13 08:38:05 +01:00
Gordon Williams e40bd79fbf Bangle.js: Adding built-in app-loader view (available via app management icon). Only available on internet-enabled builds (it's a webview) 2022-06-13 08:35:32 +01:00
Gordon Williams 4a3b530d8f Merge remote-tracking branch 'freeyourgadget/master' 2022-06-13 08:27:10 +01:00
Gordon Williams bdcaeae177 Merge remote-tracking branch 'freeyourgadget/master' into freeyourgadget_master 2022-06-13 08:26:53 +01:00
Gordon Williams bb274cd6be remove un-needed imports 2022-06-10 13:11:50 +01:00
Gordon Williams ca61ad9662 fix merge error 2022-06-10 13:08:25 +01:00
Gordon Williams 71b1a140f6 Merge branch 'freeyourgadget_master' 2022-06-10 12:14:34 +01:00
Gordon Williams 2bb8eefe23 Merge branch 'freeyourgadget_master' of codeberg.org:Freeyourgadget/Gadgetbridge into freeyourgadget_master 2022-06-10 12:13:23 +01:00
Gordon Williams 607441b6b0 Support for color dithered bitmaps, and converting emoji->bitmaps
# Conflicts:
#	app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/banglejs/BangleJSDeviceSupport.java
2022-06-10 12:01:12 +01:00
Gordon Williams 12f2049ac6 Bangle.js: Keep a log of data sent from the watch, and allow it to be saved with 'Fetch Device Debug Logs' from the debug menu 2022-06-10 11:48:09 +01:00
Gordon Williams 774fb4efc3 Bangle.js fix message REPLY option 2022-06-10 11:45:52 +01:00
Gordon Williams cf40dae93b Bangle.js fix message REPLY option 2022-06-10 11:40:53 +01:00
Gordon Williams 6fb22b9441 Merge branch 'master' of codeberg.org:Freeyourgadget/Gadgetbridge 2022-06-10 10:15:20 +01:00
Gordon Williams a796860188 Support for color dithered bitmaps, and converting emoji->bitmaps 2022-06-10 10:14:37 +01:00
Gordon Williams 233053f2ab Bangle.js: Keep a log of data sent from the watch, and allow it to be saved with 'Fetch Device Debug Logs' from the debug menu 2022-06-07 13:01:34 +01:00
Gordon Williams f96d413d96 Merge branch 'master' of codeberg.org:Freeyourgadget/Gadgetbridge 2022-05-25 13:28:35 +01:00
Gordon Williams 5107887bec For Bangle.js app remove the Donation link (Google Play Store policy) and add text in the About dialog urging users to donate via the homepage. 2022-05-25 13:26:50 +01:00
Gordon Williams 961cdd437f Make app loader page more reliable, and allow a custom app loader URL to be specified 2022-05-23 17:08:10 +01:00
Gordon Williams 57b53f28be Now split words for image conversion on punctuation, not just space.
Also fix accidental typos
2022-05-23 16:01:06 +01:00
Gordon Williams 5211540e03 Improve JSON stringification for Bangle.js - much more compact, and now handles non-ASCII chars correctly 2022-05-23 15:38:06 +01:00
Gordon Williams 7d89279662 Add extra string needed for last commit 3f053927e0 2022-05-20 08:43:16 +01:00
Gordon Williams 9dbdb3da93 Merge branch 'freeyourgadget_master' 2022-05-20 08:41:41 +01:00
Gordon Williams 3f053927e0 Pop up a dialog asking about Location permissions (although others get requested too).
Conversation at https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/2675#issuecomment-455468
2022-05-20 08:39:47 +01:00