diff --git a/assets/silence.mp3 b/assets/silence.mp3 new file mode 100644 index 0000000..a0f601c Binary files /dev/null and b/assets/silence.mp3 differ diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 35bdb12..555eef4 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1,4 +1,6 @@ PODS: + - audio_session (0.0.1): + - Flutter - bluetooth_low_energy_darwin (0.0.1): - Flutter - FlutterMacOS @@ -25,6 +27,9 @@ PODS: - Flutter - ios_receipt (0.0.1): - Flutter + - just_audio (0.0.1): + - Flutter + - FlutterMacOS - media_key_detector_ios (0.0.1): - Flutter - nsd_ios (0.0.1): @@ -63,6 +68,7 @@ PODS: - Flutter DEPENDENCIES: + - audio_session (from `.symlinks/plugins/audio_session/ios`) - bluetooth_low_energy_darwin (from `.symlinks/plugins/bluetooth_low_energy_darwin/darwin`) - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`) - Flutter (from `Flutter`) @@ -75,6 +81,7 @@ DEPENDENCIES: - in_app_review (from `.symlinks/plugins/in_app_review/ios`) - integration_test (from `.symlinks/plugins/integration_test/ios`) - ios_receipt (from `.symlinks/plugins/ios_receipt/ios`) + - just_audio (from `.symlinks/plugins/just_audio/darwin`) - media_key_detector_ios (from `.symlinks/plugins/media_key_detector_ios/ios`) - nsd_ios (from `.symlinks/plugins/nsd_ios/ios`) - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`) @@ -96,6 +103,8 @@ SPEC REPOS: - RevenueCatUI EXTERNAL SOURCES: + audio_session: + :path: ".symlinks/plugins/audio_session/ios" bluetooth_low_energy_darwin: :path: ".symlinks/plugins/bluetooth_low_energy_darwin/darwin" device_info_plus: @@ -120,6 +129,8 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/integration_test/ios" ios_receipt: :path: ".symlinks/plugins/ios_receipt/ios" + just_audio: + :path: ".symlinks/plugins/just_audio/darwin" media_key_detector_ios: :path: ".symlinks/plugins/media_key_detector_ios/ios" nsd_ios: @@ -146,6 +157,7 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/wakelock_plus/ios" SPEC CHECKSUMS: + audio_session: 19e9480dbdd4e5f6c4543826b2e8b0e4ab6145fe bluetooth_low_energy_darwin: 50bc79258e60586e4c4bed5948bd31d925f37fac device_info_plus: bf2e3232933866d73fe290f2942f2156cdd10342 Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467 @@ -158,6 +170,7 @@ SPEC CHECKSUMS: in_app_review: 436034b18594851a7328d7f1c2ed5ec235b79cfc integration_test: 252f60fa39af5e17c3aa9899d35d908a0721b573 ios_receipt: c2d5b4c36953c377a024992393976214ce6951e6 + just_audio: a42c63806f16995daf5b219ae1d679deb76e6a79 media_key_detector_ios: 7ff9aefdfea00bb7b71e184132381b7d0e7e1269 nsd_ios: 8c37babdc6538e3350dbed3a52674d2edde98173 package_info_plus: c0502532a26c7662a62a356cebe2692ec5fe4ec4 diff --git a/lib/bluetooth/devices/mywhoosh/link.dart b/lib/bluetooth/devices/mywhoosh/link.dart index 227cabe..10bbfc7 100644 --- a/lib/bluetooth/devices/mywhoosh/link.dart +++ b/lib/bluetooth/devices/mywhoosh/link.dart @@ -2,7 +2,6 @@ import 'dart:convert'; import 'dart:io'; import 'package:bike_control/bluetooth/devices/trainer_connection.dart'; -import 'package:prop/prop.dart'; import 'package:bike_control/bluetooth/messages/notification.dart'; import 'package:bike_control/gen/l10n.dart'; import 'package:bike_control/utils/actions/base_actions.dart'; @@ -11,6 +10,7 @@ import 'package:bike_control/utils/keymap/buttons.dart'; import 'package:bike_control/utils/keymap/keymap.dart'; import 'package:bike_control/utils/requirements/multi.dart'; import 'package:flutter/foundation.dart'; +import 'package:prop/prop.dart'; class WhooshLink extends TrainerConnection { Socket? _socket; @@ -66,7 +66,8 @@ class WhooshLink extends TrainerConnection { // Accept connection _server!.listen( - (Socket socket) { + (Socket socket) async { + await SharedLogic.keepAlive(); _socket = socket; core.connection.signalNotification( AlertNotification(LogLevel.LOGLEVEL_INFO, AppLocalizations.current.myWhooshLinkConnected), @@ -89,6 +90,8 @@ class WhooshLink extends TrainerConnection { }, onDone: () { print('Client disconnected: $socket'); + + SharedLogic.stopKeepAlive(); isConnected.value = false; core.connection.signalNotification( AlertNotification(LogLevel.LOGLEVEL_WARNING, 'MyWhoosh Link disconnected'), diff --git a/lib/bluetooth/devices/openbikecontrol/obc_mdns_emulator.dart b/lib/bluetooth/devices/openbikecontrol/obc_mdns_emulator.dart index 7c84bb1..3251921 100644 --- a/lib/bluetooth/devices/openbikecontrol/obc_mdns_emulator.dart +++ b/lib/bluetooth/devices/openbikecontrol/obc_mdns_emulator.dart @@ -119,7 +119,8 @@ class OpenBikeControlMdnsEmulator extends TrainerConnection { // Accept connection _server!.listen( - (Socket socket) { + (Socket socket) async { + await SharedLogic.keepAlive(); _socket = socket; if (kDebugMode) { @@ -153,6 +154,7 @@ class OpenBikeControlMdnsEmulator extends TrainerConnection { } }, onDone: () { + SharedLogic.stopKeepAlive(); core.connection.signalNotification( AlertNotification(LogLevel.LOGLEVEL_INFO, 'Disconnected from app: ${connectedApp.value?.appId}'), ); diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 38f0d23..ed1eae4 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,6 +5,7 @@ import FlutterMacOS import Foundation +import audio_session import bluetooth_low_energy_darwin import device_info_plus import file_selector_macos @@ -15,6 +16,7 @@ import gamepads_darwin import in_app_purchase_storekit import in_app_review import ios_receipt +import just_audio import keypress_simulator_macos import media_key_detector_macos import nsd_macos @@ -28,6 +30,7 @@ import wakelock_plus import window_manager func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + AudioSessionPlugin.register(with: registry.registrar(forPlugin: "AudioSessionPlugin")) BluetoothLowEnergyDarwinPlugin.register(with: registry.registrar(forPlugin: "BluetoothLowEnergyDarwinPlugin")) DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) @@ -38,6 +41,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { InAppPurchasePlugin.register(with: registry.registrar(forPlugin: "InAppPurchasePlugin")) InAppReviewPlugin.register(with: registry.registrar(forPlugin: "InAppReviewPlugin")) IosReceiptPlugin.register(with: registry.registrar(forPlugin: "IosReceiptPlugin")) + JustAudioPlugin.register(with: registry.registrar(forPlugin: "JustAudioPlugin")) KeypressSimulatorMacosPlugin.register(with: registry.registrar(forPlugin: "KeypressSimulatorMacosPlugin")) MediaKeyDetectorPlugin.register(with: registry.registrar(forPlugin: "MediaKeyDetectorPlugin")) NsdMacosPlugin.register(with: registry.registrar(forPlugin: "NsdMacosPlugin")) diff --git a/prop b/prop index 3ddb11e..585c205 160000 --- a/prop +++ b/prop @@ -1 +1 @@ -Subproject commit 3ddb11e101013ee614f97ec005b714a3976879cf +Subproject commit 585c2057507329cea117e41aa6d8ec1e81f48443 diff --git a/pubspec.lock b/pubspec.lock index da5d40a..e6e66d0 100755 --- a/pubspec.lock +++ b/pubspec.lock @@ -80,6 +80,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.13.0" + audio_session: + dependency: transitive + description: + name: audio_session + sha256: "8f96a7fecbb718cb093070f868b4cdcb8a9b1053dce342ff8ab2fde10eb9afb7" + url: "https://pub.dev" + source: hosted + version: "0.2.2" bluetooth_low_energy: dependency: "direct main" description: @@ -868,6 +876,30 @@ packages: url: "https://pub.dev" source: hosted version: "4.9.0" + just_audio: + dependency: transitive + description: + name: just_audio + sha256: "9694e4734f515f2a052493d1d7e0d6de219ee0427c7c29492e246ff32a219908" + url: "https://pub.dev" + source: hosted + version: "0.10.5" + just_audio_platform_interface: + dependency: transitive + description: + name: just_audio_platform_interface + sha256: "2532c8d6702528824445921c5ff10548b518b13f808c2e34c2fd54793b999a6a" + url: "https://pub.dev" + source: hosted + version: "4.6.0" + just_audio_web: + dependency: transitive + description: + name: just_audio_web + sha256: "6ba8a2a7e87d57d32f0f7b42856ade3d6a9fbe0f1a11fabae0a4f00bb73f0663" + url: "https://pub.dev" + source: hosted + version: "0.4.16" keypress_simulator: dependency: "direct main" description: @@ -1560,6 +1592,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.3.1" + synchronized: + dependency: transitive + description: + name: synchronized + sha256: c254ade258ec8282947a0acbbc90b9575b4f19673533ee46f2f6e9b3aeefd7c0 + url: "https://pub.dev" + source: hosted + version: "3.4.0" term_glyph: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 0e9c083..8f82052 100755 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -104,6 +104,7 @@ flutter: - INSTRUCTIONS_ZWIFT.md - INSTRUCTIONS_LOCAL.md - shorebird.yaml + - assets/silence.mp3 - icon.png flutter_intl: