Manos Chorianopoulos

locationServices enable request fix

...@@ -116,32 +116,41 @@ import CoreMotion ...@@ -116,32 +116,41 @@ import CoreMotion
116 // MARK: Actions 116 // MARK: Actions
117 117
118 @IBAction private func tripButtonTapped(_ sender: UIButton) { 118 @IBAction private func tripButtonTapped(_ sender: UIButton) {
119 - if (mIsTripStarted == true) { 119 + DispatchQueue.global().async {
120 + if (!self.locationServicesIsEnabled()) {
121 + self.onLocationServicesIsDisabled();
122 + return;
123 + }
124 +
125 + DispatchQueue.main.async {
126 + if (self.mIsTripStarted == true) {
120 // Stop trip 127 // Stop trip
121 - stopTrip() 128 + self.stopTrip()
122 129
123 } else { 130 } else {
124 // Start trip 131 // Start trip
125 - if let limitText = accelerationLimitTextField.text, limitText.isEmpty { 132 + if let limitText = self.accelerationLimitTextField.text, limitText.isEmpty {
126 // Handle empty limit field 133 // Handle empty limit field
127 return 134 return
128 } 135 }
129 136
130 // Disable UI elements 137 // Disable UI elements
131 - accelerationLimitTextField.isEnabled = false 138 + self.accelerationLimitTextField.isEnabled = false
132 - sampleTimeTextField.isEnabled = false 139 + self.sampleTimeTextField.isEnabled = false
133 140
134 // Start location and sensor updates 141 // Start location and sensor updates
135 - requestLocationUpdates() 142 + self.requestLocationUpdates()
136 -// registerSensor() 143 + // registerSensor()
137 144
138 - mIsTripStarted = true 145 + self.mIsTripStarted = true
139 - orientationCountLabel.text = "0" 146 + self.orientationCountLabel.text = "0"
140 - touchCountLabel.text = "0" 147 + self.touchCountLabel.text = "0"
141 - tripButton.setTitle("Stop Trip", for: .normal) 148 + self.tripButton.setTitle("Stop Trip", for: .normal)
142 - mStartTimestamp = String(Int(Date().timeIntervalSince1970 * 1000)) // time in milliseconds since January 1, 1970 149 + self.mStartTimestamp = String(Int(Date().timeIntervalSince1970 * 1000)) // time in milliseconds since January 1, 1970
143 - initializeOrientation() 150 + self.initializeOrientation()
144 - startTimer() 151 + self.startTimer()
152 + }
153 + }
145 } 154 }
146 } 155 }
147 156
...@@ -289,21 +298,25 @@ import CoreMotion ...@@ -289,21 +298,25 @@ import CoreMotion
289 } 298 }
290 299
291 private func requestLocationUpdates() { 300 private func requestLocationUpdates() {
301 + DispatchQueue.global().async {
292 if CLLocationManager.locationServicesEnabled() { 302 if CLLocationManager.locationServicesEnabled() {
293 - locationManager.desiredAccuracy = kCLLocationAccuracyBest 303 + self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
294 -// locationManager.requestLocation() 304 + // locationManager.requestLocation()
295 305
296 - if (!locationServicesIsEnabled()) { 306 + if (!self.locationServicesIsEnabled()) {
297 - onLocationServicesIsDisabled(); 307 + self.onLocationServicesIsDisabled();
298 } 308 }
299 - else if (authorizationStatusIsDenied(status: CLLocationManager.authorizationStatus())) { 309 + else if (self.authorizationStatusIsDenied(status: CLLocationManager.authorizationStatus())) {
300 - onAuthorizationStatusIsDenied(); 310 + self.onAuthorizationStatusIsDenied();
301 } 311 }
302 - else if (authorizationStatusNeedRequest(status: CLLocationManager.authorizationStatus())) { 312 + else if (self.authorizationStatusNeedRequest(status: CLLocationManager.authorizationStatus())) {
303 - onAuthorizationStatusNeedRequest(); 313 + self.onAuthorizationStatusNeedRequest();
304 } 314 }
305 - else if (authorizationStatusIsGranted(status: CLLocationManager.authorizationStatus())) { 315 + else if (self.authorizationStatusIsGranted(status: CLLocationManager.authorizationStatus())) {
306 - onAuthorizationStatusIsGranted(); 316 + self.onAuthorizationStatusIsGranted();
317 + }
318 + } else {
319 + self.onLocationServicesIsDisabled();
307 } 320 }
308 } 321 }
309 } 322 }
......