var
Form1: TForm1;
WifiManager: JWifiManager;
WifiManagerObj: JObject;
mtError, mtInformation, mtConfirmation: System
.
UITypes
.
TMsgDlgType;
mbYes, mbNo, mbOK: System
.
UITypes
.
TMsgDlgBtn;
implementation
{$R *.fmx}
function
myMsgDlg(
const
AMessage:
string
;
const
ADialogType: TMsgDlgType;
const
AButtons: TMsgDlgButtons;
const
ADefaultButton: TMsgDlgBtn):
Integer
;
var
mr: TModalResult;
begin
mr:=mrNone;
TDialogService
.
MessageDialog(AMessage, ADialogType, AButtons,
ADefaultButton,
0
,
procedure
(
const
AResult: TModalResult)
begin
mr:=AResult
end
);
Result:=mr;
end
;
Function
TForm1
.
WiFiScan(search_ssid:
string
;
var
Founded: TStringList): TStringList;
var
{$IFDEF ANDROID}
ScanResult: JScanResult;
{
$ENDIF
}
ssid:
string
;
I:
Integer
;
begin
Result:= TStringList
.
Create;
TJWifiManager
.
Wrap(TAndroidHelper
.
Context
.
getSystemService(TJContext
.
JavaClass
.
WIFI_SERVICE));
WifiManagerObj:= TAndroidHelper
.
Context
.
getSystemService(TJContext
.
JavaClass
.
WIFI_SERVICE);
WifiManager:= TJWifiManager
.
Wrap((WifiManagerObj
as
ILocalObject).GetObjectID);
if
not
WifiManager
.
isWifiEnabled
then
if
myMsgDlg(
'Модуль WiFi в устройстве отключен.'
+
'Попытаться включить?'
, mtError, mbYesNo, mbYes) = mrYes
then
WifiManager
.
setWifiEnabled(
true
)
else
exit;
Sleep(
2000
);
for
I :=
0
to
WifiManager
.
getScanResults
.
size -
1
do
begin
ScanResult := TJScanResult
.
Wrap((WifiManager
.
getScanResults
.
get(I)
as
ILocalObject).GetObjectID);
ssid:= JStringToString(ScanResult
.
SSID);
Result
.
Add(ssid);
end
;
for
I :=
0
to
Result
.
Count -
1
do
if
Pos(search_ssid, Result
.
Strings[i]) >
0
then
Founded
.
Add(Result
.
Strings[i]);
end
;
Function
TForm1
.
WiFiConnect(SSIDtoConnect:
string
):
boolean
;
var
{$IFDEF ANDROID}
conf: JWifiConfiguration;
list: JList;
iter: JIterator;
{
$ENDIF
}
begin
Result:=
false
;
SSIDtoConnect:=
'"'
+SSIDtoConnect+
'"'
;
try
WifiManagerObj := TAndroidHelper
.
Context
.
getSystemService(TJContext
.
JavaClass
.
WIFI_SERVICE);
WifiManager := TJWifiManager
.
Wrap((WifiManagerObj
as
ILocalObject).GetObjectID);
conf:= TJWifiConfiguration
.
JavaClass
.
init;
conf
.
SSID:= StringToJString(SSIDtoConnect);
conf
.
allowedKeyManagement.&
set
(TJWifiConfiguration_KeyMgmt
.
JavaClass
.
NONE);
list:= wifiManager
.
getConfiguredNetworks;
WifiManager
.
addNetwork(conf);
iter := list
.
iterator;
while
iter
.
hasNext
do
Begin
conf := TJWifiConfiguration
.
Wrap((iter
.
next
as
ILocalObject).GetObjectID);
if
JStringToString(Conf
.
SSID) = SSIDtoConnect
then
Begin
wifiManager
.
disconnect;
wifiManager
.
enableNetwork(Conf
.
networkId,
true
);
Result:= wifiManager
.
reconnect;
End
;
End
;
except
on
E: Exception
do
ShowMessage(
'Произошла ошибка класса: '
+#
13
+#
10
+ E
.
ClassName +#
13
+#
10
+
'c сообщением: '
+#
13
+#
10
+ E
.
Message);
end
;
if
Result
then
ShowMessage(
'Подключение: связь с устройством'
+ #
10
+ #
13
+ SSIDtoConnect
+ #
10
+ #
13
+
' установлена.'
);
end
;
Function
TForm1
.
SendMsg(Msg:
string
):
string
;
begin
IdUDPClient1
.
Send(Msg, IndyTextEncoding(encIndyDefault));
Result:= IdUdpClient1
.
ReceiveString(
10
, IndyTextEncoding(encUTF8));
end
;