Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Delphi Firemonkey Local İp Adresi Öğrenme
#1
Wifiden bağlanınca local ip adresini bulmak için baya bi ter döktüm. Başka bir Müslüman arkadaşa lazım olur anlayışıyla paylaşıyorum


Type Bölümüne Eklenecek Kodlar


type
  JWifiManagerClass = interface(JObjectClass)
 ['{69F35EA7-3EB9-48AA-B7FC-4FFD0E7D712F}']
   function _GetACTION_PICK_WIFI_NETWORK: JString;
   function _GetEXTRA_WIFI_INFO: JString;
   function _GetWIFI_STATE_CHANGED_ACTION: JString;
   property ACTION_PICK_WIFI_NETWORK: JString read _GetACTION_PICK_WIFI_NETWORK;
   property EXTRA_WIFI_INFO: JString read _GetEXTRA_WIFI_INFO;
   property WIFI_STATE_CHANGED_ACTION: JString read _GetWIFI_STATE_CHANGED_ACTION;
 end;

 [JavaSignature('android/net/wifi/WifiInfo')]
 JWifiInfo = interface(JObject)
 ['{4F09E865-DB04-4E64-8C81-AEFB36DABC45}']
   function getBSSID:jString; cdecl;
   function getHiddenSSID:Boolean; cdecl;
   function getIpAddress:Integer; cdecl;
   function getLinkSpeed:integer; cdecl;
   function getMacAddress:JString; cdecl;
   function getNetworkId:integer; cdecl;
   function getRssi:integer; cdecl;
   function GetSSID:jString; cdecl;
 end;

 JWifiInfoClass = interface(JObjectClass)
 ['{2B1CE79F-DE4A-40D9-BB2E-7F9F118D8C08}']
   function _GetLINK_SPEED_UNITS:JString;
   property LINK_SPEED_UNITS: JString read _GetLINK_SPEED_UNITS;
 end;

 TJWifiInfo= class(TJavaGenericImport<JWifiInfoClass, JWifiInfo>) end;

 [JavaSignature('android/net/wifi/WifiManager')]
 JWifiManager = interface(JObject)
 ['{DA7107B9-1FAD-4A9E-AA09-8D5B84614E60}']
   function isWifiEnabled:Boolean;cdecl;
   function setWifiEnabled(enabled:Boolean):Boolean; cdecl;
   function getConnectionInfo :JWifiInfo; cdecl;
   function getWifiState :Integer; cdecl;
   function disconnect :Boolean; cdecl;
 end;

 TJWifiManager = class(TJavaGenericImport<JWifiManagerClass, JWifiManager>) end;

Function Olarak eklenecek kodlar


function GetWiFiManager: JWifiManager;
var ConnectivityServiceNative: JObject;
begin
 ConnectivityServiceNative := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.WIFI_SERVICE);
 if not Assigned(ConnectivityServiceNative) then
   raise Exception.Create('Could not locate Connectivity Service');
 Result := TJWifiManager.Wrap(
   (ConnectivityServiceNative as ILocalObject).GetObjectID);
 if not Assigned(Result) then
   raise Exception.Create('Could not access Connectivity Manager');
end;
function GetIPAddress: string;
var // Access WiFi State ENABLE olmalı...
 WifiManagerObj: JObject;
 WifiManager: JWifiManager;
 Ip : Integer;
begin
 WifiManagerObj := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.WIFI_SERVICE);
 WifiManager    := TJWifiManager.Wrap((WifiManagerObj as ILocalObject).GetObjectID);
 Ip             := WiFiManager.getConnectionInfo.getIpAddress;
 Result :=  Format('%d.%d.%d.%d', [ ip and $FF, (ip shr 8) and $FF, (ip shr 16) and $FF, (ip shr 24) ]);
end;


Kullanımı : 

