Код:
function TfMain.CheckMobileInternetSpeed: String;
var
mTelephonyManagerObj: JObject;
mTelephonyManager: JTelephonyManager;
mNetworkType: Integer;
ReturnValue: string;
begin
mTelephonyManagerObj := SharedActivityContext.getSystemService(TJContext.JavaClass.TELEPHONY_SERVICE);
mTelephonyManager := TJTelephonyManager.Wrap((mTelephonyManagerObj as ILocalObject).GetObjectID);
mNetworkType := mTelephonyManager.getNetworkType();
with TJTelephonyManager.JavaClass do
begin
if mNetworkType = NETWORK_TYPE_UMTS then ReturnValue := 'GPRS'
else if mNetworkType = NETWORK_TYPE_UMTS then ReturnValue := 'EDGE'
else if mNetworkType = NETWORK_TYPE_UMTS then ReturnValue := 'CDMA'
else if mNetworkType = NETWORK_TYPE_UMTS then ReturnValue := '1xRTT'
else if mNetworkType = NETWORK_TYPE_UMTS then ReturnValue := 'IDEN'
else if mNetworkType = NETWORK_TYPE_UMTS then ReturnValue := 'UMTS'
else if mNetworkType = NETWORK_TYPE_EVDO_0 then ReturnValue := 'EVDO_0'
else if mNetworkType = NETWORK_TYPE_EVDO_A then ReturnValue := 'EVDO_A'
else if mNetworkType = NETWORK_TYPE_HSDPA then ReturnValue := 'HSDPA'
else if mNetworkType = NETWORK_TYPE_HSUPA then ReturnValue := 'HSUPA'
else if mNetworkType = NETWORK_TYPE_HSPA then ReturnValue := 'HSPA'
else if mNetworkType = NETWORK_TYPE_EVDO_B then ReturnValue := 'EVDO_B'
else if mNetworkType = NETWORK_TYPE_EHRPD then ReturnValue := 'EHRPD'
else if mNetworkType = NETWORK_TYPE_HSPAP then ReturnValue := 'HSPAP'
else if mNetworkType = NETWORK_TYPE_LTE then ReturnValue := 'LTE';
end;
Result := ReturnValue;
end;
Советую почитать, насчёт того, какие буквы используются чтоб отобразить уровень сигнала на андроиде (G, E, H, H+ и т.д.)
П.с. учтите, что это уровень сигнала а не скорость подключения.