Hi to all...i need to scan the all wifi around me at the moment and know the ssid.
I test the MLwifi library:
https://www.b4x.com/android/help/mlwifi.html
but the wifi_ScanDone not triggered...why?
it necessary or possible to set a time limit to scan?
this is my code...thank you
I test the MLwifi library:
https://www.b4x.com/android/help/mlwifi.html
but the wifi_ScanDone not triggered...why?
it necessary or possible to set a time limit to scan?
this is my code...thank you
B4X:
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
Dim myMLWifiObject As MLwifi
Dim myMLScan As MLScan
Dim rp As RuntimePermissions
Type SSIDentry (SSID As String, BSSID As String, Index As String)
End Sub
Sub Globals
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.
Private ListView1 As ListView
End Sub
Sub Activity_Create(FirstTime As Boolean)
'Do not forget to load the layout file created with the visual designer. For example:
Activity.LoadLayout("main")
If FirstTime Then
Dim numberOfValidPermissions As Int = 0
rp.CheckAndRequest(rp.PERMISSION_ACCESS_FINE_LOCATION)
wait for Activity_PermissionResult (Permission As String, Result As Boolean)
If Result Then
' Fine location permission OK
numberOfValidPermissions = numberOfValidPermissions +1
End If
rp.CheckAndRequest(rp.PERMISSION_ACCESS_COARSE_LOCATION)
wait for Activity_PermissionResult (Permission As String, Result As Boolean)
If Result Then
' COARSE location permission OK
numberOfValidPermissions = numberOfValidPermissions + 1
End If
If numberOfValidPermissions = 2 Then
Log(" ")
Log("Doing the Scan...")
myMLScan.startscan("wifi",False)
Else
Log("Permission not set")
End If
End If
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub wifi_ScanDone(Results() As String, Count As Int)
Dim record As SSIDentry
record.initialize
Dim ListForList As List
ListForList.Initialize
Dim listofNetworks As List
listofNetworks = myMLScan.listSavedNetworks
Dim returnedEntry() As String
For i = 0 To listofNetworks.Size-1
returnedEntry = Regex.Split(",",listofNetworks.Get(i))
record.ssid = returnedEntry(0).SubString2(1,returnedEntry(0).Length-1) 'Remove the quotes
record.bssid = returnedEntry(1)
record.index = returnedEntry(2)
ListView1.AddTwoLines2(record.SSID,record.Index,record.SSID)
Next
End Sub
Sub ListView1_ItemClick (Position As Int, Value As Object)
Private connectionStart As Long = DateTime.Now
Private connectionTimeOut As Long = 30000
Dim selectedSSID As String
selectedSSID = Value
ToastMessageShow(selectedSSID,False)
myMLWifiObject.disconnectWifiAP
connectionStart = DateTime.Now
Do Until myMLWifiObject.isWifiConnected = False
Log("Waiting for Disconnect..." & (DateTime.Now - (connectionStart + connectionTimeOut)))
Sleep(0)
If DateTime.Now > connectionStart + connectionTimeOut Then
Log("DISCONNECT FAILED")
Return
End If
Loop
Log("Call to connect to " & selectedSSID & " returned " & myMLWifiObject.connectWifiAP(selectedSSID))
Log("The current SSID is " & myMLWifiObject.WifiSSID)
connectionStart = DateTime.Now
Do Until myMLWifiObject.isWifiConnected
Log("Waiting for MLWifi to connect..." & (DateTime.Now - (connectionStart + connectionTimeOut)))
Sleep(0)
If DateTime.Now > connectionStart + connectionTimeOut Then
Log("CONNECTION FAILED")
Log("Now MLwifi is connected to " & myMLWifiObject.WifiSSID)
Return
End If
Loop
Log("Managed to connect to " & myMLWifiObject.WifiSSID)
Log("Asked to connect to " & selectedSSID)
If myMLWifiObject.WifiSSID <> selectedSSID Then
Log("Wrong SSID!!!")
Else
Log("Correct SSID - hurrah")
End If
ToastMessageShow(myMLWifiObject.ActiveNetworkTypeName,False)
End Sub