1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-11-14 14:09:28 +01:00
Commit Graph

82 Commits

Author SHA1 Message Date
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
Daniele Gobbetti
5d6109a4fb No functional changes, only run "Reformat code" 2022-11-27 19:02:52 +01:00
Daniele Gobbetti
7f24ba8ffb Drastic rewrite of discovery activity.
- get rid of pre-lollipop BLE discovery (nowadays we support only lollipop and above) and related preference
- get rid of the sequenced BT-then-BLE-scan that wasn't working reliably anyway and was causing a recursion
- add a caching layer for already processed devices (the same device is found multiple times during discovery)
- add a caching layer for device name in GBDeviceCandidate (many coordinators will ask for it, and it's a very expensive operation)
2022-11-27 18:59:22 +01:00
Andreas Shimokawa
969164ba5d Remove KitKat support 2022-09-10 12:04:16 +02:00
vanous
fe73e9fec1 Allow Settings splitting into device, app and auth screens
- open app preferences screen from device card menu
- open auth preferences screen from DiscoveryActivity
- add explanation about Auth key, make it open wiki link, fix #2240
- add New protocol checkbox and explanation when first pairing Miband 6
2022-07-05 21:40:27 +02:00
vanous
a9cd3412ee Allow to set discovery scanning level to prevent freezing 2022-06-11 23:07:56 +02:00
vanous
c23810f54c Provide Add test device directly from the Discovery screen 2021-12-26 18:14:07 +01:00
vanous
682a26e56d Add Discovery setting to the Discovery Activity 2021-12-26 18:14:07 +01:00
vanous
71138192f0 Allow discovering unsupported devices for debug purposes 2021-12-26 18:14:07 +01:00
Andreas Böhler
264b003809 Fix connection on GBX-100 2021-09-23 18:28:45 +02:00
TaaviE
df3ee872ae Improved logging in bonding and tried to recover from weirdness 2021-05-30 01:00:48 +03:00
TaaviE
09eb470b64 Renamed removeBroadcastReceivers to a more correct name 2020-12-28 22:03:41 +01:00
Toby Murray
ab306b1352 Add BlueTooth receivers in onResume
Pairing some devices requires a PIN to be entered. E.g. the flow is: confirm you'd like to pair, pass off to Android which prompts for a PIN to pair with (typically shows up on the non-phone device's screen or is hard coded in the manual), then return back to the app.

When this pairing request screen pops up, it takes focus. This invokes onPause and onStop in the DiscoveryActivity, which removes the BlueTooth broadcast receivers. Returning focus (after successful pairing), there's nothing to listen to the event. Practically speaking, GadgetBridge last saw the device as BOND_BONDING, so it's out of sync. If queried, the device is BOND_BONDED, so it's good to move on to the next step.

