This commit is contained in:
ImBenji
2024-05-01 19:28:51 +01:00
parent fc4d3ef898
commit c2ebac5bb5
30 changed files with 4727 additions and 403 deletions

View File

@@ -1,14 +1,17 @@
import 'dart:async';
import 'dart:io';
import 'dart:typed_data';
import 'package:bus_infotainment/audio_cache.dart';
import 'package:bus_infotainment/backend/live_information.dart';
import 'package:bus_infotainment/backend/modules/tube_info.dart';
import 'package:bus_infotainment/tfl_datasets.dart';
import 'package:bus_infotainment/utils/audio%20wrapper.dart';
import 'package:bus_infotainment/utils/delegates.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/services.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'info_module.dart';
@@ -33,12 +36,26 @@ class AnnouncementModule extends InfoModule {
return _bundleBytes!;
} else {
if (kIsWeb) {
throw Exception("Cannot load bundle bytes on web");
// Try to load them from shared preferences
try {
SharedPreferences prefs = await SharedPreferences.getInstance();
String fileLocation = prefs.getString("AnnouncementsFileLocation")!;
File file = File(fileLocation);
setBundleBytes(file.readAsBytesSync());
return _bundleBytes!;
} catch (e) {
throw Exception("Loading announcements from assets has been deprecated.");
}
final bytes = await rootBundle.load(_bundleLocation);
return bytes.buffer.asUint8List();
// if (kIsWeb) {
// throw Exception("Cannot load bundle bytes on web");
// }
//
// final bytes = await rootBundle.load(_bundleLocation);
// return bytes.buffer.asUint8List();
}
}
@@ -274,11 +291,21 @@ class AnnouncementModule extends InfoModule {
String audioRoute = "R_${routeVariant.busRoute.routeNumber}_001.mp3";
print("Checkpoint 5");
await announcementCache.loadAnnouncementsFromBytes(await getBundleBytes(), [audioRoute, "R_RAIL_REPLACEMENT_SERVICE_001.mp3"]);
await announcementCache.loadAnnouncementsFromBytes(await getBundleBytes(), [audioRoute]);
print("Checkpoint 6");
AudioWrapperSource sourceRoute = !routeNumber.toLowerCase().startsWith("ul") ?
AudioWrapperByteSource(announcementCache[audioRoute]!) :
AudioWrapperByteSource(announcementCache["R_RAIL_REPLACEMENT_SERVICE_001.mp3"]!);
// AudioWrapperByteSource(announcementCache["R_RAIL_REPLACEMENT_SERVICE_001.mp3"]!);
AudioWrapperAssetSource("audio/R_RAIL_REPLACEMENT_SERVICE_001.mp3");
if (routeNumber.toLowerCase().startsWith("ul")) {
TubeLine? closestLine = liveInformation.tubeStations.getClosestLine(routeVariant);
sourceRoute = closestLine?.getAudio() ?? sourceRoute;
routeNumber = closestLine?.getShortName() ?? routeNumber;
}
print("Checkpoint 6.1");
AudioWrapperSource sourceDestination = AudioWrapperByteSource(await routeVariant.destination!.getAudioBytes());
print("Checkpoint 7");