8 Temmuz 2015 Çarşamba

Android Notlarım

Camera
Camera'nın olup olmadığı şöyle kontrol edilir.

boolean checkCameraExists(Context context) {
 if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)){
      // this device has a camera
      return true;
  } else {
      // no camera on this device
      return false;
  }
}
Camera nesnesi şöyle elde edilir.

public static Camera getCameraInstance(){
    Camera c = null;
    try {
        c = Camera.open(); // attempt to get a Camera instance
    }
    catch (Exception e){
        // Camera is not available (in use or does not exist)
    }
    return c; // returns null if camera is unavailable
}
Resim çekilince Camera.PictureCallback çağrılır
camera.takePicture(null, null, new Camera.PictureCallback () {

    @Override
    public void onPictureTaken(final byte[] data, Camera camera) {

    }
});

Dalvik
Android işletim sistemi Dalvik Virtual Machine'i kullanıyor. Dalvik "register based" bir virtual machine, JVM ise "stack based" bir virtual machine. Yan, Dalvik üzerinde çalıştığı donanımda çok daha fazla sayıda donanım register'ı olduğunu farz ediyor.

Layout
Bir çok layout çeşidi var. Bazıları şunlar.

  1. LinearLayout - dikey (vertical) kullanılırsa bileşenleri alt alta satırlar halinde gösterir. Yatay kullanılırsa (horizontal) bileşenleri yanyana gösterir.
  2. RelativeLayout - Bileşeni tam olarak belirtilen yere - başka bir bileşenin solu, sağı, altı, üstü gibi-yerleştirir.
  3. Table Layout - Satır ve sütunlar şeklinde tabloya yerleştirir. İlginç bir şekilde içine kaç satır ve sütun yerleştirileceği xml'de belirtilmiyor. TableLayout düğümü içindeki alt düğümler sayılarak hesaplanıyor.Örnek:
  4. <TableLayout
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:stretchColumns="0"
     android:shrinkColumns="1"
     android:id="@+id/attibutesLayout">
    </TableLayout>


layout_width
Hem layout hem de widget'lar için kullanılır. match_parent ile nesnenin tüm layout'u yatay olarak doldurması sağlanır. wrap_content ise nesne içerdiği metin kadar büyür.
<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"/>
Bazı Widget'lar
TextView : Metin göstermek için kullanılır. View'dan kalıtır. XML'i şuna benzer. XML ile bir metin değer atanabilir.
<TextView
        android:id="@+id/txtTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="http://"
        android:textColor="@android:color/darker_gray" />
EditText
EditText Sınıfı yazısına taşıdım.

Activity
Activity yazısına taşıdım.

Intent
Intent yazısına taşıdım.

IntentFilter
IntentFilter BroadcastReceiver ile kullanılabilir. BroadcastReceiver filtreden geçen intent'leri işler. Örnekte cihazın kapanmasını işleyen bir sınıf görülebilir. Önce bir receiver ve filter tanımlıyoruz.
<receiver android:name="MyReceiver">
        <intent-filter>
            <action android:name="android.intent.action.ACTION_SHUTDOWN"/>
        </intent-filter>
</receiver>
Daha sonra sınıfı yazıyoruz.
public class MyReceiver extends BroadcastReceiver  {

    @Override   
    public void onReceive(Context context, Intent intent) 
    {       
        //Get system time here and log wherever you like.
    }

}
IntentFilter activity ile de kulllanılabilir. Activity şöyle tanımlanır
<activity
        android:name=".YourActivity" >
        <intent-filter>
            <action android:name="your.custom.ACTION" />

            <categoty android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity> 
Daha sonra Intent şöyle çağırılır.
startActivity(new Intent("your.custom.ACTION"));

Bundle
Bundle iki activity arasında veri geçirmek için kullanılır. Her Intent içinde bir Bundle nesnesi barındırır.
putExtra/getExtras
Inten sınıfının putEtra()/getExtras() ile Bundle nesnesine erişilir. İlk intent ikinci intent için bundle'ı doldurur.
Intent intent = new
Intent(getApplicationContext(),SecondActivity.class);
intent.putExtra("myKey",AnyValue);  
startActivity(intent);
İkinci intent getExtras() metodu ile bundle'a erişiri ve okur.
Bundle extras = intent.getExtras(); 
String tmp = extras.getString("myKey");
putStringArrayListExtra/getStringArrayListExtra
Kullanım şekli putExtra/getExtras() ile aynı. Eklemek için
intent.putStringArrayListExtra(ITEMS, list);
Almak için
List<String> items = getIntent().getStringArrayListExtra(ITEMS);

Android Service
IntentService kullanılır. Örnek:
public class ReviewCheckService extends IntentService {

 public ReviewCheckService() {}

 @Override
 protected void onHandleIntent(Intent intent) {
 }
}
Strings XML
Farklı dillere çevrim yapmak istersek kolayca yapabilmek için string'leri xml'e koymak gerekir. Default İngilizce xml dosyası values/strings.xml dosyasıdır.

<resources>
   <string name="title">My Application</string>
   <string name="hello_world">Hello World!</string>
</resources>

Farklı bir ülke için örneğin Fransa için
values-fr/strings.xml altına dosya yaratmak gerekir.

SMS Push
Nasıl yapılır bilmiyorum ama SMS gelince notification göstermek mümkün.

SMS Gönderme
SMS gönderebilmek için AndroidManifest.xml dosyasında şu satırın olması gerekir.
<uses-permission android:name="android.permission.SEND_SMS" />



Hiç yorum yok:

Yorum Gönder