Sfoglia il codice sorgente

Merge pull request #184 from bjorkert/speak_bg

speakbg
Marion Barker 3 anni fa
parent
commit
48ad6fbfbd

+ 18 - 7
LoopFollow/Controllers/Alarms.swift

@@ -848,13 +848,24 @@ extension MainViewController {
     }
     
     
-    func speakBG(sgv: Int) {
-           var speechSynthesizer = AVSpeechSynthesizer()
-           var speechUtterance: AVSpeechUtterance = AVSpeechUtterance(string: "Current BG is " + bgUnits.toDisplayUnits(String(sgv)))
-           speechUtterance.rate = AVSpeechUtteranceMaximumSpeechRate / 2
-           speechUtterance.voice = AVSpeechSynthesisVoice(language: "en-US")
-           speechSynthesizer.speak(speechUtterance)
-       }
+    func speakBG(currentValue: Int, previousValue: Int) {
+        let bloodGlucoseDifference = currentValue - previousValue
+        let negligibleThreshold = 3
+        let differenceText: String
+
+        if abs(bloodGlucoseDifference) <= negligibleThreshold {
+            differenceText = "stable"
+        } else {
+            let direction = bloodGlucoseDifference < 0 ? "down" : "up"
+            let absoluteDifference = bgUnits.toDisplayUnits(String(abs(bloodGlucoseDifference)))
+            differenceText = "\(direction) \(absoluteDifference)"
+        }
+
+        let announcementText = "Current BG is \(bgUnits.toDisplayUnits(String(currentValue))), and it is \(differenceText)"
+        let speechUtterance = AVSpeechUtterance(string: announcementText)
+        speechUtterance.voice = AVSpeechSynthesisVoice(language: "en-US")
+        speechSynthesizer.speak(speechUtterance)
+    }
     
     func isOnPhoneCall() -> Bool {
         /*

+ 4 - 7
LoopFollow/Controllers/NightScout.swift

@@ -271,6 +271,10 @@ extension MainViewController {
                 self.startBGTimer(time: 300 - secondsAgo + Double(UserDefaultsRepository.bgUpdateDelay.value))
                 let timerVal = 310 - secondsAgo
                 print("##### started 5:10 bg timer: \(timerVal)")
+                self.updateBadge(val: data[0].sgv)
+                if UserDefaultsRepository.speakBG.value {
+                    self.speakBG(currentValue: data[0].sgv, previousValue: data[1].sgv)
+                }
             }
         }
         
@@ -281,12 +285,6 @@ extension MainViewController {
             bgData.removeFirst()
             
         } else {
-            if data.count > 0 {
-                self.updateBadge(val: data[data.count - 1].sgv)
-                if UserDefaultsRepository.speakBG.value {
-                    speakBG(sgv: data[data.count - 1].sgv)
-                }
-            }
             return
         }
         
@@ -361,7 +359,6 @@ extension MainViewController {
                 snoozerDelta = "+" + bgUnits.toDisplayUnits(String(deltaBG))
                 self.latestDeltaString = "+" + String(deltaBG)
             }
-            self.updateBadge(val: latestBG)
             
             // Snoozer Display
             guard let snoozer = self.tabBarController!.viewControllers?[2] as? SnoozeViewController else { return }

+ 2 - 1
LoopFollow/ViewControllers/MainViewController.swift

@@ -37,7 +37,8 @@ class MainViewController: UIViewController, UITableViewDataSource, ChartViewDele
     @IBOutlet weak var statsView: UIView!
     @IBOutlet weak var smallGraphHeightConstraint: NSLayoutConstraint!
     
-      
+    let speechSynthesizer = AVSpeechSynthesizer()
+
     // Data Table class
     class infoData {
         public var name: String