Using ConnectivityManager with C++Builder
With C++Builder 10.2 Tokyo Android
ConnectivityManager class is available.
Use the ConnectivityManager, you can get NetworkInfo.
NetworkInfo see various network information.
inside that, The getType()
function is Reports the type of network.
The getType()
function return is int.
int | type |
---|---|
0x00000000 | TYPE_MOBILE |
0x00000001 | TYPE_WIFI |
0x00000006 | TYPE_WIMAX |
0x00000009 | TYPE_ETHERNET |
0x00000007 | TYPE_BLUETOOTH |
I tried ways to get NetworkInfo.
Declare _di_JConnectivityManager
variable.
_di_JConnectivityManager
is the ConnectivityManager class interface.
_di_JConnectivityManager f_ConnectivityManager;
It creates to use '_di_JConnectivityManager'.
template <typename T1, typename T2> void __fastcall Tfm_main_wifistatus::getService(_di_JObject obj, T1& iobj) { if (obj != nullptr) { iobj = T2::Wrap(_di_ILocalObject(obj)->GetObjectID()); } } void __fastcall Tfm_main_wifistatus::FormCreate(TObject *Sender) { //Form creation.Using TAndroidHelper, get the CONNECTIVITY_SERVICE. getService<_di_JConnectivityManager, TJConnectivityManager>( TAndroidHelper::Context->getSystemService(TJContext::JavaClass->CONNECTIVITY_SERVICE), f_ConnectivityManager); }
Get the _di_JNetworkInfo
using the getActiveNetworkInfo()
function.
//TJConnectivityManager::JavaClass->TYPE_WIFI; #define TYPE_WIFI 0x00000001 //TJConnectivityManager::JavaClass->TYPE_MOBILE; #define TYPE_MOBILE 0x00000000 //TJConnectivityManager::JavaClass->TYPE_VPN; #define TYPE_VPN 0x00000011 //TJConnectivityManager::JavaClass->TYPE_WIMAX; #define TYPE_WIMAX 0x00000006 void __fastcall Tfm_main_wifistatus::Timer1Timer(TObject *Sender) { UnicodeString net_str; _di_JNetworkInfo n_info = f_ConnectivityManager->getActiveNetworkInfo(); if (n_info != nullptr) { switch (n_info->getType()) { case TYPE_WIFI: net_str = L"(TYPE_WIFI)"breakcase TYPE_MOBILE: net_str = L"(TYPE_MOBILE)"breakcase TYPE_VPN: net_str = L"(TYPE_VPN)"breakelse net_str = L"(nullptr)"You can get the status of a network interface.