AIR for Android ile internet bağlantısını sorgulamak ( Adobe Air detect for internet connection )

Android için ya da diğer mobil cihazlar için uygulama geliştiriyorsak uygulamamızın temel ihtiyaçları olabilir. Bunlar internet bağlantısını kontrol etmek, GPS kontrolleri, MACID gibi bir çok şeyi elde etmek isteyebiliriz. Bu gibi durumlarda Flex SDK ve AIR SDK bize bir çok yenilik sağlıyor aslında. Native uygulama geliştirmek yerine daha hızlı daha kolay ve daha anlaşılır bir şekilde mobil uygulamalar geliştirebilirsiniz. Tek şartınız kurulan cihazda AIR Runtime kurulu olması gerekiyor (bu sadece Android cihazlar için geçerli.) Diğer taraftan IOS tabanlı uygulamalar ve oyunlarda ise hiç bir şekilde ek bir plug-in’e ihtiyaç duyulmuyor. Native kodlar gibi derlenip .ipa çıktısı verebiliyor.

Kısaca üstün körü bir şekilde AIR for Mobile’dan bahsettikten sonra asıl konumuz olan internet bağlantısını kontrol etmeye gelelim. Bunun için ilk olarak yapmamız gereken belli başlı ayarlar bulunuyor. İlk olarak Air SDK’den aircore.swc dosyamızı dahil etmemiz gerekiyor. Bunun için şu adımları izleyin.

İlk olarak projemizi açalım. File > new > AIR for Android seçin daha sonra aşağıdaki ayarlara bir göz atın.

C:\Program Files (x86)\Adobe\Adobe Flash CS5.5\AIR2.6\frameworks\libs\air klasöründe aircore.swc’nin olduğundan emin olun. Daha sonra Flash Professional’a geçip şu adımları izleyin;

File > Publish Setting > Sağ üst köşedeki ikinci anahtar simgesine tıklayın > Açılan pencerede -Library Path- sekmesine tıklayın > Artı simgesine tıklayın, Daha sonrasında -Flash player ikonuna tıklayın (küçük beyaz f işareti) Yukarıda belirttiğim dizine gidin ve oradan aircore.swc bulun ve ekleyin. Daha sonrasında aşağıdaki kodları yazın;

 // uygulama için gerekli kütüphaneleri uygulamaya dahil ediyoruz.
 import air.net.*;

// monitor ibaresi bize internet bağlantısının olup olmadığını sağlar.
 var monitor:URLMonitor = new URLMonitor(new URLRequest('https://serhatsezer.wordpress.com'));
 // bir event'e bağlayıp akışı kontrol etmemizi sağlayan fonksiyona gönderir.
 monitor.addEventListener(StatusEvent.STATUS, netConnectivity);
 // yaptığımız işlemleri başlatır.
 monitor.start();

function netConnectivity(event:StatusEvent):void
 {
 // eğer internet bağlantısı sağlınıyorsa true, sağlanmıyorsa false değeri dönderir.
 if(monitor.available)
 {
 trace("internet bağlantısı var.");
 }
 else
 {
 trace("internet bağlantısı yok.");
 }
 }

İhtiyaç duyabileceğiniz kaynaklar;

http://cookbooks.adobe.com/post_Detecting_the_network_connection_type_with_Flex_4_-18791.html
http://www.actionscript.org/forums/showthread.php3?t=261165
http://stackoverflow.com/questions/9671678/adobe-air-check-for-internet-connection
http://stackoverflow.com/questions/9872348/adobe-air-detect-if-connection-is-wifi-3g-or-edge

Advertisements

Javascript ufak bir trick

Jquery kütüphanesini kullanmadan javascript ile değişen efektsiz bir banner alanı yapabiliriz. Bunu genellikle mobil cihazların performansı açısından yapılabilir gibi gözüküyor. Plug’insiz bir şekilde banner yapılabilir. Bunun için sadece img tagının src özelliği ile yapılabilir. Ancak ben sadece ar-ge yaptığım için sadece setTimeout’lu biryapı kurdum.

