Konuyu Paylaş : facebook gplus twitter

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 (Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol)

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ı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba 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  Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
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ı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,

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.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
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

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Delphi'de Dökümantasyon Nasıl Yapılır uparlayan 20 335 Dün, Saat: 11:29
Son Yorum: adelphiforumz
  Firemonkey Label'a Arkaplan Rengi Vermek Fesih ARSLAN 2 1.698 05-07-2018, Saat: 13:21
Son Yorum: Bay_Y
  Kitap İnceleme ( Algoritma ve Delphi 2005 ) #1 boreas 0 86 02-06-2018, Saat: 15:39
Son Yorum: boreas
  FireMonkey Resimlerde Pan ve Zoom İşlemleri Fesih ARSLAN 11 1.402 16-04-2018, Saat: 12:04
Son Yorum: pro_imaj
  Delphi'de Indy SMTP ile e-mail gönderme. (GMail, Yandex, Yahoo vb.) csunguray 6 604 09-04-2018, Saat: 02:34
Son Yorum: dkadir



Konuyu Okuyanlar: 1 Ziyaretçi