git remote add origin https://git.distreon.net/jack/RockloggerRepository.git
commit
de08a2268a
@ -0,0 +1,447 @@
|
|||||||
|
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~<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="28"/>~\n~<supports-screens android:largeScreens="true" ~\n~ android:normalScreens="true" ~\n~ android:smallScreens="true" ~\n~ android:anyDensity="true"/>)~\n~SetApplicationAttribute(android:label, "$LABEL$")~\n~CreateResourceFromFile(Macro, Themes.DarkTheme)~\n~~\n~AddApplicationText(~\n~<meta-data~\n~ android:name="com.google.android.geo.API_KEY"~\n~ android:value="AIzaSyBPqtpSYMEAfgvf-K7wF_L2TFOTUxeDwsA"/>~\n~)~\n~~\n~AddApplicationText(~\n~<uses-library~\n~ android:name="org.apache.http.legacy"~\n~ android:required="false" />~\n~ <meta-data android:name="com.google.android.gms.version"~\n~ android:value="@integer/google_play_services_version" />~\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~<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">~\n~ <background android:drawable="@mipmap/background"/>~\n~ <foreground android:drawable="@mipmap/foreground"/>~\n~</adaptive-icon>~\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
|
||||||
Loading…
Reference in new issue