More
This commit is contained in:
@@ -60,7 +60,8 @@ class LiveInformation {
|
||||
refreshTimer();
|
||||
}
|
||||
|
||||
Timer refreshTimer() => Timer.periodic(Duration(milliseconds: 100), (timer) {
|
||||
|
||||
Timer refreshTimer() => Timer.periodic(Duration(milliseconds: 50), (timer) {
|
||||
_handleAnnouncementQueue();
|
||||
});
|
||||
|
||||
@@ -78,6 +79,9 @@ class LiveInformation {
|
||||
}
|
||||
|
||||
void _handleAnnouncementQueue() async {
|
||||
|
||||
int timerInterval = 50;
|
||||
|
||||
// print("Handling announcement queue");
|
||||
if (audioPlayer.state != AudioWrapper_State.Playing) {
|
||||
if (announcementQueue.isNotEmpty) {
|
||||
@@ -88,10 +92,10 @@ class LiveInformation {
|
||||
DateTime now = DateTime.now();
|
||||
if (announcement.scheduledTime != null) {
|
||||
int milisecondDifference = abs(now.millisecondsSinceEpoch - announcement.scheduledTime!.millisecondsSinceEpoch);
|
||||
print("Q Difference: ${milisecondDifference}");
|
||||
if (milisecondDifference <= 100) {
|
||||
// print("Q Difference: ${milisecondDifference}");
|
||||
if (milisecondDifference <= timerInterval) {
|
||||
// Account for the time lost by the periodic timer
|
||||
// await Future.delayed(Duration(milliseconds: 100 - milisecondDifference));
|
||||
await Future.delayed(Duration(milliseconds: timerInterval - milisecondDifference));
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
@@ -101,7 +105,7 @@ class LiveInformation {
|
||||
}
|
||||
|
||||
|
||||
announcementDelegate.trigger(announcement);
|
||||
// announcementDelegate.trigger(announcement);
|
||||
_currentAnnouncement = announcement.displayText;
|
||||
|
||||
lastAnnouncement = DateTime.now();
|
||||
@@ -113,7 +117,8 @@ class LiveInformation {
|
||||
await Future.delayed(Duration(milliseconds: 150));
|
||||
}
|
||||
audioPlayer.stop();
|
||||
announcementQueue.removeAt(0);
|
||||
announcementQueue.remove(announcement);
|
||||
print("Queue length: ${announcementQueue.length}");
|
||||
print("Popped announcement queue");
|
||||
}
|
||||
}
|
||||
@@ -143,12 +148,13 @@ class LiveInformation {
|
||||
}
|
||||
|
||||
late BusSequences busSequences;
|
||||
|
||||
BusRouteVariant? _currentRouteVariant;
|
||||
EventDelegate<BusRouteVariant> routeVariantDelegate = EventDelegate();
|
||||
|
||||
void setRouteVariant(BusRouteVariant routeVariant) {
|
||||
_currentRouteVariant = routeVariant;
|
||||
announceRouteVariant(routeVariant);
|
||||
routeVariantDelegate.trigger(routeVariant);
|
||||
}
|
||||
|
||||
BusRouteVariant? getRouteVariant() {
|
||||
@@ -181,7 +187,7 @@ class LiveInformation {
|
||||
|
||||
final databases = appwrite.Databases(auth.client);
|
||||
|
||||
if (announcement is ManualAnnouncementEntry) {
|
||||
if (announcement is InformationAnnouncementEntry) {
|
||||
|
||||
// 5 sedonds in the future
|
||||
DateTime scheduledTime = DateTime.now().add(Duration(seconds: 5));
|
||||
@@ -205,83 +211,83 @@ class LiveInformation {
|
||||
|
||||
}
|
||||
|
||||
List<ManualAnnouncementEntry> manualAnnouncements = [
|
||||
ManualAnnouncementEntry(
|
||||
List<InformationAnnouncementEntry> manualAnnouncements = [
|
||||
InformationAnnouncementEntry(
|
||||
shortName: "Driver Change",
|
||||
informationText: "Driver Change",
|
||||
audioSources: [AudioWrapperAssetSource("audio/manual_announcements/driverchange.mp3")],
|
||||
),
|
||||
ManualAnnouncementEntry(
|
||||
InformationAnnouncementEntry(
|
||||
shortName: "No Standing Upr Deck",
|
||||
informationText: "No standing on the upper deck",
|
||||
audioSources: [AudioWrapperAssetSource("audio/manual_announcements/nostanding.mp3")],
|
||||
),
|
||||
ManualAnnouncementEntry(
|
||||
InformationAnnouncementEntry(
|
||||
shortName: "Face Covering",
|
||||
informationText: "Please wear a face covering!",
|
||||
audioSources: [AudioWrapperAssetSource("audio/manual_announcements/facecovering.mp3")],
|
||||
),
|
||||
ManualAnnouncementEntry(
|
||||
InformationAnnouncementEntry(
|
||||
shortName: "Seats Upstairs",
|
||||
informationText: "Seats are available upstairs",
|
||||
audioSources: [AudioWrapperAssetSource("audio/manual_announcements/seatsupstairs.mp3")],
|
||||
),
|
||||
ManualAnnouncementEntry(
|
||||
InformationAnnouncementEntry(
|
||||
shortName: "Bus Terminates Here",
|
||||
informationText: "Bus terminates here. Please take your belongings with you",
|
||||
audioSources: [AudioWrapperAssetSource("audio/manual_announcements/busterminateshere.mp3")],
|
||||
),
|
||||
ManualAnnouncementEntry(
|
||||
InformationAnnouncementEntry(
|
||||
shortName: "Bus On Diversion",
|
||||
informationText: "Bus on diversion. Please listen for further announcements",
|
||||
audioSources: [AudioWrapperAssetSource("audio/manual_announcements/busondiversion.mp3")],
|
||||
),
|
||||
ManualAnnouncementEntry(
|
||||
InformationAnnouncementEntry(
|
||||
shortName: "Destination Change",
|
||||
informationText: "Destination Changed - please listen for further instructions",
|
||||
audioSources: [AudioWrapperAssetSource("audio/manual_announcements/destinationchange.mp3")],
|
||||
),
|
||||
ManualAnnouncementEntry(
|
||||
InformationAnnouncementEntry(
|
||||
shortName: "Wheelchair Space",
|
||||
informationText: "Wheelchair space requested",
|
||||
audioSources: [AudioWrapperAssetSource("audio/manual_announcements/wheelchairspace1.mp3")],
|
||||
),
|
||||
ManualAnnouncementEntry(
|
||||
InformationAnnouncementEntry(
|
||||
shortName: "Move Down The Bus",
|
||||
informationText: "Please move down the bus",
|
||||
audioSources: [AudioWrapperAssetSource("audio/manual_announcements/movedownthebus.mp3")],
|
||||
),
|
||||
ManualAnnouncementEntry(
|
||||
InformationAnnouncementEntry(
|
||||
shortName: "Next Stop Closed",
|
||||
informationText: "The next bus stop is closed",
|
||||
audioSources: [AudioWrapperAssetSource("audio/manual_announcements/nextstopclosed.wav")],
|
||||
),
|
||||
ManualAnnouncementEntry(
|
||||
InformationAnnouncementEntry(
|
||||
shortName: "CCTV In Operation",
|
||||
informationText: "CCTV is in operation on this bus",
|
||||
audioSources: [AudioWrapperAssetSource("audio/manual_announcements/cctvoperation.mp3")],
|
||||
),
|
||||
ManualAnnouncementEntry(
|
||||
InformationAnnouncementEntry(
|
||||
shortName: "Safe Door Opening",
|
||||
informationText: "Driver will open the doors when it is safe to do so",
|
||||
audioSources: [AudioWrapperAssetSource("audio/manual_announcements/safedooropening.mp3")],
|
||||
),
|
||||
ManualAnnouncementEntry(
|
||||
InformationAnnouncementEntry(
|
||||
shortName: "Buggy Safety",
|
||||
informationText: "For your child's safety, please remain with your buggy",
|
||||
audioSources: [AudioWrapperAssetSource("audio/manual_announcements/buggysafety.mp3")],
|
||||
),
|
||||
ManualAnnouncementEntry(
|
||||
InformationAnnouncementEntry(
|
||||
shortName: "Wheelchair Space 2",
|
||||
informationText: "Wheelchair priority space required",
|
||||
audioSources: [AudioWrapperAssetSource("audio/manual_announcements/wheelchairspace2.mp3")],
|
||||
),
|
||||
ManualAnnouncementEntry(
|
||||
InformationAnnouncementEntry(
|
||||
shortName: "Service Regulation",
|
||||
informationText: "Regulating service - please listen for further information",
|
||||
audioSources: [AudioWrapperAssetSource("audio/manual_announcements/serviceregulation.mp3")],
|
||||
),
|
||||
ManualAnnouncementEntry(
|
||||
InformationAnnouncementEntry(
|
||||
shortName: "Bus Ready To Depart",
|
||||
informationText: "This bus is ready to depart",
|
||||
audioSources: [AudioWrapperAssetSource("audio/manual_announcements/readytodepart.mp3")],
|
||||
@@ -403,7 +409,7 @@ class LiveInformation {
|
||||
for (models.Document doc in manual_q.documents) {
|
||||
int index = doc.data['ManualAnnouncementIndex'];
|
||||
|
||||
ManualAnnouncementEntry announcement_clone = ManualAnnouncementEntry(
|
||||
InformationAnnouncementEntry announcement_clone = InformationAnnouncementEntry(
|
||||
shortName: manualAnnouncements[index].shortName,
|
||||
informationText: manualAnnouncements[index].displayText,
|
||||
audioSources: manualAnnouncements[index].audioSources,
|
||||
@@ -496,4 +502,23 @@ class ManualAnnouncementEntry extends AnnouncementQueueEntry {
|
||||
);
|
||||
}
|
||||
|
||||
class InformationAnnouncementEntry extends AnnouncementQueueEntry {
|
||||
final String shortName;
|
||||
|
||||
InformationAnnouncementEntry({
|
||||
required this.shortName,
|
||||
required String informationText,
|
||||
required List<AudioWrapperSource> audioSources,
|
||||
DateTime? scheduledTime,
|
||||
DateTime? timestamp,
|
||||
bool sendToServer = true,
|
||||
}) : super(
|
||||
displayText: informationText,
|
||||
audioSources: audioSources,
|
||||
sendToServer: sendToServer,
|
||||
scheduledTime: scheduledTime,
|
||||
timestamp: timestamp,
|
||||
);
|
||||
}
|
||||
|
||||
var abs = (int value) => value < 0 ? -value : value;
|
||||
Reference in New Issue
Block a user