Many existing pairing activities (Lenovo, MiBand, Pebble, Watch9) have an implementation of onResume() to presumably tackle this issue, this adds it to `DiscoveryActivity` as well. Testing with some other supporting code, this allows a Garmin vivosport to appear in Gadgetbridge.
2020-12-28 22:03:41 +01:00
xaos
68e7a5fea9 refined error message for invalid authentication key
Co-Authored-By: xaos <xaos@noreply.codeberg.org>
Co-Committed-By: xaos <xaos@noreply.codeberg.org>
2020-12-20 00:25:44 +01:00
TaaviE
6cd59fbd24 Refactored all pairing and bonding activities (#1989)
Fixed a few warnings

Refactored all bonding and bonding activities

Co-authored-by: TaaviE <taavi.eomae+github@gmail.com>
Reviewed-on: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/1989
2020-08-28 15:38:18 +02:00
TaaviE
fb70a07f64 Tried fixing a LineageOS quirk with regular BT scans 2020-08-02 23:59:42 +03:00
TaaviE
749cf91f63 Handled the potential case of the same scan finishing twice and canceling a running scan being displayed 2020-08-02 23:43:00 +03:00
TaaviE
83f3b8565e Removed duplicate UI updates 2020-08-02 22:06:18 +03:00
TaaviE
d7ce49a2f3 Improved UX when Bluetooth is disabled mid-scan 2020-08-02 21:55:16 +03:00
TaaviE
9627360fac Fixed an UI error when Bluetooth discovery starting fails 2020-08-02 21:23:14 +03:00
TaaviE
61c74e9b15 Made the scans time out nicely 2020-08-02 21:07:14 +03:00
TaaviE
498c0d42e2 Made sure to check if location permission has been given by the user for scanning 2020-08-02 21:07:14 +03:00
TaaviE
aa9abd4b61 Added a log message that might help with debugging in some cases 2020-08-02 21:07:14 +03:00
TaaviE
f526bbe632 Added an API version guard to the new type of BLE scanning 2020-08-02 21:07:14 +03:00
TaaviE
b76a8267b8 Added CompanionDeviceManager support, added target 29 support, refactored the scan display and UI. 2020-08-02 21:07:14 +03:00
TaaviE
8da7a7aced Added a checkbox to un-ignore bonded devices 2020-08-01 15:49:54 +02:00
TaaviE
d871b03f33 Added a safety measure against a weird internal crash when stopping a BLE scan 2020-06-17 08:47:39 +02:00
TaaviE
68e746edff Made it adding already paired devices work properly if they're not ignored 2020-02-03 20:24:55 +01:00
TaaviE
b01e703e84 Added a check to avoid indefinitely lasting scans 2020-01-31 07:01:04 +02:00
License Bot
d6fa5d0dd5 Update license headers 2020-01-09 10:44:32 +01:00
Andreas Shimokawa
b9d3ec6df3 Make disabling new BLE scanning an option in preference
It was disabled in master, but not in the Fossil Q branch, now both is possible

This also reverts ca9761c336
which disabled classic BT scanning
2019-12-07 22:38:30 +01:00
License Bot
1dc8c26e2a Update license headers 2019-12-06 22:51:43 +01:00
Andreas Shimokawa
074994d24b Merge branch 'master' into fossil-q-hybrid 2019-10-12 20:47:19 +02:00
Andreas Shimokawa
7b5e333601 Skip service scan if supported device could be recognized without uuids during discovery 2019-10-12 20:15:09 +02:00
Andreas Shimokawa
4bf37ea70f Mi Band 4/Amazfit Bip Lite: Display a toast and do not try to pair if there was no auth key supplied 2019-10-12 19:44:45 +02:00
Daniel Dakhno
ca9761c336 adjusted DiscoveryActivity to use new scan 2019-10-10 02:09:23 +02:00
Andreas Shimokawa
57a235742d Properly disable new ble scanning for testing
(inverted logic committed accidentially)
2019-08-03 23:40:07 +02:00
Andreas Shimokawa
02d02d2329 Add Initial Mijia LYWSD02 support (Smart Clock with Humidity and Temperature Sensor)
This only sets the time on connect.
2019-08-02 23:49:14 +02:00
Andreas Shimokawa
a60268c05c Mi Band 4: Bring your own key support (blindly done, I dont have my key)
THIS STILL REQUIRES MI FIT AND YOUR EXTRACTED KEY

HOWTO:
1) press + button in Gadgerbridge
2) LONG PRESS Mi Band 4
3) Tap "Auth Key"
4) Enter your key prefixed with 0x (eg. 0x112233445566778899aabbccddeeff00)
5) Go back
6) Tap Mi Band 4

Success? You tell me.
2019-07-23 08:56:26 +02:00
Andreas Shimokawa
9bfef4cf4f Make per-device settings more versatile, move more settings
This allows to construct per-device settings by device type very easily

device coordinators just do the following to declare which setting they support,
the settings activity is then composed at runtime.

@Override
public int[] getSupportedDeviceSpecificSettings(GBDevice device) {
     return new int[]{
            R.xml.devicesettings_miband3,
            R.xml.devicesettings_swipeunlock,
            R.xml.devicesettings_pairingkey
    };
}
2019-05-22 00:42:22 +02:00
Andreas Shimokawa
db48707764 Add a device specific settings activity, currently used for setting the auth key for Amazfit Bip/Cor
When connecting to a new device, a random key gets generated, which can be
looked up from the device specific settings (accessible via the gear icon in
the device card in the main activity). Old devices keep their 0123456789@ABCDE
key, they have to be re-paired to change that.
During pairing, long-pressing the device candidate in the discovery activity
will also start the device specific settings activity, where the auth key
can be set manually priror to pairing. This is usefull to keep the ability to
pair one device with multiple android devices.

Fixes #1308
2019-04-21 21:25:33 +02:00
License Bot
beedb653e6 Update license headers 2019-02-13 20:43:31 +01:00
Daniele Gobbetti
75d3dffb14 Migrate to androidx support libraries and bump compile SDK version
"Optimize imports" has been run on all source files, there might be
unrelated changes, but these should be harmless.
2019-01-26 16:00:56 +01:00
License Bot
696653eabf Update contributors list and license headers. 2018-08-29 21:30:23 +02:00
Daniele Gobbetti
a5dd88df53 Fix discovery on devices with Android version < Lollipop
also reduce the amount of lines logged in discovery activity.
2018-07-22 16:14:36 +02:00
boun
11c545362a Do not crash inside the emulator (#1150)
As there is no bluetooth support in the emulator
2018-07-12 18:25:18 +02:00
jonnsoft
09a36aa5e7 MiBand3 pairing fix
(cherry picked from commit 3656ed9648b28475c35764da8a5cbeb420cfc307)
2018-07-09 22:56:16 +02:00
License Bot
225a600aed Update license headers 2018-06-25 18:35:46 +02:00
Daniele Gobbetti
3c00332a77 Always stop BT/BTLE discovery when exiting the Discovery Activity
Hopefully solves the leaks
2018-06-18 20:26:28 +02:00
TaaviE
08feaf30e1 Fixed a bunch of misspells. 2018-03-31 17:31:48 +02:00