<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>rayyildiz.com &#187; android</title>
	<atom:link href="http://rayyildiz.com/tag/android/feed/" rel="self" type="application/rss+xml" />
	<link>http://rayyildiz.com</link>
	<description>Bilgi Paylaşıldıkça Güzelleşir</description>
	<lastBuildDate>Mon, 16 Jan 2012 11:07:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Android Platformunda Tablı Ekranlar</title>
		<link>http://rayyildiz.com/2010/06/android-platformunda-tabli-ekranlar/</link>
		<comments>http://rayyildiz.com/2010/06/android-platformunda-tabli-ekranlar/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 21:41:31 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Mobil Uygulama]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[tab]]></category>
		<category><![CDATA[uygulama geliştirme]]></category>

		<guid isPermaLink="false">http://rayyildiz.com/?p=210</guid>
		<description><![CDATA[Android ekranları tasarlarken Tab kullanmak güzel bir artı katmakta, Activity ler arasında dolaşmaktan daha avantajlı bir yapı sunmaktadır. Android de tab kullanmak için &#8220;TabActivity&#8221; yararlanacağız. Bunun için ihtiyacımız olan layout xml şu şekilde bir yapıda olmalı. Göreceğiniz gibi ana layout TabHost&#8217;dur. Gördüğünüz bir tane FrameLayout yer almaktadır. Biz code içinde Tab ları ekleyeceğimiz için layout [...]]]></description>
			<content:encoded><![CDATA[<p>Android ekranları tasarlarken Tab kullanmak güzel bir artı katmakta, Activity ler arasında dolaşmaktan daha avantajlı bir yapı sunmaktadır. Android de tab kullanmak için &#8220;<a href="http://developer.android.com/reference/android/app/TabActivity.html" target="_blank">TabActivity</a>&#8221; yararlanacağız. Bunun için ihtiyacımız olan layout xml şu şekilde bir yapıda olmalı.</p>
<pre class="brush: xml; title: ; notranslate">
</pre>
<p>Göreceğiniz gibi ana layout TabHost&#8217;dur. Gördüğünüz bir tane FrameLayout yer almaktadır. Biz code içinde Tab ları ekleyeceğimiz için layout base bir yapıdadır. Tüm Activity leri &#8220;<a href="http://developer.android.com/guide/topics/manifest/manifest-intro.html" target="_blank">AndroidManifest.xml</a>&#8221; içinde tanımlamalısınız.</p>
<p>Tabları host edecek olan nesnemiz ise şu şekildedir:</p>
<pre class="brush: java; title: ; notranslate">
public class ApplicationActivity extends TabActivity {
  @Override
  public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.main);
    Resources res = getResources();
    TabHost tabHost = getTabHost();
    TabHost.TabSpec spec;
    Intent intent;
    intent = new Intent().setClass(this, DashboardActivity.class);
    spec = tabHost.newTabSpec(&quot;home&quot;).setIndicator(&quot;Home&quot;,
         res.getDrawable (R.drawable.ic_tab_dashboard)).setContent(intent);
    tabHost.addTab(spec);
    intent = new Intent().setClass(this, CreditCardActivity.class);
    spec = tabHost.newTabSpec(&quot;sample1&quot;).setIndicator(&quot;Sample Tab&quot;,
         res.getDrawable (R.drawable.ic_tab_sample1)).setContent(intent);
    tabHost.addTab(spec);
    intent = new Intent().setClass(this, SettingActivity.class);
    spec = tabHost.newTabSpec(&quot;sample2&quot;).setIndicator(&quot;Sample Tab 2&quot;,
        res.getDrawable (R.drawable.ic_tab_sample2)).setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, AboutActivity.class);
    spec = tabHost.newTabSpec(&quot;about&quot;).setIndicator(&quot;Sample Tab 3&quot;,
        res.getDrawable (R.drawable.ic_tab_about)).setContent(intent);
    tabHost.addTab(spec);
    tabHost.setCurrentTab(0);
  }
}
</pre>
<p>Ben burada daha şık olması amacıyla Tab seçili iken farklı bir ikon görünmesi amacıyla &#8220;ic_tab_xxx&#8221; dosyalarını kullandım. Bunlar şuna benzer bir yapıdadır:</p>
<pre class="brush: xml; title: ; notranslate">
</pre>
<p>Uygulamamızı çalıştırdığımızda ekran görünütüsü buna benzer olmaktadır.</p>
<p><a href="http://rayyildizc.files.wordpress.com/2010/06/android_sample_tab1.png" rel="lightbox[210]"><img src="http://rayyildizc.files.wordpress.com/2010/06/android_sample_tab1.png?w=201" alt="" title="android_sample_tab" width="201" height="300" class="alignnone size-medium wp-image-211" /></a><a href="http://www.rayyildiz.com/wp-content/uploads/2011/02/android_sample_tab21.png" rel="lightbox[210]"><img src="http://www.rayyildiz.com/wp-content/uploads/2011/02/android_sample_tab21.png?w=201" alt="" title="android_sample_tab2" width="201" height="300" class="alignnone size-medium wp-image-217" /></a></p>
<p>Daha sonra daha detaylı bilgi paylaşıyor olacağım, şimdilik hoşcakalın.</p>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2010/06/android-platformunda-tabli-ekranlar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android Uygulamalarında Veritabanı İşlemleri</title>
		<link>http://rayyildiz.com/2010/06/android-uygulamalarinda-veritabani-islemleri/</link>
		<comments>http://rayyildiz.com/2010/06/android-uygulamalarinda-veritabani-islemleri/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 01:19:18 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Mobil Uygulama]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[sqlite]]></category>
		<category><![CDATA[tab]]></category>
		<category><![CDATA[uygulama geliştirme]]></category>
		<category><![CDATA[veritabanı]]></category>

		<guid isPermaLink="false">http://rayyildiz.com/?p=194</guid>
		<description><![CDATA[Bir uygulama geliştirirken verilerin saklanması ihtiyacı doğmakta ve verilerin uygulamadan ayrı bir yapı olarak durması maksadıyla veritabını kullanılmaktadır. Android bir uygulama geliştirirken, aynı nedenden dolayı verilerin saklanması ihtiyacınız olacaktır. Micro device için uygulama geliştirmek, desktop bir bilgisayar için uygulama geliştirmekten daha zordur. Memory ve harddisk&#8217;inizin kısıtlı olması, işlemcinin gücü, multitask uygulama geliştirme sıkıntısı başlıcalarındandır. Android [...]]]></description>
			<content:encoded><![CDATA[<p>Bir uygulama geliştirirken verilerin saklanması ihtiyacı doğmakta ve verilerin uygulamadan ayrı bir yapı olarak durması maksadıyla veritabını kullanılmaktadır. Android bir uygulama geliştirirken, aynı nedenden dolayı verilerin saklanması ihtiyacınız olacaktır. Micro device için uygulama geliştirmek, desktop bir bilgisayar için uygulama geliştirmekten daha zordur. Memory ve harddisk&#8217;inizin kısıtlı olması, işlemcinin gücü, multitask uygulama geliştirme sıkıntısı başlıcalarındandır. Android de ise yerleşik <a href="http://www.sqlite.org/" target="_blank">sqlite</a> veritabanının yer alması ise Android&#8217;e önemli bir artı sunmaktadır.</p>
<p><a href="http://www.rayyildiz.com/wp-content/uploads/2011/02/sqlite1.gif" rel="lightbox[194]"><img class="alignleft size-full wp-image-195" title="SQLite" src="http://www.rayyildiz.com/wp-content/uploads/2011/02/sqlite1.gif" alt="" width="327" height="97" /></a>Sqlite, oldukça önemli projelerde kullanılmış (Firefox,Skype, Mcfee, iPhone,&#8230;) ve de oldukçe <a href="http://www.sqlite.org/th3.html" target="_blank">iyi test edilmiş</a> bir veritabanıdır. 4K stack ve 100K ise heap için yeterlidir. Android içinde ise gelen sqlite, bir android uygulamasının ihtiyac duyduğu veritabanı işlemlerini karşılayacak düzeydedir.</p>
<p>Bu giriş bilgilerinden sonra örnek bir uygulama geliştirelim. Uygulamamız, ad, soyad ve telefon numarası kayıt edeceğimiz bir &#8220;customer&#8221; tablosu olsun. Linux &#8216;ta sqliteman gibi bir uygulama ile veritabanınızı oluştururun. Örneğimizde kullanacağımız tablonun scripti şu şekildedir:<br />
<span id="more-194"></span></p>
<pre class="brush: sql; title: ; notranslate">

CREATE TABLE &quot;Customer&quot; (
&quot;Id&quot; INTEGER PRIMARY KEY,
&quot;Firstname&quot; TEXT,
&quot;Lastname&quot; TEXT,
&quot;PhoneNumber&quot; TEXT
);
</pre>
<p>Daha sonra ise IDE nizde bir android uygulaması açınız(<a href="http://www.rayyildiz.com/wp-content/uploads/2011/02/list_customers1.png2010/06/android-icin-uygulama-gelistirme/">Android le Uygulama Geliştirme</a> yazısından faydalanabilirsiniz). Ben daha eski telefonlarda kullanılabilmesi için 1.6 uygulması actım. Daha sonra ise droiddraw ana ekran tasarlıyoruz.</p>
<p><a href="http://www.rayyildiz.com/wp-content/uploads/2011/02/droiddraw_main1.png" rel="lightbox[194]"><img class="alignnone size-medium wp-image-197" title="droiddraw_main" src="http://www.rayyildiz.com/wp-content/uploads/2011/02/droiddraw_main1.png?w=300" alt="" width="300" height="175" /></a></p>
<p>Veritabanı ilk acıldığında tablonun create edilmesi için create script i kod içine almamız gerekir. Aynı şekilde örneğimizde compiled statement kullanıyoruz. Şu anda sadece insert ve getAll metodunu implemente ettik.</p>
<pre class="brush: java; title: ; notranslate">
public class DbHelper {
  private static final String DATABASE_NAME = &quot;rayyildiz_sample.db&quot;;
  private static final int DATABASE_VERSION = 1;
  private static final String TABLE_NAME = &quot;Customer&quot;;
  private static final String TABLE_CREATE = &quot;CREATE TABLE &quot; + TABLE_NAME + &quot; ( &quot;
      + &quot;  \&quot;Id\&quot; INTEGER PRIMARY KEY,&quot;
      + &quot;  \&quot;Firstname\&quot; TEXT,&quot;
      + &quot;  \&quot;Lastname\&quot; TEXT,&quot;
      + &quot;  \&quot;PhoneNumber\&quot; TEXT&quot; + &quot;)&quot;;
  private static final String TABLE_INSERT = &quot;INSERT INTO &quot; + TABLE_NAME + &quot;(Firstname,Lastname,PhoneNumber) VALUES (?,?,?)&quot;;
  private Context context;
  private SQLiteDatabase database;
  private SQLiteStatement insertSQLiteStatement;

  public DbHelper(Context context) {
    this.context = context;
    DbOpenHelper dbOpenHelper = new DbOpenHelper(context);
    database = dbOpenHelper.getWritableDatabase();
    insertSQLiteStatement = database.compileStatement(TABLE_INSERT);
  }

  public long insertCustomer(Customer customer) {
    if (customer == null) {
      return -1;
    }
    insertSQLiteStatement.bindString(1, customer.getFirstname());
    insertSQLiteStatement.bindString(2, customer.getLastname());
    insertSQLiteStatement.bindString(3, customer.getPhoneNumber());

    return insertSQLiteStatement.executeInsert();
  }

  public List getAllCustomer() {
    List customers = new ArrayList();
    Cursor cursor = database.query(TABLE_NAME, new String[]{&quot;id,Firstname,Lastname,PhoneNumber&quot;}, null, null, null, null, &quot;id desc&quot;);
    if (cursor.moveToFirst()) {
      do {
        Customer c = new Customer();
        c.setId(cursor.getInt(0));
        c.setFirstname(cursor.getString(1));
        c.setLastname(cursor.getString(2));
        c.setPhoneNumber(cursor.getString(3));

        customers.add(c);
      } while (cursor.moveToNext());
    }
    if (cursor != null &amp;amp;&amp;amp; !cursor.isClosed()) {
      cursor.close();
    }
    return customers;
  }

  private static class DbOpenHelper extends SQLiteOpenHelper {
    public DbOpenHelper(Context context) {
      super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
      db.execSQL(TABLE_CREATE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
      db.execSQL(&quot;DROP TABLE IF EXISTS &quot; + TABLE_NAME);
      onCreate(db);
    }
  }
}
</pre>
<p>Bu ise Customer nesnesi</p>
<pre class="brush: java; title: ; notranslate">
public class Customer {
  private int id;
  private String firstname;
  private String lastname;
  private String phoneNumber;

  public String getFirstname() {
    return firstname;
  }

  public void setFirstname(String firstname) {
    this.firstname = firstname;
  }

  public int getId() {
    return id;
  }

  public void setId(int id) {
    this.id = id;
  }

  public String getLastname() {
    return lastname;
  }

  public void setLastname(String lastname) {
    this.lastname = lastname;
  }

  public String getPhoneNumber() {
    return phoneNumber;
  }

  public void setPhoneNumber(String phoneNumber) {
    this.phoneNumber = phoneNumber;
  }
}
</pre>
<p>İki tane Aktivity ekleyelim birisi MainActivity, diğeri ise Customer bilgilerini giriş yapabileceğimiz Activity olsun.</p>
<p>Bunlardan AddCustomerActivity şu şekilde:</p>
<pre class="brush: java; title: ; notranslate">

public class AddCustomerActivity extends Activity {
    public final static int SUCCESS_RETURN_CODE = 1;
  private DbHelper m_db;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.insert);

    m_db = new DbHelper(this);
    Button saveButton = (Button) findViewById(R.id.btnSave);
    final  EditText textFirstname = (EditText) findViewById(R.id.textFirstname);
    final EditText textLastname = (EditText) findViewById(R.id.textLastname);
    final EditText textPhoneNumber = (EditText) findViewById(R.id.textPhoneNumber);

    saveButton.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
       Intent intent = new Intent();
       Customer c = new Customer();
       c.setFirstname(textFirstname.getText().toString());
       c.setLastname(textLastname.getText().toString());
       c.setPhoneNumber(textPhoneNumber.getText().toString());
       m_db.insertCustomer(c);
       setResult(SUCCESS_RETURN_CODE, intent);
       finish();
     }
    });
  }
}
</pre>
<p>Ve Main Activity şu şekildedir</p>
<pre class="brush: java; title: ; notranslate">
public class MainActivity extends Activity {
  protected static final int SUB_ACTIVITY_REQUEST_CODE = 100;

  private ProgressDialog m_ProgressDialog = null;
  private ArrayList m_customers = null;
  private DataAdapter m_adapter;
  private Runnable viewData;
  DbHelper m_db;

  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    // ToDo add your GUI initialization code here
    setContentView(R.layout.main);
    m_db = new DbHelper(this);
    // initialize process
    m_customers = new ArrayList();
    this.m_adapter = new DataAdapter(this, R.layout.row, m_customers);
    setListAdapter(this.m_adapter);

    Button refreshButton = (Button)findViewById(R.id.btnRefresh);
    refreshButton.setOnClickListener(new View.OnClickListener() {

      public void onClick(View arg0) {
        refresh();
      }
    });

    Button addButton = (Button) findViewById(R.id.btnAdd);
    addButton.setOnClickListener(new View.OnClickListener() {

      public void onClick(View v
          ) {
        Intent i = new Intent(MainActivity.this,AddCustomerActivity.class);
        startActivityForResult(i, SUB_ACTIVITY_REQUEST_CODE);
        //startActivity(i);
      }
    });
  }

  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == SUB_ACTIVITY_REQUEST_CODE) {
      refresh();
    }
  }

  private void setListAdapter(DataAdapter m_adapter) {
    ListView lw = (ListView) findViewById(R.id.listCustomer);
    if (lw != null) {
      lw.setAdapter(m_adapter);
    }
  }

  private void insert(Customer c){
    m_db.insertCustomer(c);
  }

  private void refresh(){
    WorkerThread thread = new WorkerThread();
    //Thread thread = new Thread(null, viewData, &quot;MagentoBackground&quot;);
    thread.start();
    m_ProgressDialog = ProgressDialog.show(MainActivity.this,
        &quot;Please wait...&quot;, &quot;Resfreshing data ...&quot;, true);
  }

  private class WorkerThread extends Thread {

    @Override
    public void run() {
      getCustomers();
    }
  }

  private Runnable returnRes = new Runnable() {
    @Override
    public void run() {
      if (m_customers != null &amp;amp;&amp;amp; m_customers.size() &amp;gt; 0) {
        m_adapter.clear();
        m_adapter.notifyDataSetChanged();
        for (int i = 0; i &amp;lt; m_customers.size(); i++) {
          m_adapter.add(m_customers.get(i));
        }
      }
      m_ProgressDialog.dismiss();
      m_adapter.notifyDataSetChanged();
    }
  };

  private void getCustomers() {
    try {
      m_customers = new ArrayList();

      m_customers = (ArrayList) m_db.getAllCustomer();

      //Thread.sleep(2000);
    } catch (Exception e) {
      Log.e(&quot;BACKGROUND_PROC&quot;, e.getMessage());
    }
    runOnUiThread(returnRes);
  }

  public class DataAdapter extends ArrayAdapter{
  private ArrayList items;

  public DataAdapter(Context context, int textViewResourceId, ArrayList items) {
    super(context, textViewResourceId, items);
    this.items = items;
  }

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    View v = convertView;
    if (v == null) {
      LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
      v = vi.inflate(R.layout.row, null);
    }
    Customer o = items.get(position);
    if (o != null) {
      TextView tt = (TextView) v.findViewById(R.id.listLabeltext);
      if (tt != null) {
        tt.setText(o.getId() +&quot; : &quot; + o.getFirstname() + &quot; &quot; + o.getLastname() + &quot;(&quot;+ o.getPhoneNumber() + &quot;)&quot;);
      }
    }
     return v;
  }
  }
}
</pre>
<p>Örnek uygulamamızın ekran görüntüleri</p>
<p><a href="http://www.rayyildiz.com/wp-content/uploads/2011/02/add_customer1.png" rel="lightbox[194]"><img class="alignnone size-medium wp-image-202" title="add_customer" src="http://www.rayyildiz.com/wp-content/uploads/2011/02/add_customer1.png?w=198" alt="" width="198" height="300" /></a></p>
<p><a href="http://www.rayyildiz.com/wp-content/uploads/2011/02/list_customers1.png" rel="lightbox[194]"><img class="alignnone size-medium wp-image-203" title="list_customers" src="http://www.rayyildiz.com/wp-content/uploads/2011/02/list_customers1.png?w=201" alt="" width="201" height="300" /></a></p>
<p>Uygulamanın kaynak kodunu ise <a href="http://code.google.com/p/nbase/" target="_blank">google code</a> üzerinden indirebilirsiniz.</p>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2010/06/android-uygulamalarinda-veritabani-islemleri/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Android için Uygulama Geliştirme</title>
		<link>http://rayyildiz.com/2010/06/android-icin-uygulama-gelistirme/</link>
		<comments>http://rayyildiz.com/2010/06/android-icin-uygulama-gelistirme/#comments</comments>
		<pubDate>Sat, 05 Jun 2010 11:06:15 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Mobil Uygulama]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[uygulama geliştirme]]></category>

		<guid isPermaLink="false">http://rayyildiz.com/?p=174</guid>
		<description><![CDATA[Android ile uygulama geliştirmeye başlamak için Android SDK indirmeniz gerekiyor. İşletim sisteminize göre bir sürümü indirip açtıktan sonra , windows için Setup.exe kullanadarak linux için ise tools klasörü altında yer alan ./android komutuyla android platform indirmeniz gerekiyor. Şu anda en son sürüm 2.2 (Android dilerseniz tüm platformları dilerseniz sadece ihtiyacınız olan platformu indirebilirsiniz. Platformu indirmek [...]]]></description>
			<content:encoded><![CDATA[<p>Android ile uygulama geliştirmeye başlamak için <a href="http://developer.android.com/sdk/index.html" target="_blank">Android SDK</a> indirmeniz gerekiyor. İşletim sisteminize göre bir sürümü indirip açtıktan sonra , windows için Setup.exe kullanadarak linux için ise tools klasörü altında yer alan ./android komutuyla android platform indirmeniz gerekiyor.</p>
<p>Şu anda <a href="http://developer.android.com/sdk/android-2.2.html" target="_blank">en son sürüm 2.2</a> (Android <img src='http://rayyildiz.com/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> dilerseniz tüm platformları dilerseniz sadece ihtiyacınız olan platformu indirebilirsiniz. Platformu indirmek biraz zaman alabilir.</p>
<p>Bu sırada size tafsiyem UI tasarlayabileniz için <a href="http://www.droiddraw.org/" target="_blank">droiddraw</a> adındaki bir uygulamayı indirmenizdir. Her ne kadar da eclipse için <a href="http://developer.android.com/sdk/eclipse-adt.html" target="_blank">ADT</a> paketi yer alsa da ben droiddraw ı daha çok beğendim. Ayrıca biz örneği <a href="http://www.netbeans.org" target="_blank">netbeans</a> ile geliştireceğiz. Bu yüzden droiddraw ı indirmenizde yarar var. Ayrıca netbeans için geliştirilmiş NBAndroid eklentisini- <a href="http://wiki.netbeans.org/IntroAndroidDevNetBeans" target="_blank">bu adresten yardım alarak</a> veya ÔªøÔªø <a href="http://kenai.com/downloads/nbandroid/updates.xml" target="_blank">http://kenai.com/downloads/nbandroid/updates.xml</a> update adresiyle kurabilirsiniz. Yapmanız gereken netbeans de Tools-&gt;Plugins oradan da Settings de &#8220;Add&#8221; butonuna tıklayarak bu plugini eklemek ve Available Plugins tabında Android diye aratıp bu plugin i kurmaktır.</p>
<p><a href="http://www.rayyildiz.com/wp-content/uploads/2011/02/application_run1.pngwp-content/uploads/2010/06/nbandroid_plugin_install.png" rel="lightbox[174]"><img class="alignnone size-medium wp-image-176" title="nbandroid_plugin_install" src="http://www.rayyildiz.com/wp-content/uploads/2011/02/nbandroid_plugin_install-e1275732394906.png?w=300" alt="" width="300" height="186" /></a></p>
<p>Daha sonra linux için terminalden aşağıdaki komutu- çalıştırıp DroidDraw ı açın. Windows da eğer Java6 kuruluysa, droiddraw ın içindeki droiddraw.jar ı tıklamanız yeterlidir.</p>
<pre class="brush: bash; title: ; notranslate">
rayyildiz@iceface:~/Downloads/developer/droiddraw-r1b14$ sh droiddraw.sh &amp;amp;
</pre>
<p><a href="http://www.rayyildiz.com/wp-content/uploads/2011/02/droiddraw1.png" rel="lightbox[174]"><img class="alignleft size-medium wp-image-179" title="droiddraw" src="http://www.rayyildiz.com/wp-content/uploads/2011/02/droiddraw1.png?w=300" alt="" width="300" height="174" /></a>Droiddraw ile widgets tab ındaki Button u sürükleyip yandaki alana bırakınız. Daha sonra Button&#8217;a tıklayıp Properties tabı na tıklayınız.Burada şu bilgileri değiştirin:</p>
<p>id&#8212;&#8212;&#8211; : <strong>@+id/btnSample</strong></p>
<p>Width : <strong>100px</strong></p>
<p>Text&#8212;- : <strong>Hi</strong></p>
<p>Bunları değiştirip Apply düğmensine basın. Sizde diğer özellikleri bakabilirsiniz. <em>Burada sadece şu aklınızda olsun; Width, height, left margin değerleri gibi yerlerde mutlaka px ekleyin. Yani 100 değil 100px olmalı</em>. Bu işlemleri tamamlayıp Generete tıklanız. Output ekranında aşağıdakine benzer bir xml üretecek. Bu xml sizin UI nı oluşturacaktır.</p>
<pre class="brush: xml; title: ; notranslate">
&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;AbsoluteLayout
android:id=&quot;@+id/widget0&quot;
android:layout_width=&quot;fill_parent&quot;
android:layout_height=&quot;fill_parent&quot;
xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
&amp;gt;
&amp;lt;Button
android:id=&quot;@+id/btnSample&quot;
android:layout_width=&quot;100px&quot;
android:layout_height=&quot;wrap_content&quot;
android:text=&quot;Hi&quot;
android:layout_x=&quot;90px&quot;
android:layout_y=&quot;32px&quot;
&amp;gt;
&amp;lt;/Button&amp;gt;
&amp;lt;/AbsoluteLayout&amp;gt;
</pre>
<p><a href="http://www.rayyildiz.com/wp-content/uploads/2011/02/android_new_project1.png" rel="lightbox[174]"><img class="alignleft size-medium wp-image-182" title="android_new_project" src="http://www.rayyildiz.com/wp-content/uploads/2011/02/android_new_project1.png?w=300" alt="" width="300" height="203" /></a>Netbeans de yeni bir proje açalım. <a href="http://kenai.com/projects/nbandroid" target="_blank">NBAdroid</a> eklentisini kurduysanız, yeni bir proje eklerken Android diye bir kısım yer alacaktır. Daha sorna yandaki gibi proje adı, paket adı, activity adı gibi alanları doldurmanız gerekiyor. İlk kez acıyosanız, Manageplatformu tıklayarak kurulum yaptığınız android klasörünü göstermeniz gerekiyor.</p>
<p>İlk kez projeyi actığınızda, Shift + F10 ile projeyi çalıştırabilirsiniz. Burada android emulator acılıp projenizi yükleyecektir ve ekrana klasik &#8220;Hello World&#8221; yazacaktır.</p>
<p>Şimdi uygulamaya geri dönüp Resources/layouts altında yer alan main.xml- i droiddraw ile üretttiğimiz xml i kopyalayıp yağıştıralım. Bunu yaptıktan sonra uygulamayı bir kere build etmenizde yarar var. Bu işlem sonuda otomatik üretilen R.java dosyasında aşağıaki gibi değişiklikler olacaktır.</p>
<pre class="brush: java; title: ; notranslate">

public final class R {
   public static final class attr { }

   public static final class id {
      public static final int btnSample=0x7f040001;
      public static final int widget0=0x7f040000;
  }

  public static final class layout {
     public static final int main=0x7f020000;
  }

  public static final class string {
     public static final int app_name=0x7f030000;
  }
}
</pre>
<p>Daha sonra aşağıdaki kodu MainActivity.java içine yazınız.</p>
<pre class="brush: java; title: ; notranslate">

@Override
public void onCreate(Bundle icicle) {
   super.onCreate(icicle);
   setContentView(R.layout.main);
   final Button button = (Button) findViewById(R.id.btnSample);
   button.setOnClickListener(new View.OnClickListener() {
      public void onClick(View v) {
         alert(&quot;Hello world&quot;);
      }
   });
}

private void alert(String message){
   new AlertDialog.Builder(this).setTitle(&quot;rayyildiz.com&quot;).setMessage(message).setNeutralButton(&quot;Ok&quot;,
      new DialogInterface.OnClickListener() {
          public void onClick(DialogInterface dialog,int which) { }
      }).show();
}
</pre>
<p>Uygulamayı çalıştırdığınızda şöylşe çalışacaktır:<br />
<a href="http://www.rayyildiz.com/wp-content/uploads/2011/02/application_run1.png" rel="lightbox[174]"><img src="http://www.rayyildiz.com/wp-content/uploads/2011/02/application_run1.png" alt="" title="application_run" width="500" class="alignnone size-full wp-image-187" /></a><br />
<br />
Uygulamanın kaynak kodunu şu adresten indirebilirsiniz.<a href="http://github.com/downloads/rayyildiz/TestProject/AndroidSample1-v1_0.tar.gz">http://github.com/downloads/rayyildiz/TestProject/AndroidSample1-v1_0.tar.gz</a></p>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2010/06/android-icin-uygulama-gelistirme/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Android</title>
		<link>http://rayyildiz.com/2009/02/android/</link>
		<comments>http://rayyildiz.com/2009/02/android/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 17:56:03 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[Mobil Uygulama]]></category>
		<category><![CDATA[android]]></category>

		<guid isPermaLink="false">http://www.rayyildiz.com/?p=23</guid>
		<description><![CDATA[Yeni icatlar hep &#8220;Nasıl?&#8221; sorusunun cevabıymış. Son yıllarda yaşanan teknolojik dev adımları görünce buna hak vermemek mümkün değil. Bilgisayar ilk icat edildiğinde bir odaya bile sığmıyordu. Zamanla mikro bilgisayarların yerini almasıyla ‚Äúteknolojiyi dahada nasıl küçültebiliriz?‚Äù sorusu akıllara gelmeye başladı. Sadece konuşma özelliği bulunan telefonlar acaba nasıl yanımızda taşıyabiliriz sorusu cep telefonlarının icat edilmesiyle sonuçlandı. Bunu [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-24" title="andorid logo" src="http://www.rayyildiz.com/wp-content/uploads/2011/02/logo_android1.gif" alt="andorid logo" width="153" height="55" />Yeni icatlar hep &#8220;Nasıl?&#8221; sorusunun cevabıymış. Son yıllarda yaşanan teknolojik dev adımları görünce buna hak vermemek mümkün değil.<br />
Bilgisayar ilk icat edildiğinde bir odaya bile sığmıyordu. Zamanla mikro bilgisayarların yerini almasıyla ‚Äúteknolojiyi dahada nasıl küçültebiliriz?‚Äù sorusu akıllara gelmeye başladı. Sadece konuşma özelliği bulunan telefonlar acaba nasıl yanımızda taşıyabiliriz sorusu cep telefonlarının icat edilmesiyle sonuçlandı. Bunu takip eden dönemde ise acaba cep telefonlarıyla bilgisayarı nasıl birleştirebiliriz sorusu oldu. Bu sorunun cevabını birkaç yıl önce cevap vermişler, pocket bilgisayar üretildi. Ancak şimdi akıllara gelen soru, cep telefonuna nasıl daha fazla özellik ekleyebiliriz.</p>
<p>İşletim sistemi, bir bilgisayarın ilk çalışmasını sağlayan programdır. Bilgisayar ilk icat edildikten kısa bir süre sonra işletim sisteminin asıl ve tek görevi açılış ve kapanışları cok uzun süren ve oldukça karmaşık işleri yapmasına yönelik gelişitirilmiş programlardır. Ancak zamanla mikro bilgisayarların günlük hayata girmesiyle, işletim sistemleri daha yetenekli olmaya başladılar. Aynı durum cep telefonu içinde gecerli. Cep telefonu için bahsedeceğimiz işletim sistemleri başlarda basit işlevleri yerine getiriyordu, hatta cep telefonu için işletim sistemi tabiri bile tercih edilmiyordu. Ancak gelişen teknolojinin dahada küçülmesi, daha küçük bilgisayar üretmek yerine, herkesde bulunan cep telefonuna bilgisayar özelliği ekleyelim fikri sonucunda, cep telefonları için de işletim sistemi tabiri kullanılmaya başlandı.</p>
<p>Teknolojideki bu gelişmeleri yakından takip eden Google, 2005 yılında Android Inc. Satın alarak bu sektörde de var olduğunu duyurmuş oldu. Gecen sayılarımızda iPhone telefonları yine burada anlatmıştık. Bu gelişmelerden cokda uzak olmayan google, gPhone ile cep telefonları için geliştirilmiş Android işletim sistemiyle karşımızda.</p>
<p><span id="more-23"></span></p>
<p>Android 12 kasım tarihinde duyuruldu. √úrün satmak yerine popularitesini dahada artırma niyetinde olan google, android‚Äôi open source(açık kaynak) yaptı. Bu davranışı bilişim dünyasında ses getirdi ve daha duyurulmasının 2 gün sonrasında google da açılan android grubuna 6000 mesaj düştü. Birde google, en iyi android programı diye actığı yarışma bu kadar popular olmasını etkilemiş olsa gerek, zira bu yarışma 10milyon $ dağıtacağını duyurdu.</p>
<h2><strong>Andorid Özellikleri:</strong></h2>
<p>Android Gelişmiş bir uygulama geliştirme catısını içinde barındırıyor. Bu çatı Dalvika dı verilen bir sanal makina üzerinde çalışarak daha üst katmanlarda daha kolay uygulam gelliştirmeye olanak sunuyor. İçerisinde entegre edilmiş bir browser da barındıran android, verilerin tutulmasına olanak sunacak SQLite içeriyor. MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF gibi medya formatlarını sorunsuz destekleyen android, üzerinde çalıştığı cihaza bağlı olarak 3G, WiFi, Bluetooth, EDGE gibi özellikleri de sorunsz şekilde destekliyor. En çok dikkat çeken özelliği ise belkide Eclipse için geliştirilmiş plugin. Bu sayede eclise üzerinde zengin içerikli uygulama geliştirme cok kolaylaşmış durumda.</p>
<h3><strong>Android Mimarisi</strong></h3>
<p>Bu kadar tanıtımdan sonra android mimarisini inceleyelim.</p>
<h4>Kernel Seviyesi</h4>
<p>Android, linux kernel 2.6 üzerine inşa edildi. Linux kernel 2.6 gerekli sürüclerle desteklenerek oluşturuldu. Bu sürücüler, ekran sürücülerinden wifi sürücüleirne, bluetooth sürücülerinden, tuş takımı sürüclerine kadar hemen hemen ihtiyac duyulan tüm sürücler yüklenmiş durumda. Bunun yanında genel işletim sistemi özellikleri yanında, güç yönetimi, bellek yönetimi de bu seviyede.</p>
<h4>Kütüphaneler</h4>
<p>Android içinde gerekli olan açık kaynak kütüphaneler eklnemyi unutulmamış. Bu kütüphanelerin başlıcaları SGL, SSL, WebKit, Sqlite şeklinde. Bu kütüphaneler daha üst seviyede uygulama catısının temellerini oluşturmak için kullanılıyor. Örneğin bunlardan Sqlite uygulamaların verileri tutabilmesi için minik bir veritabanı olarak görev yapıyor. Aynı şekilde Webkit ise entegre çalışan browser için motor görevini yapıyor.</p>
<h4>Android Runtime</h4>
<p>Bu katman üst katmanların çalışmasını olanak sunacak sanal makina vardır. Bu sanal makina Dalvik adı verilen bir makinedir. Özellikel düşük bellekli makinalar için tasarlanmış olan ve aynı anda birden fazla sanal makinanın çalışmasına olanak sunduğu için google tarafından tercih edilmiştir.<img class="size-medium wp-image-25 alignleft" title="android sistem yapısı" src="http://rayyildiztemp.files.wordpress.com/2009/02/system-architecture.jpg?w=300" alt="android sistem yapısı" width="300" height="215" /> <strong></strong></p>
<p><strong>Uygulama Geliştirme Ortamı:</strong></p>
<p>Bu kısım aslında SDK adını verdiğimiz, android için uygulama geliştirme ortamının adıdır. Yazılan tüm uygualamalar bu çatının üstünde yapılır. Bu sayede alt seviyeye uygulama geliştirme catının izin veridğinin dışında müdahele imkanı ortadan kalkmaktadır. Buda makinanın züerinde daha sağlam uygulamaların yazılması anlamına gelmektedir.<br />
Bu katmanda çok önemli birkaç yapı bulunmaktadır. Bu yapıları incelemeye çalışalım.</p>
<p>‚Ä¢ View System(Görüntü sistemi).: Bu özellik tüm kullanıcıya dönük arabirimlerin oluşturmaya olanak sunan yapıdır. Bu özellik sayesinde kulalnıcı dostu arabirimler hazırlanabilmektedir.</p>
<p>‚Ä¢ Notification Manager: Bu özellik sayesinde çalışır durumdaki uygulamalar ( servis olarak yada arka planda çalışan uygulamalar) durum çubuğunda mesaj gönderme yapabilirler. Bu sayede kullanıcı bilgilendirme yapılmaya olanak sunulmuş olur.</p>
<p>‚Ä¢    Resource Management: Performasn acısından grafiklerin, yazıların yönetimini yapan yapıdır.</p>
<p>‚Ä¢    XMPP Service: Bazı uygulamaların arkaplanda çalışması istenebilir. Bu durumda bu yapıdan yaralanılır.</p>
<p><img class="alignleft size-medium wp-image-26" title="android takvim" src="http://www.rayyildiz.com/wp-content/uploads/2011/02/views_datewidgets_example1_pickdate1.png?w=300" alt="android takvim" width="300" height="207" /> <img class="alignleft size-medium wp-image-27" title="android grid" src="http://rayyildiztemp.files.wordpress.com/2009/02/views_grid_example2.png?w=300" alt="android grid" width="300" height="206" /></p>
<p>Android bu pazarda iddialı olduğunu ilk gün göstermiştir. Gelişen Pazar içinde şirketlerin rekabetleri elbette son kullanıcıya yeni olanaklar sunacaktır. Bu yazımızda bu pazara yeni giren iddialı bir ortamı tanımaya çalıştık. Özellikle google desteğiyle büyük yollar almış görünen bu ortam daha henüz tam manasıyla hazır bile değil. Nitekim uygulama geliştirmek isteyenler ancak emülatörler üzerinde bunu yapabilecekeler, nitekim şu anda sadece gphone üzerine kuruldu, gphone ise tam olarak lansmanı bile yapılan telefon değil henüz en azından Türkiye de. Birgerçek varki google bu sektörde cok iddialı. Bakalım ne tür gelişmeler yaşanacak ileriki günlerde.</p>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2009/02/android/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