Mantık bir Object oluşturmak (SERHATS) adında ardından bu objenin içinde kodları başlatan init metodu getirilir. Init metodunda array’lere push metodunu kullanarak elemanlarımızı index kullanarak ekleyebiliriz. Daha sonrasında dışardan st = Interval değeri (timer) sonrasında nCurrent = integer değer arrayları seçeceğimiz değişken olarak düşünülebilir. wrapText = string (htmldeki id’mizi seçecek olan alan) bu da değişen değeri #wrapText div’nin içine yazacaktır. nextBtn ve prevBtn ileri ve geri butonlarımız bunlar da html DOM yapısı içerisinde link sisteminde verildi ve id değerleride bu şekilde verildi.


var SERHATS = {} || new Object();
 var projects = new Array();
var nCurrent = -1;
var wrapText;
var st = null;
var prevBtn;
var nextBtn;

SERHATS = {

init : function()
{
bannerInterval();
projects[0] = "Proje adı 1";
projects[1] = "Proje adı 2";
projects[2] = "Proje adı 3";
projects[3] = "Proje adı 4";
projects[4] = "Proje adı 5";
projects[5] = "Proje adı 6";

nextBtn = document.getElementById('btnNext');
prevBtn = document.getElementById('btnPrev');

nextBtn.addEventListener("click",function(){
nCurrent ++;
nCurrent = nCurrent % projects.length;
wrapText = document.getElementById('wrapper').innerHTML = projects[nCurrent];
console.log('next button clicked.')
});

prevBtn.addEventListener("click",function(){
if(nCurrent>0) nCurrent --;
wrapText = document.getElementById('wrapper').innerHTML = projects[nCurrent];
console.log('prev button clicked.');
});

nextBtn.addEventListener("mouseover",function(){
console.log('Bir sonraki banner adı ==== ' + projects[nCurrent + 1]);
});

prevBtn.addEventListener("mouseover",function(){
console.log('Bir önceki banner adı ==== ' + projects[nCurrent - 1]);
});
}
};

function bannerInterval()
{
st = setInterval(function(){
nCurrent ++;
wrapText = document.getElementById('wrapper').innerHTML = projects[nCurrent];

if(nCurrent === 5)
{
clearInterval(st);
st = null;
}

},3000);
}

//Ayrıca verileri array şeklinde de ekleyebiliriz.
document.body.innerHTML = ['Deneme1','Deneme2','Deneme3'].join('-');

Javascript setTimeout ve setInterval Hakkında Kaynaklar

http://www.w3schools.com/js/js_timing.asp
http://www.pageresource.com/jscript/jtimeout.htm
http://www.west-wind.com/weblog/posts/2006/Mar/28/JavaScript-windowSetTimeout-to-a-JavaScript-Class-method-or-function-with-parameters

SQL ile Update

University adında bir veritabanım var ve bu veritabanının içinde CampusInfo adında bir tablomuz yer alıyor. Bu tablonun içinde CampusName ve CampusId alanları(rows)lar var. Daha sonrasında bu tapolaların içindeki verileri güncelleyebilmemiz için UPDATE etmemiz gerek. Yanlız bu noktada dikkat edilmesi gereken bir nokta var o da hangi veriyi güncelleyeceğimizdir. Bunun için ise yardımımıza CampusId yetişiyor…

SQL İfadesi

UPDATE CampusInfo SET CampusName=YeniVerimiziGiriyoruz WHERE CampusId=HangiIDverisiGuncellenecek

İlk satırda yani SET CampusName kısmında veritabanından sadece hangi alandan veri güncelleyeceğimizi seçiyoruz. WHERE CampusId kısmında ise Hangi ID nosuna sahip veriyi güncelleyeceğimizi belirliyoruz.