label1.Text:=GetIPAddress;
Cevapla
#2
paylaşım için teşekkürler, konu ile ilgili şöyle bir kütüphane var (https://github.com/rzaripov1990/FMX.DeviceInfo)

cihazın işletim sistemi, sürümü, ekran boyutu, yerel ip adresi, mac adresi vs gibi bilgileri kolayca öğrenebilirsiniz.

Information
TmyDeviceInfo = record
   diPlatform: string;
   diPlatformT: TOSVersion.TPlatform;
   diArchitecture: string;
   diArchitecture2: string;
   diArchitectureT: TOSVersion.TArchitecture;
   diMacAddress: string;
   diIPAddress: string;
   diPlatformVer: string;
   diDevice: string;
   diLang: string;
   diScreenPhis: string;
   diScreenLogic: string;
   diScreenWidth: Single;
   diScreenHeight: Single;
   diScale: Single;
   diMobileOperator: string;
   diTimeZone: integer;
   diIsIntel: Boolean;
 end;


Functions

function IsNetConnected: Boolean; - check Internet connection [ANDROID, WINDOWS]
function IsNetConnectionType: TmyConnectionType; - internet connection type [ANDROID, WINDOWS]
function IsNetworkType: TmyNetworkType; - mobile network type [ANDROID]
function IsGPSActive(HIGH_ACCURACY: Boolean = False): Boolean; - GPS enabled? [ANDROID]
function IsDeviceType: TDeviceInfo.TDeviceClass; - device type (Unknown, Desktop, Phone, Tablet, etc) [ALL PLATFORMS]
function IsTablet: Boolean; - the application is running on the tablet? [ALL PLATFORMS]
function IsPortraitOrientation: Boolean; - current orientation is a Portrait? [ALL PLATFORMS]
function IsLargePhone: Boolean; - Phablet? [ANDROID/IOS]

android.png ios.png
Cevapla
#3
Tşk ederim hocam bilgi için zahmetten kurtarır buda çalıştıramadım  Sad

Boş dönüyor
label3.text:=DeviceInfo.diIPAddress;
Cevapla
#4
diIPAddress'e platform ios ise direk 'unknown' ataması yapmış sanırım ip adresi kısmı sadece android ve windows için çalışıyor
bu üniteyi daha önce kullanmamıştım test etmedim açıkçası, konu benzer olunca paylaşayım dedim Smile
Cevapla
#5
Merhaba hocam,

Android platformda denedim ios da denemedim malasef. Android de çalışmadı boş döndü yinede çılgın programcı arkadaşlara ilham verir belki Smile
Cevapla
#6
benim çok hoşuma gitti özellikle dil ve ekran boyutları göstermesi benim için önemliydi teşekkürler
Cevapla
#7
(25-12-2016, Saat: 20:30)esrehmaan Adlı Kullanıcıdan Alıntı: Merhaba hocam,

Android platformda denedim ios da denemedim malasef.  Android de çalışmadı boş döndü yinede çılgın programcı arkadaşlara ilham verir belki Smile

Merhaba,
Paylaşımınız için teşekkür ederim.
Ben de daha önce Android ve iOS platformunda NetWork kontrolü üzerine bir makale yazmıştım.
Güçlerimizi birleştirelim. Tüm platformlar için NetWork kontrolü olsun.  Shy  Farklı platformlarda internet bağlantısı kontrolü yapmak
DelphiCan'dır!
Cevapla
#8
Merhaba,

Neden olmasın ben elimden geleni arkadaşlar ile paylaşmaya hazırım. Ancak size daha çok sorunlar ile geliyorlar. Bi babayiğit çıksa dese ki ya "ben şu konuyu anlamadım rica etsek bi makale yazsanız da içimiz ferahlasa" emin olun ki işimi güçümü bırakır yardımcı olmaya çalışırım
Cevapla
#9
(25-12-2016, Saat: 23:25)esrehmaan Adlı Kullanıcıdan Alıntı: Merhaba,

Neden olmasın ben elimden geleni arkadaşlar ile paylaşmaya hazırım. Ancak size daha çok sorunlar ile geliyorlar. Bi babayiğit çıksa dese ki ya "ben şu konuyu anlamadım rica etsek bi makale yazsanız da içimiz ferahlasa" emin olun ki işimi güçümü bırakır yardımcı olmaya çalışırım

Tanışalı kısa bir zaman olsa da; o ışığı sizde gördüm.
İlgi ve desteğiniz için teşekkür ederim.
DelphiCan'dır!
Cevapla
#10
Şunuda ayrıca belirtmek isterim ki aramızda mrmarman,SimaWB ve her sıkıştığımda üşenmeden yardımcı olan barisatalay kardeşimiz gibi ve ismini sayamadığım daha nice değerler varken bize söz düşmez ama onlardan öğrendiğimiz bir kaç tiyo ile diğer arkadaşlara yardımcı olmak isteriz. Bu sebeple forumda makale istekleri gibi bir bölüm açılsa sevinirim...
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Delphi Direktif Kullanımı narkotik 14 6.262 20-12-2024, Saat: 13:55
Son Yorum: frmman
  Delphi ile .Net Ortamında geliştirilen dll içerisindeki fonksiyon kullanımı yhackup 10 10.342 09-04-2023, Saat: 02:17
Son Yorum: gogo72
  Delphi ve Protocol Buffers SimaWB 10 9.313 10-12-2022, Saat: 15:04
Son Yorum: SimaWB
  Delphi AES 128 ECB PKCS5 Padding ile sorun aegean 1 1.716 28-11-2022, Saat: 13:07
Son Yorum: aegean
  Delphi IDE'sine Eklenti Yapmak - 2 SimaWB 29 26.698 03-07-2022, Saat: 16:40
Son Yorum: enigma



Konuyu Okuyanlar: 1 Ziyaretçi