PhoneGap, Iphone, Android ve Blackberry platformlarını destekleyen geliştiricilerin HTML ve Javascript ile mobil uygulamalar geliştirmesini kolaylaştıran bir araçtır.
Posts Tagged ‘Android’
HTML ve Javascript ile Mobil Uygulamalar – PhoneGap
Wednesday, April 21st, 2010Android İle 30 dolara robot
Friday, March 19th, 2010Tim Heath ve Ryan Hickman, Android işletim sistemi tabanlı bir
cihaz ile basit de olsa bir robot yapmayı başardı. Bu basit robotun üzerinde sadece 30 dolarlık bir cihaz bulunuyor. Bilgisayar üzerinden gerekli komutları verilip uzaktan yönlendirilebilen bu robot bir şekilde Android’in gücünü de ortaya koyuyor. Cihaza ait videolara ve yapım süreçlerine ait bilgileri bulabileceğiniz kendi internet sitelerine buradan ulaşabilirsiniz.
Android’de Başlangıç Programı Yazmak
Friday, March 19th, 2010Hikaye: Telefonunuz yeni açıldığında, programınızın otomatik olarak açılmasını sağlayabilir, ya da arka planda bazı önyüklemeleri gerçekleştirebilirsiniz. İşte bende bugün yeni yapmaya başladığım bir programın benzer bir özelliği olmasını istediğim için bu konuyu araştırmaya koyuldum. Zaman içerisinde değişen Android API’leri yüzünden internetten araştırıp bulduğum hiç bir bilginin tam ve geçerli olmaması sonucunda, yarım saatte yapmayı planladığım şeyi ancak yarım günde yapabildim. Zaten bu dökümanı yazma sebebim de tam olarak bu oluyor.
Background: Öncelikle Broadcast Receiver (ya da eski ismiyle Intent Receiver) ile, cep telefonumuzun açıldığını anlayacağız. Peki ama Broadcast Receiver’da ne oluyor? derseniz; Broadcast kelime manası olarak, “yayın yapmak” demektir. Bunu televizyon yayınına benzetebiliriz. Ortada bir antenden, her tarafa yayın yapılır ve o sinyali almak isteyen herkes alır. Tam olarak Android işletim sistemi içerisindeki broadcast yayını da böyle yapılır. İşletim sistemi içerisinde gerçekleşen bir olay karşısında, “ben bunu yaptım” diye bir yayın yapar. Bu bilgiyi almak isteyen her program bunu alarak kullanır, tepki verir. Mesela cep telefonuna bir SMS mesajı geldiğinde, Android bir broadcast yayını ile(intent göndererek) tüm programlara SMS alındığına dair bilgilendirir. Aynı şekilde, cep telefonumuz açıldığında, Android bize telefonun açılışını haber verebilir. Biz yeter ki bu yöne kulağımızı kabartalım
İcraat: İşte BroadReceiver sayesinde, tüm broadcastlara ulaşabiliriz. Fakat önemli olan tüm broadcast yayınları içerisinden işimize yarayacak olana ulaşabilmek. Bunun için gelen broadcastları AndroidManifest.xml içerisinde filtreleyeceğiz. Tabi bir de tüm bu işlemler için gerekli permission’ları yine AndroidManifest.xml içerisinde tanımlamış olmamız gerekiyor. İsterseniz artık icraata geçelim..
<receiver android:name=”.StartupIntentReceiver”>
<intent-filter>
<action android:name=”android.intent.action.BOOT_COMPLETED” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</receiver>
Yukarıdaki gibi bir receiver’ımız için bir filtre yazıyoruz. Yani, tüm broadcast yayınları içerisinden telefonun açılışının ardından yapılan yayını yakalayacağız. Bunu android.intent.action.BOOT_COMPLETED sayesinde anlayacağız. Fakat bu broadcast yayını dinleyebilmemiz için de, belli izinleri almış olmamız gerekiyor. Bunun için yine AndrodManifest.xml’in içerisine şu permission kodunu ekliyoruz.
<uses-permission android:name=”android.permission.RECEIVE_BOOT_COMPLETED” />
Yanılgı: Her ne kadar Android’in kendi sitesindeki dökümanlarda ve diğer bir çok sitede yukarıdaki permission’un yeterli olduğu yazsa da, telefon açılışının dinlenmesinde kullanılacak izin için aslında bu tek başına yeterli değildir. Benim yarım gün boyunca boşuna uğraşmamın sebeblerinden bir tanesi olan bu permissionun yanına aşağıdakilerin de tamamını eklemediğiniz sürece, (Android 1.5 ve 2.0′da test edilmiştir) almak istediğimiz broadcast yayınını asla alamayacağız. Ekleyeceğimiz extra permission’lar.
<uses-permission android:name=”android.permission.ACCESS_LOCATION” />
<uses-permission android:name=”android.permission.ACCESS_GPS” />
<uses-permission android:name=”android.permission.ACCESS_ASSISTED_GPS” />
<uses-permission android:name=”android.permission.ACCESS_CELL_ID” />
Ne alaka? diyebilirsiniz.. fakat uzuuun araştırmalarım sonucunda ben internette çözüm yolu olarak sadece bunun işe yaradığını gördüm. (Extra not: gerçek bir telefona bu programı kurmaya çalıştığımda, bu extra izinlerin install ekranındaki bilgilendirmede karşıma çıkmadığını gördüm. Bunun manası, “ben aslında bu özellikleri kullanmıyorum” demek olsa da, bize neden bu izinleri aldırttığını henüz çözebilmiş değilim.)
Sıra geldi, filtreleyerek aldığımız broadcastımızın çalışacağı class’ı oluşturmaya.
public class StartupIntentReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent startupIntent = new Intent(context, RunMfa.class);
startupIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(startupIntent);
}
}
Filtreleyerek aldığımız broadcastımız bu classın çalışmasına neden oldu. Ve bizde Intent ile RunMfa activity’sinin çalışmasını söylüyoruz. (Mesela bu programımızın ana ekranı olabilir..)
public class RunMfa extends Activity{
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView) findViewById(R.id.serialTV);
tv.setText(“Run start up ile calisti -by Mustafa Ferhan Akman”);
}
}
AndroidManifest.xml’in son hali:
<?xml version=”1.0″ encoding=”utf-8″?>
<manifest xmlns:android=”http://schemas.android.com/apk/res/android“
package=”com.androidprogramcisi” android:versionCode=”1″ android:versionName=”1.0″>
<uses-permission android:name=”android.permission.RECEIVE_BOOT_COMPLETED” />
<uses-permission android:name=”android.permission.ACCESS_LOCATION” />
<uses-permission android:name=”android.permission.ACCESS_GPS” />
<uses-permission android:name=”android.permission.ACCESS_ASSISTED_GPS” />
<uses-permission android:name=”android.permission.ACCESS_CELL_ID” />
<application android:icon=”@drawable/icon” android:label=”@string/app_name”
<activity android:name=”.RunMfa” android:label=”@string/app_name”></activity>
<receiver android:name=”.StartupIntentReceiver”>
<intent-filter>
<action android:name=”android.intent.action.BOOT_COMPLETED” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</receiver>
</application>
<uses-sdk android:minSdkVersion=”3″ />
</manifest>
inşaallah benim gibi uzun uzun araştırmak zorunda kalmadan bu dökümana ulaşırsınız diyerek yazımı sonlandırıyorum..
Yazan: Mustafa Ferhan Akman http://ferhanakman.wordpress.com/