Soru & Cevap

Android'de wifi yönetimi ve ip adresine veri yollama:

06.05.2017 - 01:17

Öğrenimimde 2. sınıf final projesi olarak "Akıllı Priz" cihazına entegre Android programı yazmam gerekiyor.

  • İlk olarak programın, telefonun Wi-Fi'sini etkinleştirip, bulduğu Wi-Fi'leri ve ip adreslerini list wiev halinde kullanıcıya sunması gerekiyor.
  • Daha sonra bulduğu Wi-Fi'lerin arasından akıllı prizi seçip ip adresi, ismi gibi verileri veritabanına eklemem gerekiyor.
  • Bu işlemden sonra bu akıllı prizi seçilen başka bi modemime bağlamam gerekiyor. (Cihazın arge ekipi bu kodları sitesinde sunmaktadır.)

Bu işlemlerin içinden birincisinin önceliği fazladır. Daha sonraki işlemler ise şöyledir:

  •  Bu ip adresi bende mevcut olan cihaza lokalden değil de genelden (ip adresine/web'den) on-off/1-0 gibi bende mevcut olan kodları yani verileri yollamam gerekiyor.

Örnek uygulama olarak: https://play.google.com/store/apps/details?id=com.tplink.kasa_android&hl=tr
Android ve Java ile yeni tanışmış biri olarak anlaşılması kolay ve yalın cevaplarınız olursa sevinirim. Şimdiden teşekkürler.

173 Görüntülenme

1 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-17846-1496738325.jpg
haciabdullahsarikaya
06.05.2017 - 11:20

Merhabalar,

Öncelikle kullanıcıdan wifi erişim izni alman gerekiyor bunun için AndroidManifest.xml dosyasına aşağıdaki kodları eklemelisin:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

Daha sonra Android device'ın Wifi Managerını çağırmalısın ve bir BroadcastReceiver (Kaynak) içerisinde sürekli taratıp wifi listesini ScanResult türünde alabilirsin. Daha sonra bir Adapter tanımlayıp Listview da gösterebilirsin (Kaynak). 

WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);

        if (wifi.isWifiEnabled() == false) // Kullanıcının wifi'ını aktif hale getirtmen gerekebilir açık değilse
        {
           ...
        }   

wifi.startScan(); // taramayı başlatabilirsin

...

List<ScanResult> wifiList = wifi.getScanResults(); // bu şekilde de tüm sonuçları bir listeye aktarabiliriz. Bunu broadcastreceiver içerisinde onReceive içinde yapmak daha iyi olur oluşan her değişikliği yakalatabiliriz.

...


Sonrasında zaten yapman gereken ya online ya da offline (SQLite) veritabanı kullanılarak kaydetmen olacaktır.

Eğer arkaplanda bir servis kullanıcaksan orda istediğin modeme bağlayıp client ve servisi senkronize edebilirsin.

Umarım yardımı olur yazdıklarımın,

Kolay gelsin.