diff --git a/Rocklogger.b4a b/Rocklogger.b4a deleted file mode 100644 index 4bac2b7..0000000 --- a/Rocklogger.b4a +++ /dev/null @@ -1,447 +0,0 @@ -Build1=Default,b4a.rocklogster -File1=mapfrag.bal -File2=marker1.png -File3=marker2.png -File4=overlay (1).png -File5=overlay.png -File6=overlaywhite.png -File7=Rockloggervisual.bal -FileGroup1=Default Group -FileGroup2=Default Group -FileGroup3=Default Group -FileGroup4=Default Group -FileGroup5=Default Group -FileGroup6=Default Group -FileGroup7=Default Group -Group=Default Group -Library1=core -Library2=gps -Library3=runtimepermissions -Library4=randomaccessfile -Library5=googlemaps -Library6=googlemapsextras -ManifestCode='This code will be applied to the manifest file during compilation.~\n~'You do not need to modify it in most cases.~\n~'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136~\n~AddManifestText(~\n~~\n~)~\n~SetApplicationAttribute(android:label, "$LABEL$")~\n~CreateResourceFromFile(Macro, Themes.DarkTheme)~\n~~\n~AddApplicationText(~\n~~\n~)~\n~~\n~AddApplicationText(~\n~~\n~ ~\n~)~\n~~\n~~\n~'End of default text.~\n~'broken icon manifest~\n~SetApplicationAttribute(android:icon, "@mipmap/ic_launcher")~\n~CreateResource(mipmap-anydpi-v26, ic_launcher.xml,~\n~~\n~ ~\n~ ~\n~~\n~)~\n~'CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~~\n~ -Module1=Mapmod -Module2=Starter -NumberOfFiles=7 -NumberOfLibraries=6 -NumberOfModules=2 -Version=9.9 -@EndOfDesignText@ -#Region Module Attributes - #FullScreen: False - #IncludeTitle: True - #ApplicationLabel: RockLogster - #VersionCode: 1 - #VersionName: - #SupportedOrientations: unspecified -#End Region -#BridgeLogger: true -Sub Process_Globals - Public updateclick As Boolean - Public RockList As List - Public WeedList As List - Public PointList As List - Dim headerlist As List - Public locationstringlist As List - Public headerposition As Map - -End Sub - -'Correct the log syntax -'add menu item to clear log -'add comment to last log -'highlight last log -'more buttons - -Sub Globals - - - Dim locationstrings() As String - Dim headerstringget As Matcher - - Type LoggedEntry (Date As String, Lat As Double, Lot As Double, obstacle As String, comment As String) - Private lblLon As LoggedEntry - Public lblpnlrock As Label - Dim lblSpeed As Label - Dim lblSatellites As Label - Private btnRock As Button - Private btnWeed As Button - Private editxt As EditText - Private lblSatIndicator As Label - Private STime As Double - Private SLong As String - Private SLat As String - Private BtnDownTime As Double - Private BtnUpTime As Double - Public FLong As String - Public FLat As String - Public FTime As Double - - Public FileStringBuilder As StringBuilder - Public EstimatorStringBuilder As StringBuilder - Public FileString As String - Private FileList As List - Public DelayedSat As Boolean - Public lbl2secwarn As Label - Public EstimatorString As String - Private pnlrock As Panel - Private lblpnlpoint As Label - Private lblpnlweed As Label - Private rp As RuntimePermissions - Dim cust2 As LoggedEntry - Dim raf2 As B4XSerializator - Dim cust2list As List - Private printbut As Button - Private savebut As Button - - Private ButDownTime As Long - Private ButUpTime As Long - Private LocDown As Location - Private LocUp As Location - Public ELong As Double - Public ELat As Double - - - - Public paneldowncomplete As Boolean - - Private butviewmap As Button - Private lblpnlcust As Label -End Sub - -Sub Activity_Create(FirstTime As Boolean) - Activity.LoadLayout("Rockloggervisual") - Activity.AddMenuItem("Clear Log", "Clearlog") - FileStringBuilder.Initialize - EstimatorStringBuilder.Initialize - FileList.Initialize - RockList.Initialize - WeedList.Initialize - PointList.Initialize - - 'cust2.Initialize - 'cust2list.Initialize - rp.CheckAndRequest(rp.PERMISSION_WRITE_EXTERNAL_STORAGE) - rp.CheckAndRequest(rp.PERMISSION_READ_EXTERNAL_STORAGE) - If File.Exists(rp.GetSafeDirdefaultExternal(""), "Editxt.txt") Then - editxt.text = File.Readstring(rp.GetSafeDirDefaultExternal(""), "editxt.txt") -' End If -' If File.Exists(rp.GetSafeDirdefaultExternal(""), "Weedlist.txt") Then -' WeedList = File.ReadList(rp.GetSafeDirDefaultExternal(""), "Weedlist.txt") -' End If -' If File.Exists(rp.GetSafeDirdefaultExternal(""), "Pointlist.txt") Then -' PointList = File.ReadList(rp.GetSafeDirDefaultExternal(""), "Pointlist.txt") - End If - convert_texttolists -End Sub - -Sub Print_rocks - - Private sb As StringBuilder - sb.Initialize - sb.append(DateTime.Date(DateTime.Now))'.Append(CRLF) - - If headerlist.Size >0 Then -' If updateclick = False Then - For i = 0 To headerlist.Size - 1 - sb.Append(CRLF).Append(headerlist.get(i))'.Append(CRLF) - sb.Append(CRLF).Append(locationstringlist.get(i+1))'.Append(CRLF) - 'Log(sb.ToString) - Next -' Else -' For i = 0 To headerlist.Size - 1 -' sb.Append(headerlist.get(i)) -' sb.Append(locationstringlist.get(i+1))'.Append(CRLF) -' 'Log(sb.ToString) -' Log("trueb") -' Next -' End If - End If - updateclick = False 'flag - editxt.Text = (sb.ToString) -End Sub - -Sub convert_texttolists - - headerposition.Initialize - headerlist.Initialize - headerstringget = Regex.matcher2("^\D+$",Regex.MULTILINE, editxt.text)'use this to break loaded textedit file into strings or when textedit text is changed - Do While headerstringget.Find = True - headerlist.Add(headerstringget.Match) - headerposition.Put(headerstringget.Match,headerlist.Size) - - Log($"headerstringsize${headerlist.size}"$) - Loop - For i = 0 To headerlist.Size-1 - Log(headerlist.Get(i)) - Next - locationstringlist.Initialize - - locationstrings = Regex.Split2("\n^\D+$\n",Regex.MULTILINE, editxt.text)'/n to split around the newline, and not include it in the string - For i=0 To locationstrings.Length - 1 - locationstringlist.Add(locationstrings(i)) - Next - - Log($"Splitted Size: ${locationstrings.Length} "$) -' For i= 0 To teststring.Length-1 -' Log($"Val #${i}=${teststring(i)}"$) -' Next - -' For Each k As String In headerposition.Keys -' Log($"k${k}"$) -' Log($"Positionk${headerposition.Get(k)}"$) -' Next - -' Private sb As StringBuilder -' sb.Initialize -' sb.append(DateTime.Date(DateTime.Now)).Append(CRLF) -' For i = 0 To headerlist.Size - 1 -' sb.Append(headerlist.get(i)).Append(CRLF) -' sb.Append(locationstrings(i+1)).Append(CRLF) -' Next -'Log(sb.ToString) - Print_rocks - -End Sub - -Sub Clearlog_Click - 'cust2list.Clear - locationstringlist.Clear - headerlist.Clear - headerposition.clear - - FileList.Clear - FileString = "" - editxt.Text = "" - EstimatorString = "" - FileStringBuilder.Initialize - RockList.Clear - WeedList.Clear - PointList.Clear - Log ("Clear") -convert_texttolists -End Sub - -Sub Activity_Resume - If Starter.GPS1.GPSEnabled = False Then - ToastMessageShow("Please enable the GPS device.", True) - StartActivity(Starter.GPS1.LocationSettingsIntent) 'Will open the relevant settings screen. - Else - Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_ACCESS_FINE_LOCATION) - Wait For Activity_PermissionResult (Permission As String, Result As Boolean) - If Result Then CallSubDelayed(Starter, "StartGPS") - End If -End Sub - - -Sub Activity_Pause (UserClosed As Boolean) - File.WriteList(rp.GetSafeDirDefaultExternal(""), "Rocklist.txt", RockList) - File.WriteList(rp.GetSafeDirDefaultExternal(""), "Weedlist.txt", WeedList) - File.WriteList(rp.GetSafeDirDefaultExternal(""), "Pointlist.txt", PointList) - File.WriteString(rp.GetSafeDirDefaultExternal(""), "editext.txt", editxt.text) - Log("writelists") - CallSubDelayed(Starter, "StopGPS") - 'File.WriteList(File.DirRootExternal, "LogRocks.txt", FileList) - 'File.WriteBytes(File.DirInternal, "List", raf2.ConvertObjectToBytes(cust2list)) - 'Log("listsave") -End Sub - -Public Sub GpsStatus (Satellites As List) - 'Dim sb As StringBuilder - 'sb.Initialize - 'sb.Append("Satellites:").Append(CRLF) - 'For i = 0 To Satellites.Size - 1 - ' Dim Satellite As GPSSatellite = Satellites.Get(i) - ' sb.Append(CRLF).Append(Satellite.Prn).Append($" $1.2{Satellite.Snr}"$).Append(" ").Append(Satellite.UsedInFix) - ' sb.Append(" ").Append($" $1.2{Satellite.Azimuth}"$).Append($" $1.2{Satellite.Elevation}"$) - 'Next - 'lblSatellites.Text = sb.ToString - 'lblSatIndicator.Color = 0xff7fff00 -End Sub -Public Sub LocationChanged(Location1 As Location) - 'lblLat.Text = "Lat = " & Location1.ConvertToMinutes(Location1.Latitude) - 'lblLon.Text = "Lon = " & Location1.ConvertToMinutes(Location1.Longitude) - 'lblSpeed.Text = $"Speed = $1.2{Location1.Speed} m/s "$ - lblSatIndicator.Color = 0xff7fff00 -End Sub -Sub pnlrock_touch(ACTION As Int,X As Float,Y As Float) - Select ACTION - Case Activity.ACTION_DOWN - lblpnlrock.Color = 0xFFDEB887 - Panel_down - - - Case Activity.ACTION_UP - lblpnlrock.Color = 0xFFFFEBCD - Panel_up("Rocks") - - Case Activity.ACTION_MOVE - - End Select -End Sub -Sub Panel_down - ButDownTime = DateTime.Now - paneldowncomplete = False - Do While Starter.ValidGPS = False - Sleep (100) - Loop - 'STime = DateTime.Now - LocDown = Starter.Location2 - paneldowncomplete = True - 'SLong = Starter.Location2.Longitude - 'checks for valid gps - 'logs lat and long and time -End Sub -Sub Panel_up(obstacle As String) - ButUpTime = DateTime.Now - Log("panelup") - Do While Starter.ValidGPS = False Or paneldowncomplete = False - Sleep (200) - Loop - If (ButUpTime - LocDown.Time < 2000) And (ButUpTime - ButDownTime >500) Then - lbl2secwarn.Visible = True - Sleep (2000) - lbl2secwarn.Visible = False - - End If - LocUp = Starter.Location2 - Estimator(obstacle) -End Sub - -Sub Estimator(obstacle As String) - DateTime.DateFormat = ("dd/MM/yyyy") -If (LocDown.Time = LocUp.Time) Then - ELat = LocUp.Latitude - ELong = LocUp.Longitude -Else - ELat =LocDown.Latitude - (LocDown.Latitude - LocUp.Latitude)*(LocDown.Time - 2*ButDownTime + ButUpTime)/(LocDown.Time - LocUp.Time) - ELong = (LocDown.Longitude - LocUp.Longitude)*(2*ButDownTime-LocUp.Time-ButUpTime)/(LocDown.Time - LocUp.Time)+LocUp.longitude -End If -Log(ELong) -Log(obstacle) - Log(headerposition.Get(obstacle)) - Log(headerposition.ContainsKey(obstacle)) - 'origional calculationELat = FLat + (BtnDownTime-FTime)*(SLat - FLat)/(STime - FTime) - 'ELong = FLong + (BtnDownTime-FTime)*(SLong - FLong)/(STime - FTime) -Dim sb2 As StringBuilder - sb2.Initialize -If headerposition.ContainsKey(obstacle) = False Then - Log("false") - headerlist.Add(obstacle) - headerposition.Put(obstacle,headerlist.Size) - sb2.Append($",$2.6{ELat} $2.6{ELong},"$) - locationstringlist.Add(sb2.tostring) - 'locationstringlist.get(1)="e" -Else - Log("true") - sb2.Append(locationstringlist.get(headerposition.Get(obstacle))).Append($",$2.6{ELat} $2.6{ELong},"$) - locationstringlist.InsertAt(headerposition.Get(obstacle),sb2.tostring) - locationstringlist.RemoveAt(headerposition.Get(obstacle)+1) -End If - -'If obstacle = "Rock" Then -' If RockList.Size = 0 Then -' RockList.Add("Rocks") -' End If -' RockList.Add($",$2.6{ELat} $2.6{ELong},"$) -'Else If obstacle = "Weed" Then -' If WeedList.Size = 0 Then -' WeedList.Add("Weeds") -' End If -' WeedList.Add($",$2.6{ELat} $2.6{ELong},"$) -'Else If obstacle = "Point" Then -' If PointList.Size = 0 Then -' PointList.Add("Points") -' End If -' PointList.Add($",$2.6{ELat} $2.6{ELong},"$) -'End If -Print_rocks -End Sub - - -Sub pnlweed_Touch (Action As Int, X As Float, Y As Float) - Select Action - Case Activity.ACTION_DOWN - lblpnlweed.Color = 0xFF61c800 - Panel_down - - Case Activity.ACTION_UP - lblpnlweed.Color = 0xFF7cfc00 - '_up - Panel_up("Weed") - - Case Activity.ACTION_MOVE - - End Select -End Sub - -Sub pnlpoint_Touch (Action As Int, X As Float, Y As Float) - Select Action - Case Activity.ACTION_DOWN - lblpnlpoint.Color = 0xFF68320d - Panel_down - - Case Activity.ACTION_UP - lblpnlpoint.Color = 0xff8b4513 - '_up - Panel_up("Point") - - Case Activity.ACTION_MOVE - - End Select -End Sub - -Sub savebut_Click - If File.Exists(rp.GetSafeDirdefaultExternal(""), "Editxt.txt") Then - editxt.text = File.Readstring(rp.GetSafeDirDefaultExternal(""), "editxt.txt") - End If - convert_texttolists -End Sub - -Sub printbut_Click -editxt.RequestFocus -editxt.SelectAll - -End Sub - -Sub butviewmap_click - StartActivity(Mapmod) -End Sub - -'Sub Editxt_TextChanged(Old As String,New As String) - -'End Sub - -Sub Updatebtn_Click - 'updateclick=True 'used to prevent double new lines in string - convert_texttolists - - 'Log(headerlist.Size) - 'Log(locationstringlist) -End Sub - -Sub pnlcust_Touch (Action As Int, X As Float, Y As Float) - Select Action - Case Activity.ACTION_DOWN - 'lblpnlpoint.Color = 0xFF68320d - Panel_down - For i = 0 To headerlist.Size - 1 - If headerlist.Get(i) <> "Rocks" Then - If headerlist.Get(i) <> "Weed" Then - If headerlist.Get(i) <> "Point" Then - lblpnlcust.Text = headerlist.Get(i) - Exit - End If - End If - End If - Next - Case Activity.ACTION_UP - 'lblpnlpoint.Color = 0xff8b4513 - '_up - Panel_up(lblpnlcust.text) - - Case Activity.ACTION_MOVE - - End Select -End Sub \ No newline at end of file