Files
jamshalat-masjid-screen/lib/data/services/sound_service.dart

47 lines
1.2 KiB
Dart

import 'package:audioplayers/audioplayers.dart';
import 'package:flutter/foundation.dart';
class SoundService {
SoundService._();
static final instance = SoundService._();
late AudioPlayer _player;
bool _initialized = false;
void init() {
if (_initialized) return;
_player = AudioPlayer();
// Pre-cache sounds by setting sources but not playing immediately if desired,
// though AudioCache is handled implicitly in newer audioplayers.
_player.setReleaseMode(ReleaseMode.stop);
_initialized = true;
}
Future<void> playAdzanBeep() async {
try {
if (!_initialized) init();
// Plays a single beep exactly when Adzan time hits
await _player.play(AssetSource('sounds/beep.mp3'));
} catch (e) {
debugPrint('[SoundService] Error playing adzan beep: $e');
}
}
Future<void> playIqomahCountdown() async {
try {
if (!_initialized) init();
// Plays the 3-beep countdown for the last 3 seconds of Iqamah
await _player.play(AssetSource('sounds/3-detik-countdown.mp3'));
} catch (e) {
debugPrint('[SoundService] Error playing iqomah countdown: $e');
}
}
void dispose() {
if (_initialized) {
_player.dispose();
_initialized = false;
}
}
}