taler-ios

iOS apps for GNU Taler (wallet)
Log | Files | Refs | README | LICENSE

commit 8767f5abddd2f4eb7e8635c2907d71f1b1abc87f
parent a4faa7dd58d4a8080ee1cd002443f5d068fea301
Author: Marc Stibane <marc@taler.net>
Date:   Thu, 26 Oct 2023 01:00:13 +0200

Adjust volume for payment sounds

Diffstat:
MTalerWallet1/Helper/Controller+playSound.swift | 33++++++++++++++++++++++++++++-----
1 file changed, 28 insertions(+), 5 deletions(-)

diff --git a/TalerWallet1/Helper/Controller+playSound.swift b/TalerWallet1/Helper/Controller+playSound.swift @@ -10,13 +10,34 @@ extension Controller { /// 0 = failure, 1 = received, 2 = sent @MainActor func playSound(_ number: Int) { + let sysVolume = AVAudioSession.sharedInstance().outputVolume + let volume = sysVolume < 0.16 ? 2.5 // too bad we cannot make it louder + : sysVolume < 0.21 ? 1.5 // nope, doesn't work + : sysVolume < 0.26 ? 1.0 // this is full volume... + : sysVolume < 0.31 ? 0.9 // and +// : sysVolume < 0.36 ? + : sysVolume < 0.41 ? 0.8 // we +// : sysVolume < 0.46 ? + : sysVolume < 0.51 ? 0.7 // must + : sysVolume < 0.56 ? 0.6 // reduce +// : sysVolume < 0.61 ? + : sysVolume < 0.66 ? 0.5 // it, + : sysVolume < 0.71 ? 0.4 // or + : sysVolume < 0.76 ? 0.3 // it'll + : sysVolume < 0.81 ? 0.2 // play + : sysVolume < 0.86 ? 0.15 // way + : sysVolume < 0.91 ? 0.10 // too + : 0.07 // loud! +// logger.log("❗️sys:\(sysVolume) vol:\(volume)") + var soundID: SystemSoundID = 0 let notificationGenerator = useHaptics ? UINotificationFeedbackGenerator() : nil if number > 9 { soundID = UInt32(number) } else { let sound = (number == 0) ? "payment_failure" : - (number == 1) ? "payment_success" : "PaymentReceived" + (number == 1) ? "payment_success" + : "PaymentReceived" let fileURL = URL(fileURLWithPath: "/System/Library/Audio/UISounds/" + sound + ".caf") AudioServicesCreateSystemSoundID(fileURL as CFURL, &soundID) @@ -25,13 +46,14 @@ extension Controller { if number == 0 || number > 9 || playSounds < 0 { AudioServicesPlaySystemSound(soundID); } else if playSounds > 0 { - if let url = Bundle.main.url(forResource: (number == 1) ? "payment_received" - : "payment_sent", - withExtension: "m4a") { + if let url = Bundle.main.url(forResource: (number == 1) ? "payment_sent" + : "payment_received", + withExtension: "m4a") { player.removeAllItems() player.insert(AVPlayerItem(url: url), after: nil) - logger.log("\(url, privacy: .public) \(soundID)") + logger.log("\(url, privacy: .public)") player.play() + player.volume = Float(volume) } else { AudioServicesPlaySystemSound(soundID); } @@ -39,5 +61,6 @@ extension Controller { if let notificationGenerator { notificationGenerator.notificationOccurred(number == 0 ? .error : .success) } + } }