Pārlūkot izejas kodu

Added some config options.

Thomas Chef 3 gadi atpakaļ
vecāks
revīzija
f023362154

+ 51 - 13
JourneyGPSTracker/Base.lproj/Main.storyboard

@@ -43,70 +43,105 @@
                                 <nil key="highlightedColor"/>
                             </label>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="0" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gjP-2D-NvA">
-                                <rect key="frame" x="287" y="313" width="65" height="21"/>
+                                <rect key="frame" x="238" y="232" width="114" height="21"/>
                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="0" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yVZ-Xq-Fgc">
-                                <rect key="frame" x="287" y="333" width="65" height="21"/>
+                                <rect key="frame" x="238" y="261" width="114" height="21"/>
                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="-" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="EhI-Pa-ZNA" userLabel="LatestTSSent">
-                                <rect key="frame" x="166" y="451" width="186" height="21"/>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="No of received GPS Pos:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="mF0-kp-IPL">
+                                <rect key="frame" x="34" y="232" width="186" height="21"/>
                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="No of received GPS Pos:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="mF0-kp-IPL">
-                                <rect key="frame" x="34" y="313" width="186" height="21"/>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="0" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="236-lh-rpk" userLabel="horizSpeed">
+                                <rect key="frame" x="202" y="290" width="150" height="21"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <nil key="textColor"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Speed:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="twW-PH-Bpk">
+                                <rect key="frame" x="34" y="290" width="54" height="21"/>
                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="No of sent GPS Pos:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="r1m-0H-6gF">
-                                <rect key="frame" x="34" y="333" width="154" height="21"/>
+                                <rect key="frame" x="34" y="261" width="154" height="21"/>
                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Latest TS sent:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="y63-gU-mRJ">
-                                <rect key="frame" x="34" y="451" width="115" height="21"/>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Meters between updates:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="WJH-ue-Yvp">
+                                <rect key="frame" x="34" y="558" width="194" height="21"/>
                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="0" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TFS-6S-Reu" userLabel="Failed updates">
-                                <rect key="frame" x="287" y="430" width="65" height="21"/>
+                                <rect key="frame" x="251" y="352" width="101" height="21"/>
                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Failed back-end updates:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2C5-0g-27u">
-                                <rect key="frame" x="34" y="430" width="193" height="21"/>
+                                <rect key="frame" x="34" y="352" width="193" height="21"/>
                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="0" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6b2-O1-snA" userLabel="GPSAccuracy">
-                                <rect key="frame" x="287" y="401" width="65" height="21"/>
+                                <rect key="frame" x="166" y="323" width="186" height="21"/>
                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="GPS Accuracy:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ckm-NX-bEH" userLabel="GPS Accuracy">
-                                <rect key="frame" x="34" y="401" width="114" height="21"/>
+                                <rect key="frame" x="34" y="323" width="114" height="21"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <nil key="textColor"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <slider opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="5" minValue="1" maxValue="100" translatesAutoresizingMaskIntoConstraints="NO" id="Xtb-ln-Srd">
+                                <rect key="frame" x="32" y="523" width="322" height="30"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <connections>
+                                    <action selector="distSlider:" destination="BYZ-38-t0r" eventType="valueChanged" id="nhh-iy-6uZ"/>
+                                </connections>
+                            </slider>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="5" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="poU-2z-2LS" userLabel="LatestTSSent">
+                                <rect key="frame" x="166" y="557" width="186" height="21"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <nil key="textColor"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="-" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="EhI-Pa-ZNA" userLabel="LatestTSSent">
+                                <rect key="frame" x="157" y="381" width="195" height="21"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <nil key="textColor"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Latest TS sent:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="y63-gU-mRJ">
+                                <rect key="frame" x="34" y="381" width="115" height="21"/>
                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                 <nil key="textColor"/>
@@ -118,6 +153,9 @@
                     </view>
                     <connections>
                         <outlet property="GPSAccuracy" destination="6b2-O1-snA" id="mie-A9-k5e"/>
+                        <outlet property="distSliderUI" destination="Xtb-ln-Srd" id="IhX-Go-DWK"/>
+                        <outlet property="distUpdateMetersUI" destination="poU-2z-2LS" id="jrk-bH-WOj"/>
+                        <outlet property="horizSpeedLabelUI" destination="236-lh-rpk" id="q32-G0-cMS"/>
                         <outlet property="latestTSSent" destination="EhI-Pa-ZNA" id="aGH-ln-pi5"/>
                         <outlet property="noOfFailedUpdatesUI" destination="TFS-6S-Reu" id="60c-nc-uJ5"/>
                         <outlet property="noOfRxGPSPos" destination="gjP-2D-NvA" id="7hy-Mg-Vvj"/>

+ 14 - 5
JourneyGPSTracker/ViewController.swift

@@ -20,6 +20,9 @@ class ViewController: UIViewController {
     }
    
     
+    @IBOutlet weak var horizSpeedLabelUI: UILabel!
+    @IBOutlet weak var distSliderUI: UISlider!
+    @IBOutlet weak var distUpdateMetersUI: UILabel!
     @IBOutlet weak var GPSAccuracy: UILabel!
     @IBOutlet weak var noOfFailedUpdatesUI: UILabel!
     @IBOutlet weak var latestTSSent: UILabel!
@@ -47,15 +50,20 @@ class ViewController: UIViewController {
         locationManager?.delegate = self
         locationManager?.requestWhenInUseAuthorization()
         locationManager?.requestAlwaysAuthorization()
-        locationManager?.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
+        locationManager?.desiredAccuracy = kCLLocationAccuracyBest //kCLLocationAccuracyNearestTenMeters
         locationManager?.activityType = CLActivityType.otherNavigation
-        locationManager?.distanceFilter = 25.0
+        locationManager?.distanceFilter = CLLocationDistance(distSliderUI.value)
         locationManager?.allowsBackgroundLocationUpdates = true
         pauseSwitch.isEnabled = false
-        
+        distUpdateMetersUI.text = String(distSliderUI.value)+" m"
+    }
+    
+    @IBAction func distSlider(_ sender: UISlider) {
+        let currentValue = Int(sender.value)
+        distUpdateMetersUI.text = String(currentValue)+" m"
+        locationManager?.distanceFilter = CLLocationDistance(currentValue)
     }
     
-   
     
     // This timer is used to send data to the back-end server every 60 seconds
     // Data source is the core data DB
@@ -240,7 +248,8 @@ extension ViewController: CLLocationManagerDelegate {
         locations.forEach { (location) in
             //print("LocationManager horizontalAccuracy: \(location.horizontalAccuracy)")
             
-            GPSAccuracy.text = String(location.horizontalAccuracy)
+            GPSAccuracy.text = String(location.horizontalAccuracy)+" m"
+            horizSpeedLabelUI.text = String(format: "%.1f", location.speed * 3.6 ) + " km/h"
             
             let pos = NSManagedObject(entity: entity,insertInto: managedContext)
             pos.setValue(location.horizontalAccuracy, forKey: "horizAcc")