<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Yazar Bozar</title>
	
	<link>http://www.yazarbozar.com</link>
	<description>Geliştiricilerin Buluşma Noktası</description>
	<lastBuildDate>Mon, 14 Mar 2011 04:53:52 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/YazarBozar" /><feedburner:info uri="yazarbozar" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Android OS için Google App Inventor Eğitim Videosu</title>
		<link>http://feedproxy.google.com/~r/YazarBozar/~3/fMEBz59xtRk/</link>
		<comments>http://www.yazarbozar.com/2011/03/14/android-os-icin-google-app-inventor-egitim-videosu/#comments</comments>
		<pubDate>Mon, 14 Mar 2011 04:53:52 +0000</pubDate>
		<dc:creator>kGlz</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[app inventor]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://www.yazarbozar.com/?p=1345</guid>
		<description><![CDATA[Merhaba arkadaşlar.
Bir kaç ay öncesinde Google , Android Os için hiç kod yazmadan programlar  geliştirmeye olanak sağlayan App Inventor aracını kullanıma sundu.App Inventor kullanarak hiç kodlama yapmadan program geliştirmeyi bir videoda anlatmak istedim.Sonuçta aşağıdaki videoyu hazırladım ve siz değerli arkadaşlarıma sunmak istedim.Videoda arkadaşlar App Inventor ile “basit bir program nasıl geliştirilir?” onu anlatmaktayım. Videoyu [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Merhaba arkadaşlar.</p>
<p>Bir kaç ay öncesinde Google , Android Os için hiç kod yazmadan programlar  geliştirmeye olanak sağlayan App Inventor aracını kullanıma sundu.App Inventor kullanarak hiç kodlama yapmadan program geliştirmeyi bir videoda anlatmak istedim.Sonuçta aşağıdaki videoyu hazırladım ve siz değerli arkadaşlarıma sunmak istedim.Videoda arkadaşlar App Inventor ile “basit bir program nasıl geliştirilir?” onu anlatmaktayım. Videoyu tam ekran boyutunda izlemenizi tavsiye ederim.İyi seyirler.</p>
<p style="text-align: center"><a title="Android App Inventor Eğitim Videosu" href="http://www.vimeo.com/20988923" target="_blank">Videoyu izlemek için tıklayın&#8230;</a></p>
<p>Arkadaşlar görüş,öneri ve düşüncelerinizi bekliyorum.Videoyu izlediğiniz için şimdiden teşekkür ederim.<br />
Herkese Kolay gelsin.</p>
<p>kGlz&#8230;</p>
<p>Kadir Gülağız<br />
<a href="http://www.kGlz.com" target="_blank"> www.kGlz.com</a></p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.yazarbozar.com/2011/03/14/android-os-icin-google-app-inventor-egitim-videosu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.yazarbozar.com/2011/03/14/android-os-icin-google-app-inventor-egitim-videosu/</feedburner:origLink></item>
		<item>
		<title>Android OS içinde Veritabanlarıyla Çalışmak</title>
		<link>http://feedproxy.google.com/~r/YazarBozar/~3/uoD00qZIaLc/</link>
		<comments>http://www.yazarbozar.com/2010/12/01/android-os-icinde-veritabanlariyla-calismak/#comments</comments>
		<pubDate>Wed, 01 Dec 2010 05:13:40 +0000</pubDate>
		<dc:creator>kGlz</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Genel]]></category>
		<category><![CDATA[android programlama]]></category>
		<category><![CDATA[SQLite]]></category>

		<guid isPermaLink="false">http://www.yazarbozar.com/?p=1318</guid>
		<description><![CDATA[Herkese merhaba arkadaşlar.Bu makalemizde Android işletim sistemi içinde program geliştirirken , veritabanı yapısını nasıl kullanacağımızı  anlatmaya çalışacağım.Genelde mobil uygulamalarda  çok sık şekilde web servisleri kullanılır ama bazı durumlarda  veri tabanı kullanmamız gerekebilir.Öncelikle Android OS için veritabanı mantığını öğrenelim daha sonra ise  küçük bir örnek programla bilgilerimizi pekiştirmeye çalışalım.Ayrıca yaptığım programımda kodlarını da paylaşacağım böylece kodları [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Herkese merhaba arkadaşlar.Bu makalemizde Android işletim sistemi içinde program geliştirirken , veritabanı yapısını nasıl kullanacağımızı  anlatmaya çalışacağım.Genelde mobil uygulamalarda  çok sık şekilde web servisleri kullanılır ama bazı durumlarda  veri tabanı kullanmamız gerekebilir.Öncelikle Android OS için veritabanı mantığını öğrenelim daha sonra ise  küçük bir örnek programla bilgilerimizi pekiştirmeye çalışalım.Ayrıca yaptığım programımda kodlarını da paylaşacağım böylece kodları bilgisayarınıza indirebilirsiniz.</p>
<p>Arkadaşlar Android OS içinde veritabanı uygulamaları geliştirmek için SQLite  kullanılmaktadır.Siz android uygulamaları geliştirmek için Android SDK’sını kurduğunuzda SQLite desteği de otomatikman gelir. Arkadaşlar  SQLite ‘i kısaca anlatmak gerekirse ,açık kaynak kodlu bir sql sunucu veritabanı motorudur.Yani Mssql,Mysql,Oracle neyse SQLite de onların daha küçük uygulamalar geliştirmek için çıkarılmış bir Sql sunucu motorudur.Eğer SQLite hakkında daha geniş bilgi almak istiyorsanız internette arattırarak binlerce dökümana ulaşabilirsiniz.</p>
<p>Arkadaşlar şimdi örnek bir Android Uygulaması yapalım ve kodların belli başlı yerlerini açıklayarak makalemize devam edelim.Daha sonra ise kodları bilgisayarınıza indirerek detaylı açıklamaları kodlar içinde de bulabilirsiniz.Eclipse IDE’miz içinde <strong>File -&gt; New -&gt; Project -&gt;Android Project</strong> sekmelerini seçelim ve aşağıdaki proje bilgilerini girelim.<strong>OrnekVeriTabani</strong> adında bir android projesi oluşturuyoruz arkadaşlar.Aşağıdaki resimde de görebilirsiniz.<strong>Project Name,Application Name,Package Name,Create Activity,Min SDK Version</strong> alanlarını aşağıdaki şekilde dolduralım.</p>
<p style="text-align: center"><img class="size-full wp-image-1319  aligncenter" src="http://www.yazarbozar.com/wp-content/uploads/2010/11/first.jpg" alt="first" width="450" height="525" /></p>
<p>Arkadaşlar  programımızda bir text kutusuna Ülke isimleri gireceğiz ve veritabanına kaydedeceğiz. Daha sonra ise Ülke isimlerini veritabanından okuyarak bir Spinner kontrolunde göstereceğiz.Bununla ilgili ekran görünümü ise aşağıdaki resimde görülebilir.Bununla ilgili olan tasarımın xml yazımını ise <strong>main.xml </strong>sayfasından bakabilirsiniz arkadaşlar.<span id="more-1318"></span></p>
<table border="0">
<tbody>
<tr>
<td><img class="size-full wp-image-1320 alignleft" src="http://www.yazarbozar.com/wp-content/uploads/2010/11/gorunum.jpg" alt="gorunum" width="280" height="394" /></td>
<td><img class="aligncenter size-full wp-image-1321" src="http://www.yazarbozar.com/wp-content/uploads/2010/11/spinnergorunum.jpg" alt="spinnergorunum" width="280" height="394" /></td>
</tr>
</tbody>
</table>
<p>Şimdi kodları anlatmaya başlayalım. Arkadaşlar projemizde 3 adet java  dosyamızı anlatacağım. Projemizdeki tüm dosyaları  ve klasörleri  aşağıdaki resimde de görebilirsiniz.</p>
<p><img class="aligncenter size-full wp-image-1323" src="http://www.yazarbozar.com/wp-content/uploads/2010/11/projedosyalari.jpg" alt="projedosyalari" width="281" height="326" /></p>
<p><strong>OrnekVeritabani.java </strong> dosyası projemizin ana dosyasıdır.Bu dosyamız içindeki Text kutusuna ülke adını gireceğiz ve “Kaydet” butonuna basılmasıyla ülke veritabanımıza kaydedilecek.”Sil” butonuna basılmasıylada ülke adı veritabanımızdan silinecektir.</p>
<p><strong>SqlHelper.java </strong>dosyamız ise veritabanı bağlantılarımızın yapıldığı ve veritabanınımızın oluşturulduğu dosyamızdır.Android içinde veritabanı uygulaması yaparken entegre SQLite sunucuya erişmek için <strong> “SQLiteOpenHelper” </strong>sınıfından miras alcağız arkadaşlar.Şimdi <strong>SqlHelper.java </strong>dosyamızın kodlarını açıklayalım.</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;">public class SQLHelper extends SQLiteOpenHelper <span style="color: #002200;">&#123;</span>
&nbsp;
	private <span style="color: #a61390;">static</span> final String DATABASENAME<span style="color: #002200;">=</span><span style="color: #bf1d1a;">&quot;ulkeler.db&quot;</span>;
	private <span style="color: #a61390;">static</span>  final <span style="color: #a61390;">int</span> SCHEMA_VERSION<span style="color: #002200;">=</span><span style="color: #2400d9;">1</span>;
&nbsp;
	public SQLHelper<span style="color: #002200;">&#40;</span>Context context<span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
		super<span style="color: #002200;">&#40;</span>context, DATABASENAME, null, SCHEMA_VERSION<span style="color: #002200;">&#41;</span>;
		<span style="color: #11740a; font-style: italic;">// TODO Auto-generated constructor stub</span>
	<span style="color: #002200;">&#125;</span>
&nbsp;
	@Override
	public <span style="color: #a61390;">void</span> onCreate<span style="color: #002200;">&#40;</span>SQLiteDatabase db<span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
		<span style="color: #11740a; font-style: italic;">// TODO Auto-generated method stub</span>
		Cursor c<span style="color: #002200;">=</span>db.rawQuery<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">&quot;select name from sqlite_master where type='table' and name='ulkeler_table'&quot;</span>, null<span style="color: #002200;">&#41;</span>;
		try<span style="color: #002200;">&#123;</span>
		    <span style="color: #a61390;">if</span><span style="color: #002200;">&#40;</span>c.getCount<span style="color: #002200;">&#40;</span><span style="color: #002200;">&#41;</span><span style="color: #002200;">==</span><span style="color: #2400d9;">0</span><span style="color: #002200;">&#41;</span><span style="color: #002200;">&#123;</span>
		    	db.execSQL<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">&quot;CREATE TABLE ulkeler_table(_id INTEGER primary key AUTOINCREMENT,ulke_adi varchar(20));&quot;</span><span style="color: #002200;">&#41;</span>;
		    	   db.execSQL<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">&quot;INSERT INTO ulkeler_table(ulke_adi) VALUES('Türkiye')&quot;</span><span style="color: #002200;">&#41;</span>;
		    	   db.execSQL<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">&quot;INSERT INTO ulkeler_table(ulke_adi) VALUES('Almanya')&quot;</span><span style="color: #002200;">&#41;</span>;
		    	   db.execSQL<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">&quot;INSERT INTO ulkeler_table(ulke_adi) VALUES('İngiltere')&quot;</span><span style="color: #002200;">&#41;</span>;
&nbsp;
		    <span style="color: #002200;">&#125;</span>
		<span style="color: #002200;">&#125;</span>
		finally
		<span style="color: #002200;">&#123;</span>
			c.close<span style="color: #002200;">&#40;</span><span style="color: #002200;">&#41;</span>;
		<span style="color: #002200;">&#125;</span>
	<span style="color: #002200;">&#125;</span>
&nbsp;
	@Override
	public <span style="color: #a61390;">void</span> onUpgrade<span style="color: #002200;">&#40;</span>SQLiteDatabase db, <span style="color: #a61390;">int</span> oldVersion, <span style="color: #a61390;">int</span> newVersion<span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
		<span style="color: #11740a; font-style: italic;">// TODO Auto-generated method stub</span>
	<span style="color: #002200;">&#125;</span>
<span style="color: #002200;">&#125;</span></pre></div></div>

<p>Yukarıda arkadaşlar ilk olarak yapıcı fonksiyon çalışacaktır ve “ulkeler.db” adında bir veritabanı oluşacaktır.Eğer Eclipse IDE içinde  veritabanımızı görmek istersek DDMS paneline girerek “<strong>File Explorer</strong>” klasörler içinde <strong>data-&gt;data</strong> klasörleri içinde “ulkeler.db” veritabanımzın oluştuğunu görebilirsiniz.Yani aşağıdaki gibi.</p>
<p><img class="aligncenter size-full wp-image-1324" src="http://www.yazarbozar.com/wp-content/uploads/2010/11/DDMS.JPG" alt="DDMS" width="610" height="412" /></p>
<p style="text-align: left"><strong>OnCreate() </strong> metodu öncelikle programı ilk çalıştırdığımızda entegre sqlite sunucumuz içindeki“<strong>sqlite_master</strong>”  tablosuna bir sorgu çekmekte.Bu sorguda  “ulkeler_table” diye bir tablo var mı/yok mu? diye bakar.Eğer yoksa “ulkeler_table” adında bir table oluşturur.Ve o table içindeki Field’ lerı oluşturur. Bu field’ler ise aşağıdaki gibidir.</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;">CREATE TABLE ulkeler_table<span style="color: #002200;">&#40;</span>
       _id INTEGER primary key AUTOINCREMENT,
       ulke_adi varchar<span style="color: #002200;">&#40;</span><span style="color: #2400d9;">20</span><span style="color: #002200;">&#41;</span><span style="color: #002200;">&#41;</span>;</pre></div></div>

<p>Bu yapıda “ulkeler_table” tablosu oluşturulur. Ve hemen altında  veritabanımızın “execSQL”  fonksiyonu ile tablomuz ilk oluşturuldğunda 3 tanede veri kaydı yapılacağını söyleyebiliriz.</p>
<p><strong>SqlQueryHelper.java</strong> dosyamızda ise arkadaşlar  kaydetme  ve  silme işlemleri için aşağıdaki kodlar kullanılır.</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;">public <span style="color: #a61390;">int</span> onSave<span style="color: #002200;">&#40;</span>SQLiteDatabase db<span style="color: #002200;">&#41;</span><span style="color: #002200;">&#123;</span>
		try
		<span style="color: #002200;">&#123;</span>
			ContentValues cv<span style="color: #002200;">=</span>new ContentValues<span style="color: #002200;">&#40;</span><span style="color: #002200;">&#41;</span>;
			cv.put<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">&quot;ulke_adi&quot;</span>,this.ulke_adi<span style="color: #002200;">&#41;</span>;
			db.insert<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">&quot;ulkeler_table&quot;</span>, null, cv<span style="color: #002200;">&#41;</span>;
			<span style="color: #a61390;">return</span> <span style="color: #2400d9;">1</span>;
			<span style="color: #002200;">&#125;</span>
		catch <span style="color: #002200;">&#40;</span>Exception e<span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
			<span style="color: #a61390;">return</span> <span style="color: #2400d9;">0</span>;
		<span style="color: #002200;">&#125;</span>
	<span style="color: #002200;">&#125;</span>
&nbsp;
public <span style="color: #a61390;">int</span> onDelete<span style="color: #002200;">&#40;</span>SQLiteDatabase db,String ulkead<span style="color: #002200;">&#41;</span><span style="color: #002200;">&#123;</span>
			try
			<span style="color: #002200;">&#123;</span>
		      db.delete<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">&quot;ulkeler_table&quot;</span>,<span style="color: #bf1d1a;">&quot;ulke_adi='&quot;</span><span style="color: #002200;">+</span>ulkead<span style="color: #002200;">+</span><span style="color: #bf1d1a;">&quot;'&quot;</span>,null<span style="color: #002200;">&#41;</span>;
			  <span style="color: #a61390;">return</span> <span style="color: #2400d9;">1</span>;
			<span style="color: #002200;">&#125;</span>
		catch <span style="color: #002200;">&#40;</span>Exception e<span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
			    <span style="color: #a61390;">return</span> <span style="color: #2400d9;">0</span>;
	     	<span style="color: #002200;">&#125;</span>
	<span style="color: #002200;">&#125;</span></pre></div></div>

<p><strong>OnSave</strong> fonksiyonunda sqlite veritabanımıza ulke_adi field’ine clasımızdaki ulke_adi string değişkenimizin değerini atıyoruz ve tablomuza insert ediyoruz.<strong>OnDelete</strong> fonksiyonumuzda ise delete işlemini yapacağımız tabloyu belirtiyoruz ve hangi alandaki kritere göre silineceğini belirtiyoruz.Bir nevi normal sql sorgusu yazarken where işleminden sonraki kısmını yazıyoruz şeklinde açıklayabiliz.</p>
<p>Evet Arkadaşlar  programımızdaki bazı kodları yukarıda açıklamaya çalıştım.Tüm kodları incelerseniz kafanızda daha net bir şekil oluşacaktır.Zaten daha başka bir programlama dilinde  herhangi bir veritabanı uygulaması geliştirdiyseniz , kodlarıma bakarak Android OS içinde de veritabanı mantığını çok kolay şekilde anlayabilirsiniz. Sizlere bişey öğretebilmişsem ne mutlu bana J .Tabiki makalemle ilgili olarak öneri-düşünce-eleştirilerinizi bekliyorum arkadaşlar.İnşallah makalemi beğenirsiniz.</p>
<p>Programımın tüm kodlarını indirmek için <a href="http://www.kGlz.com/Download/OrnekVeriTabani.rar" target="_blank">tıklayın.</a></p>
<p>Android konusunda faklı programlarımı ve paylaştığım kodları benim <a href="http://www.kGlz.com/?page_id=154" target="_blank">web sitemi ziyaret ederekte inceleyebilirsiniz.</a> Herkese kolay gelsin.</p>
<p>kGlz…</p>
<p>Kadir Gülağız</p>
<p><a href="http://www.kGlz.com/" target="_blank">www.kGlz.com</a></p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.yazarbozar.com/2010/12/01/android-os-icinde-veritabanlariyla-calismak/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.yazarbozar.com/2010/12/01/android-os-icinde-veritabanlariyla-calismak/</feedburner:origLink></item>
		<item>
		<title>Android C2DM ile push messaging</title>
		<link>http://feedproxy.google.com/~r/YazarBozar/~3/DfldFJgRyio/</link>
		<comments>http://www.yazarbozar.com/2010/09/21/android-c2dm-ile-push-messaging/#comments</comments>
		<pubDate>Tue, 21 Sep 2010 18:22:03 +0000</pubDate>
		<dc:creator>Sezer Yeşiltaş</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Genel]]></category>
		<category><![CDATA[c2dm]]></category>
		<category><![CDATA[push messaging]]></category>

		<guid isPermaLink="false">http://www.yazarbozar.com/?p=1283</guid>
		<description><![CDATA[
C2DM nedir?
Google’un Android uygulamaları için geliştirdiği bir mesajlaşma sistemidir. Açılımı: Cloud to Device Messaging.
Push Notification olarak da bilinen bu tip mesaj gönderme teknolojilerine Blackberry ve iPhone’dan da aşinayız. Android de 2.2 froyo sürümü ile bu kervana katılmış oldu.
Google bu teknolojiyi, gmail ve kontak senkronizasyonu için uzun zamandır zaten kullanıyordu, 2.2 ile birlikte yaptıkları şey teknolojiyi [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-1294" title="froyo" src="http://www.yazarbozar.com/wp-content/uploads/2010/09/froyo.jpg" alt="froyo" width="200" height="200" /></p>
<h2>C2DM nedir?</h2>
<p>Google’un Android uygulamaları için geliştirdiği bir mesajlaşma sistemidir. Açılımı: Cloud to Device Messaging.<br />
Push Notification olarak da bilinen bu tip mesaj gönderme teknolojilerine Blackberry ve iPhone’dan da aşinayız. Android de 2.2 froyo sürümü ile bu kervana katılmış oldu.<br />
Google bu teknolojiyi, gmail ve kontak senkronizasyonu için uzun zamandır zaten kullanıyordu, 2.2 ile birlikte yaptıkları şey teknolojiyi developerlara açmak olmuş.</p>
<p>Android gibi yetenekli bir cihaz ile C2DM kullanarak yapılabilecekler hayal gücüyle sınırlı. Mesela Google ileride web üzerinden seçtiğimiz bir uygulamayı C2DM ile anında telefona kurulmasını sağlayabilecek ya da şu anda örneği de bulunan <a href="http://code.google.com/p/chrometophone/">bir chrome extension</a>&#8216;ı sayesinde pc&#8217;de gezinirken beğendiğimiz bir sitenin anında cihazda da açılmasını sağlayabiliyoruz.  </p>
<h2>C2DM ne işe yarar?</h2>
<p>C2DM 1024 karakterlik mesaj göndermeyle sınırlı ancak mesajımızı telefona ilettikten sonra yapılabilecekler Android platformunun yeteneklerine kalıyor. Bir senkronizasyon işlemi başlatabilir, mesajın içinde gönderilecek bir video linkini anında oynatmaya başlayabilir, istediğiniz bir programı (telefon görüşmesi, sms gönderme dahil) başlatabilir, telefonunuzdaki herhangi bir ayarı değiştirebilir, lokasyon servisine erişebilir ve şu an aklıma gelmeyen bir çok şey daha yapabilirsiniz</p>
<p>Android’te zaten sorunsuz olarak background servisleri yazabiliyorduk, periyodik olarak bir sunucuya bağlanıp data çekme imkanımız vardı hatta Android’in socket programming için de bir kısıtlaması bulunmuyor. Peki o zaman neden C2DM’e ihtiyaç duyayım diyor olabilirsiniz. C2DM’in en önemli özelliği  cihaz performansını, pil süresini kısaca kullanıcı deneyimini arttırması denebilir:</p>
<ul>
<li>C2DM sayesinde kullanıcıların pil sorununu biraz azalacak gibi görünüyor. Mesela aynı anda 5 uygulama background servis olarak sürekli data çekiyor ya da port dinliyor durumda olursa kaynaklar verimsiz kullanılacak ve pil tüketimi artacaktır. Oysa C2DM ile sadece bir sistem background servisi tüm push mesajlarını dinliyor ve ilgili uygulamaları ayağa kaldırıyor ve kaynaklar daha verimli kullanılıyor olacak.</li>
<li>C2DM ile kullanıcıların istem dışı mesaj almasının da önüne geçilebilecek. Sadece yetki verdiği uygulamalardan mesaj alacak böylece mesajlar yüzünden uygulamayı silmek zorunda kalmayacak.</li>
</ul>
<h2>C2DM kullanımı</h2>
<p>Bu bölümde servisi nasıl kullanacağımızı anlatmaya çalışacağım, <a href="http://code.google.com/android/c2dm/index.html">Android&#8217;in dökümanlarına</a> bakarak ve yaptığım denemelerle edindiğim bilgi ve tecrübeyi paylaşmaya çalışacağım.</p>
<p>Öncelikle developer olarak, gmail hesabımız ile signup formu dolduruyoruz:  http://code.google.com/android/c2dm/signup.html sonra onay maili bekliyoruz.</p>
<p><strong>C2DM kullanımında üç adet ortam kendi aralarında haberleşiyor durumdadır.</strong></p>
<ul>
<li>Bunlardan birisi Android işletim sistemli cihaz,</li>
<li>diğeri sizin geliştirdiğiniz bir sunucu yazılımı,</li>
<li>üçüncüsü ise  Google’ın C2DM sunucusu.</li>
</ul>
<p><strong>Haberleşme esnasında kullanılan değişkenler:</strong></p>
<ul>
<li>Sender: Mesaj gönderme için google’ın onay verdiği geliştiricinin email adresi.</li>
<li>Authorization id : Android’e mesaj gönderecek olan sunucunun bu işi yapabilmesi için yetkiye ihtiyacı var. Yoksa önüne gelen sizin google hesabınızla (sender) cihazlara mesaj gönderebilir. Bunun için bir authorization id oluşturmanız lazım.</li>
<li>Registration id: Mesajları alacak olan her Android cihaz için oluşturulan bir id. Bu id’yi kullanarak istediğiniz cihaza mesaj gönderebileceksiniz.</li>
</ul>
<p><strong>Haberleşme dört adımda gerçekleşiyor.</strong></p>
<ol>
<li>Google’dan kendi hesabınız için yetki alma (Authorization)</li>
<li>Android uygulaması ilk çalıştığında yapılacak bir registration işlemi</li>
<li>Sunucudan cihaza mesaj gönderme</li>
<li>Cihazdan mesajı alıp kullanıcıya göstermek.</li>
</ol>
<p>Her bir adımı nasıl kodlayacağımızdan bahsetmek gerekirse:</p>
<p><strong>Google’dan kendi hesabınız için yetki alma (Authorization)</strong><br />
Sender email adresini ve şifresini kullanarak ve bunu bir sefer yapıp bir authorization id oluşturuyoruz. Bu id’yi sunucumuza kaydediyoruz. Sonra mesaj atarken bu id’yi kullanacağız.</p>
<p style="text-align: center; "><img class="aligncenter size-full wp-image-1289" title="c2dm1" src="http://www.yazarbozar.com/wp-content/uploads/2010/09/c2dm1.png" alt="c2dm1" width="659" height="466" /></p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">HttpClient client <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> DefaultHttpClient<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
HttpPost postRequest <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> HttpPost<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;https://www.google.com/accounts/ClientLogin&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003399;">List</span> nameValuePairs <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">ArrayList</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
nameValuePairs.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> BasicNameValuePair<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;accountType&quot;</span>,<span style="color: #0000ff;">&quot;GOOGLE&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
nameValuePairs.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> BasicNameValuePair<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Email&quot;</span>,senderEmail<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
nameValuePairs.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> BasicNameValuePair<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Passwd&quot;</span>,<span style="color: #0000ff;">&quot;xxxxx&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
nameValuePairs.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> BasicNameValuePair<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;service&quot;</span>,<span style="color: #0000ff;">&quot;ac2dm&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
nameValuePairs.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> BasicNameValuePair<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;source&quot;</span>,<span style="color: #0000ff;">&quot;Uygulama&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
   postRequest.<span style="color: #006633;">setEntity</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> UrlEncodedFormEntity<span style="color: #009900;">&#40;</span>nameValuePairs<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   postRequest.<span style="color: #006633;">setHeader</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Content-Type&quot;</span>, <span style="color: #0000ff;">&quot;application/x-www-form-urlencoded&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   HttpResponse response <span style="color: #339933;">=</span> client.<span style="color: #006633;">execute</span><span style="color: #009900;">&#40;</span>postRequest<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
   <span style="color: #003399;">InputStream</span> inputStream  <span style="color: #339933;">=</span> response.<span style="color: #006633;">getEntity</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getContent</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #003399;">BufferedReader</span> rd <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">BufferedReader</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">InputStreamReader</span><span style="color: #009900;">&#40;</span>inputStream<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #003399;">String</span> line<span style="color: #339933;">;</span>
   <span style="color: #000000; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>line <span style="color: #339933;">=</span> rd.<span style="color: #006633;">readLine</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      Log.<span style="color: #006633;">d</span><span style="color: #009900;">&#40;</span>TAG,<span style="color: #0000ff;">&quot;:&quot;</span><span style="color: #339933;">+</span>line<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #009900;">&#125;</span>
   client.<span style="color: #006633;">getConnectionManager</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">closeExpiredConnections</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">IOException</span> e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
   client.<span style="color: #006633;">getConnectionManager</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">closeExpiredConnections</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   e.<span style="color: #006633;">printStackTrace</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><strong>Registration:</strong><br />
Android uygulamamız ilk kez çalıştığında registration işlemi yapan bir bölüm kodlamamız gerekiyor.</p>
<ul>
<li>C2DM servera signup olduğunuz gmail hesabınız (buna sender id deniyor) ve application id ile C2DM’e register oluyoruz.</li>
<li>C2DM server asenkron olarak bizim uygulamamıza özel bir broadcast yapıyor, bunu receive ediyor ve uygulamamızın üzerinde çalıştığı cihaza özel olan registration id’ye ulaşıyoruz.  </li>
<li>Son olarak registration id’yi kendi sunucumuza gönderiyor ve orada da saklanmasını sağlıyoruz.</li>
</ul>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1290" title="c2dm2" src="http://www.yazarbozar.com/wp-content/uploads/2010/09/c2dm2.png" alt="c2dm2" width="731" height="494" /></p>
<p>Register işlemini başlattığımız kod code:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">void</span> register<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
   Intent registrationIntent <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Intent<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;com.google.android.c2dm.intent.REGISTER&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   registrationIntent.<span style="color: #006633;">putExtra</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;app&quot;</span>, PendingIntent.<span style="color: #006633;">getBroadcast</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #000000; font-weight: bold;">new</span> Intent<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>, <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   registrationIntent.<span style="color: #006633;">putExtra</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;sender&quot;</span>, emailOfSender<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   startService<span style="color: #009900;">&#40;</span>registrationIntent<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Kullanıcıya unregister hakkı vermek lazım, bunun için:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">void</span> unregister<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
   Intent unregIntent <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Intent<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;com.google.android.c2dm.intent.UNREGISTER&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   unregIntent.<span style="color: #006633;">putExtra</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;app&quot;</span>, PendingIntent.<span style="color: #006633;">getBroadcast</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #000000; font-weight: bold;">new</span> Intent<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>, <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   startService<span style="color: #009900;">&#40;</span>unregIntent<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Google ilettiği registartion id&#8217;yi almak için yazdığımız Receiver&#8217;ın kodu:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> C2DMReceiver <span style="color: #000000; font-weight: bold;">extends</span> BroadcastReceiver <span style="color: #009900;">&#123;</span>
   <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #003399;">String</span> TAG <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;C2DMReceiver&quot;</span><span style="color: #339933;">;</span>
&nbsp;
   <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onReceive<span style="color: #009900;">&#40;</span><span style="color: #003399;">Context</span> context, Intent intent<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>intent.<span style="color: #006633;">getAction</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">equals</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;com.google.android.c2dm.intent.REGISTRATION&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         handleRegistration<span style="color: #009900;">&#40;</span>context, intent<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
   <span style="color: #009900;">&#125;</span>
&nbsp;
   <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">void</span> handleRegistration<span style="color: #009900;">&#40;</span><span style="color: #003399;">Context</span> context, Intent intent<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #003399;">String</span> registration <span style="color: #339933;">=</span> intent.<span style="color: #006633;">getStringExtra</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;registration_id&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>intent.<span style="color: #006633;">getStringExtra</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;error&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         Log.<span style="color: #006633;">d</span><span style="color: #009900;">&#40;</span>TAG, <span style="color: #0000ff;">&quot;error: &quot;</span> <span style="color: #339933;">+</span> intent.<span style="color: #006633;">getStringExtra</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;error&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>intent.<span style="color: #006633;">getStringExtra</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;unregistered&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         <span style="color: #666666; font-style: italic;">// kendi sunucumuza registration_id'yi sileceğiz...</span>
      <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>registration <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         <span style="color: #666666; font-style: italic;">// kendi sunucumuza registration_id'yi gonderecegiz...</span>
      <span style="color: #009900;">&#125;</span>
   <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Google periyodik olarak registration id’yi değiştirip broadcast edecek. Bu nedenle receiver periyodik olarak çalışacaktır, önemli olan bu registration id her değiştiğinde kendi serverımıza iletip kayıt altında tutmaktır. Yoksa o kullanıcıya mesajımızı iletemeyiz.</p>
<p><strong>Cihaza mesaj gönderme:</strong></p>
<p>Geliştireceğimiz server uygulaması daha önce aldığımız ve server tarafta kayıt altında tuttuğumuz authorizationId ve registrationId bilgilerini kullanarak cihaza mesaj gönderebilecektir.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1291" title="c2dm3" src="http://www.yazarbozar.com/wp-content/uploads/2010/09/c2dm3.png" alt="c2dm3" width="681" height="474" /></p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #003399;">String</span> sendMessage<span style="color: #009900;">&#40;</span>registrationId,authorizationId,data<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
   <span style="color: #003399;">String</span> retStr <span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
   <span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
&nbsp;
      <span style="color: #003399;">String</span> registrationId <span style="color: #339933;">=</span> registrationId<span style="color: #339933;">;</span>
      <span style="color: #003399;">String</span> collapseKey <span style="color: #339933;">=</span> <span style="color: #003399;">URLEncoder</span>.<span style="color: #006633;">encode</span><span style="color: #009900;">&#40;</span>data, <span style="color: #0000ff;">&quot;UTF-8&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
      <span style="color: #003399;">URL</span> url <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">URL</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;https://android.apis.google.com/c2dm/send&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #003399;">HttpURLConnection</span> connection <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">HttpURLConnection</span><span style="color: #009900;">&#41;</span> url.<span style="color: #006633;">openConnection</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      connection.<span style="color: #006633;">setDoOutput</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      connection.<span style="color: #006633;">setRequestMethod</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;POST&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      connection.<span style="color: #006633;">setRequestProperty</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Authorization&quot;</span>, <span style="color: #0000ff;">&quot;GoogleLogin auth=&quot;</span><span style="color: #339933;">+</span>authorizationId<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #003399;">OutputStreamWriter</span> writer <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">OutputStreamWriter</span><span style="color: #009900;">&#40;</span>connection.<span style="color: #006633;">getOutputStream</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      writer.<span style="color: #006633;">write</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;registration_id=&quot;</span> <span style="color: #339933;">+</span> registrationId<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      writer.<span style="color: #006633;">write</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;&amp;amp;collapse_key=&quot;</span> <span style="color: #339933;">+</span> collapseKey<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      writer.<span style="color: #006633;">write</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;&amp;amp;data.SERVER_MESSAGE=&quot;</span> <span style="color: #339933;">+</span> data<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      writer.<span style="color: #006633;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
      <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>connection.<span style="color: #006633;">getResponseCode</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #003399;">HttpURLConnection</span>.<span style="color: #006633;">HTTP_OK</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         <span style="color: #003399;">InputStream</span> is <span style="color: #339933;">=</span> connection.<span style="color: #006633;">getInputStream</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         <span style="color: #000066; font-weight: bold;">byte</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> buffer <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">byte</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1024</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
         <span style="color: #000066; font-weight: bold;">int</span> bytesRead <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
&nbsp;
         <span style="color: #000000; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>bytesRead <span style="color: #339933;">=</span> is.<span style="color: #006633;">read</span><span style="color: #009900;">&#40;</span>buffer<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span>
            retStr <span style="color: #339933;">=</span> retStr <span style="color: #339933;">+</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">String</span><span style="color: #009900;">&#40;</span>buffer, <span style="color: #cc66cc;">0</span>, bytesRead<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
         retStr <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;error&quot;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
   <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">MalformedURLException</span> e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      e.<span style="color: #006633;">printStackTrace</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">IOException</span> e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
   e.<span style="color: #006633;">printStackTrace</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">return</span> retStr<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><strong>Cihazdan gönderilen mesajı alma:</strong></p>
<p>Android tarafında Registration Id’yi alabilmek için yazdığımız receiver’a c2dm mesajını da alabileceğimiz kodları ekliyoruz. CD2DMReceiver class’ının son hali şu şekilde olmalı:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> C2DMReceiver <span style="color: #000000; font-weight: bold;">extends</span> BroadcastReceiver <span style="color: #009900;">&#123;</span>
   <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #003399;">String</span> TAG <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;C2DMReceiver&quot;</span><span style="color: #339933;">;</span>
&nbsp;
   <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onReceive<span style="color: #009900;">&#40;</span><span style="color: #003399;">Context</span> context, Intent intent<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>intent.<span style="color: #006633;">getAction</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">equals</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;com.google.android.c2dm.intent.REGISTRATION&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         handleRegistration<span style="color: #009900;">&#40;</span>context, intent<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>intent.<span style="color: #006633;">getAction</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">equals</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;com.google.android.c2dm.intent.RECEIVE&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         handleMessage<span style="color: #009900;">&#40;</span>context, intent<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
   <span style="color: #009900;">&#125;</span>
&nbsp;
   <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">void</span> handleRegistration<span style="color: #009900;">&#40;</span><span style="color: #003399;">Context</span> context, Intent intent<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #003399;">String</span> registration <span style="color: #339933;">=</span> intent.<span style="color: #006633;">getStringExtra</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;registration_id&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>intent.<span style="color: #006633;">getStringExtra</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;error&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         Log.<span style="color: #006633;">d</span><span style="color: #009900;">&#40;</span>TAG, <span style="color: #0000ff;">&quot;error: &quot;</span> <span style="color: #339933;">+</span> intent.<span style="color: #006633;">getStringExtra</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;error&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>intent.<span style="color: #006633;">getStringExtra</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;unregistered&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         <span style="color: #666666; font-style: italic;">// kendi sunucumuzdan registration_id'yi sileceğiz...</span>
      <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>registration <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         <span style="color: #666666; font-style: italic;">// kendi sunucumuza registration_id'yi gonderecegiz...</span>
      <span style="color: #009900;">&#125;</span>
   <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
   <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">void</span> handleMessage<span style="color: #009900;">&#40;</span><span style="color: #003399;">Context</span> context, Intent intent<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #003399;">String</span> message <span style="color: #339933;">=</span> intent.<span style="color: #006633;">getExtras</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getString</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SERVER_MESSAGE&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      Log.<span style="color: #006633;">d</span><span style="color: #009900;">&#40;</span>TAG, <span style="color: #0000ff;">&quot;message: &quot;</span> <span style="color: #339933;">+</span> message<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Yazdığımız bu Broadcast recevier’ın sağlıklı çalışabilmesi için manifest dosyasında aşağıdaki permission ve receiver tanımlarının  yapılması gerekiyor:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;manifest</span> <span style="color: #000066;">xmlns:android</span>=<span style="color: #ff0000;">&quot;http://schemas.android.com/apk/res/android&quot;</span> <span style="color: #000066;">package</span>=<span style="color: #ff0000;">&quot;com.example.android.c2dm&quot;</span>  <span style="color: #000066;">android:versionCode</span>=<span style="color: #ff0000;">&quot;1&quot;</span> <span style="color: #000066;">android:versionName</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;permission</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;com.example.android.c2dm.permission.C2D_MESSAGE&quot;</span> <span style="color: #000066;">android:protectionLevel</span>=<span style="color: #ff0000;">&quot;signature&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;uses-permission</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;com.example.android.c2dme.permission.C2D_MESSAGE&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;uses-permission</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;com.google.android.c2dm.permission.RECEIVE&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;application</span> <span style="color: #000066;">android:icon</span>=<span style="color: #ff0000;">&quot;@drawable/icon&quot;</span> <span style="color: #000066;">android:label</span>=<span style="color: #ff0000;">&quot;@string/app_name&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;receiver</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;.C2DMReceiver&quot;</span> <span style="color: #000066;">android:permission</span>=<span style="color: #ff0000;">&quot;com.google.android.c2dm.permission.SEND&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
          <span style="color: #808080; font-style: italic;">&lt;!-- Receive the actual message --&gt;</span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;intent-filter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;com.google.android.c2dm.intent.RECEIVE&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;category</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot; com.example.android.c2dm&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span> 
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/intent-filter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
          <span style="color: #808080; font-style: italic;">&lt;!-- Receive the registration id --&gt;</span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;intent-filter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;com.google.android.c2dm.intent.REGISTRATION&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
              <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;category</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;com.example.android.c2dm&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/intent-filter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/receiver<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
.
.
.
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/application<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/manifest<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>



<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.yazarbozar.com/2010/09/21/android-c2dm-ile-push-messaging/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.yazarbozar.com/2010/09/21/android-c2dm-ile-push-messaging/</feedburner:origLink></item>
		<item>
		<title>Smartface Designer’da Aritmetik İşlemler</title>
		<link>http://feedproxy.google.com/~r/YazarBozar/~3/R8aEWk1RFtc/</link>
		<comments>http://www.yazarbozar.com/2010/07/18/smartface-designerda-aritmetik-islemler/#comments</comments>
		<pubDate>Sun, 18 Jul 2010 14:31:17 +0000</pubDate>
		<dc:creator>sadeceengin</dc:creator>
				<category><![CDATA[Geliştirme Araçları]]></category>
		<category><![CDATA[Genel]]></category>
		<category><![CDATA[Smartface Designer]]></category>
		<category><![CDATA[aritmetik işlem]]></category>
		<category><![CDATA[mobil uygulama]]></category>
		<category><![CDATA[mobile application]]></category>
		<category><![CDATA[smartface]]></category>
		<category><![CDATA[smartface designer]]></category>

		<guid isPermaLink="false">http://www.yazarbozar.com/?p=1090</guid>
		<description><![CDATA[Merhaba. Bu yazımda sizlere Smartface designer’da aritmetik işlemlerden bahsedeceğim.
Smartface Designer’da Actions Editor  paletinde “Util” sekmesi altında bulunan “Arithmetic Operations” action’ını bir örnek uygulama yaparak açıklamak istiyorum.

Bu örnekte mini bir stok takip programı yapacağız. Depodaki ürün adedini bir edit box’a girip, bu girilen değeri bir label’da tutacağız. Sonraki girilen değerleri de bu label’daki değerin üstüne ekleyeceğiz.
Öncelikle [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Merhaba. Bu yazımda sizlere Smartface designer’da aritmetik işlemlerden bahsedeceğim.</p>
<p>Smartface Designer’da Actions Editor  paletinde “Util” sekmesi altında bulunan “Arithmetic Operations” action’ını bir örnek uygulama yaparak açıklamak istiyorum.</p>
<p><img class="alignnone size-full wp-image-1092" src="http://www.yazarbozar.com/wp-content/uploads/2010/07/12.jpg" alt="1" width="545" height="578" /></p>
<p>Bu örnekte mini bir stok takip programı yapacağız. Depodaki ürün adedini bir edit box’a girip, bu girilen değeri bir label’da tutacağız. Sonraki girilen değerleri de bu label’daki değerin üstüne ekleyeceğiz.</p>
<p>Öncelikle edit box’ımızı ve label’ımızı oluşturalım. Bir de bu toplama işlemlerini gerçekleştirebilmek için butona ihtiyacımız olacak.</p>
<p>Aritmetik işlemleri edit box’ımıza değer girildikten ve butona basıldıktan sonra gerçekleştireceğiz. Bu yüzden action editor’den objemizi buton, event’imizi de OnPressed olarak seçiyoruz.</p>
<p><img class="alignnone size-full wp-image-1096" src="http://www.yazarbozar.com/wp-content/uploads/2010/07/33.jpg" alt="3" width="545" height="578" /></p>
<p>İlk parametremizi edit box’a girilen değer olarak atadık.</p>
<p><img class="alignnone size-full wp-image-1097" src="http://www.yazarbozar.com/wp-content/uploads/2010/07/42.jpg" alt="4" width="315" height="240" /></p>
<p><img class="alignnone size-full wp-image-1098" src="http://www.yazarbozar.com/wp-content/uploads/2010/07/51.jpg" alt="5" width="272" height="173" /></p>
<p>Şimdi Operand’ı ve ikinci parametreyi de giriyoruz. Operand’ımız toplama işlemi yapacağımızdan “+”, ikinci parametre de label’ımızın text değeri olacak.</p>
<p><img class="alignnone size-full wp-image-1099" src="http://www.yazarbozar.com/wp-content/uploads/2010/07/61.jpg" alt="6" width="545" height="578" /></p>
<p>Burada dikkat etmemiz gereken önemli bir nokta var. Label’lar oluşturulurken default olarak “Label”  yazısı üstlerinde gelir. Biz de label’ların değerini okuyup edit box’a girilen sayıyı ekleyeceğimiz için, label’ın ilk değerini 0(sıfır) olarak değiştiriyoruz.</p>
<p><img class="alignnone size-full wp-image-1102" src="http://www.yazarbozar.com/wp-content/uploads/2010/07/23.jpg" alt="2" width="360" height="466" /></p>
<p>Şimdi sonucu tekrar label’ın üzerine yazdıralım. Bu işlemi parametrelerin hemen altında “Assign”  kısmından yapacağız.</p>
<p><img class="alignnone size-full wp-image-1103" src="http://www.yazarbozar.com/wp-content/uploads/2010/07/71.jpg" alt="7" width="315" height="240" /></p>
<p>Uygulamamızı çalıştırdığımızda önce edit box’a bir değer girip sonra da butona bastığımızda toplama işlemini gerçekleştirmiş olacağız.</p>
<p><img class="alignleft size-full wp-image-1104" src="http://www.yazarbozar.com/wp-content/uploads/2010/07/81.jpg" alt="8" width="297" height="672" /><img class="size-full wp-image-1105 alignnone" src="http://www.yazarbozar.com/wp-content/uploads/2010/07/91.jpg" alt="9" width="297" height="672" /></p>
<p>Her türlü sorunuz için <span style="color: #ff0000">sadeceengin [at] gmail.com</span> &#8216;a mail atabilirsiniz.</p>
<p>Engin YILDIZ</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.yazarbozar.com/2010/07/18/smartface-designerda-aritmetik-islemler/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.yazarbozar.com/2010/07/18/smartface-designerda-aritmetik-islemler/</feedburner:origLink></item>
		<item>
		<title>SmartFace Designer’da Condition Kullanımı</title>
		<link>http://feedproxy.google.com/~r/YazarBozar/~3/fCjfLqzV1ag/</link>
		<comments>http://www.yazarbozar.com/2010/07/18/smartface-designerda-condition-kullanimi/#comments</comments>
		<pubDate>Sun, 18 Jul 2010 14:31:11 +0000</pubDate>
		<dc:creator>sadeceengin</dc:creator>
				<category><![CDATA[Geliştirme Araçları]]></category>
		<category><![CDATA[Genel]]></category>
		<category><![CDATA[Smartface Designer]]></category>
		<category><![CDATA[condition]]></category>
		<category><![CDATA[mobil uygulama]]></category>
		<category><![CDATA[mobile application]]></category>
		<category><![CDATA[nested loop]]></category>
		<category><![CDATA[smartface]]></category>
		<category><![CDATA[smartface designer]]></category>

		<guid isPermaLink="false">http://www.yazarbozar.com/?p=951</guid>
		<description><![CDATA[Merhaba. Sizlere Smartface Designer’da condition’lardan ve aritmetik işlemlerden bahsetmek istiyorum. Condition&#8217;lar;  true/false (yanlış/doğru) karşılaştırması yapıp buradan çıkacak sonuçlara göre yazdığımız kodu, geliştirdiğimiz uygulamayı belirli doğrultulara yönlendirmemizi sağlar. Java’da;

if&#40;x==2&#41;&#123;
  x=x+1;
&#125;else &#123;
  x=y;
&#125;

şeklinde bir kod parçacığı yazdığımızda, if parantezinin içindeki “condition” doğruysa “x=x+1” işlemi gerçekleştirilecek; eğer yanlışsa “else”  kısmına girip “x=y” işlemi gerçekleştirilecektir. Smartface Designer [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Merhaba. Sizlere Smartface Designer’da condition’lardan ve aritmetik işlemlerden bahsetmek istiyorum. Condition&#8217;lar;  true/false (yanlış/doğru) karşılaştırması yapıp buradan çıkacak sonuçlara göre yazdığımız kodu, geliştirdiğimiz uygulamayı belirli doğrultulara yönlendirmemizi sağlar. Java’da;</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>x<span style="color: #339933;">==</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  x<span style="color: #339933;">=</span>x<span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
  x<span style="color: #339933;">=</span>y<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>şeklinde bir kod parçacığı yazdığımızda, if parantezinin içindeki “condition” doğruysa “x=x+1” işlemi gerçekleştirilecek; eğer yanlışsa “else”  kısmına girip “x=y” işlemi gerçekleştirilecektir. Smartface Designer kullanan bir kişi, hiç bir programlama dili bilmese bile çok rahat bir şekilde bu conditionları yönetebilecektir.</p>
<h3>Smartface Designer&#8217;da Conditionlar</h3>
<p>Smartface Designer’da da bu temel condition mantığı, yazacağımız uygulamarı istediğimiz yönde çalıştırmamızı sağlıyor. Örneğin;  web service’ten çekilen bir değer “true” ise işlem yapmamıza gerek kalmayabilir .Eğer buradan gelen değer “false” olursa bu false değeri değiştirmek için işlemler yapmamız gerekebilir. İşte burada condition’lar bize büyük fayda sağlıyor.</p>
<p>Şimdi basit bir örnek yapalım. Uygulamamız da bir “edit box” ve bir de “label” olacak. Kullanıcı’nın edit box’a girdiği değerin 0’a eşit olup olmadığını kontrol edeceğiz ve eğer sıfıra eşitse “Girilen değer sıfıra eşit”, eğer eşit değilse “Girilen değer sıfırdan farklı” iletilerini label’ımıza yazdıracağız. Bunun için önce Smartface Designer’da yeni bir proje açıp birer edit box ve label oluşturuyoruz. Edit box’ı seçip sağ tarafta bulunan “action editor” sekmesini açıyoruz. Üst tarafta bulunan “Events” seçenekleri arasından OnChange’i seçiyoruz.</p>
<p><img class="aligncenter size-full wp-image-1056" src="http://www.yazarbozar.com/wp-content/uploads/2010/07/11.jpg" alt="1" width="545" height="578" /></p>
<p>Bu event (olay), edit box’mızın değeri değiştiğinde gerçekleştirilecek olan action’ları içerir. Sol taraftan “Condition Action”ı seçiyoruz. Şimdi Action Editor’ümüzde bizden parametreler isteyen bir menü çıktı. Burada ilk değeri, kontrol operatörünü ve kontrol edilecek ikinci değeri gireceğiz.</p>
<p><img class="size-full wp-image-1057 alignnone" src="http://www.yazarbozar.com/wp-content/uploads/2010/07/21.jpg" alt="2" width="315" height="240" /></p>
<p><img class="size-full wp-image-1058 alignnone" src="http://www.yazarbozar.com/wp-content/uploads/2010/07/32.jpg" alt="3" width="272" height="173" /></p>
<p style="text-align: left">İkinci parametremiz sabit bir değer olduğu için, ilk parametredeki gibi “Object Value (nesne değeri)” seçeneğini seçmiyoruz, bunun yerine “Constant(sabit)” seçeneğini seçiyoruz ve değeri sıfır olarak giriyoruz.</p>
<p><img class="size-full wp-image-1061 alignnone" src="http://www.yazarbozar.com/wp-content/uploads/2010/07/41.jpg" alt="4" width="315" height="240" /></p>
<p>Şimdi OnTrue condition’ı için uygulanacak action’ımızı oluşturacağız. Action Editor’de sol taraftaki Object sekmesinden Change Object Property seçeneğini seçiyoruz.</p>
<p style="text-align: center"><img class="size-full wp-image-1062 aligncenter" src="http://www.yazarbozar.com/wp-content/uploads/2010/07/5.jpg" alt="5" width="529" height="578" /></p>
<p>Page, Object, Property seçeneklerini resimdeki gibi ayarlıyoruz. Burada yapılan şey, seçilen objenin seçilen property’sini (özelliğini) değiştirmektir. Assign kısmında da seçtiğimiz objeye  istediğimiz değeri atıyoruz.  Burada seçtiğimiz obje kullanıcıya mesajı gösterecek olan label idi. “Girilen deger sıfıra<ins datetime="2010-07-13T14:42" cite="mailto:Windows%20User"> </ins>eşit” şeklinde bir string yazalım.</p>
<p><img class="aligncenter size-full wp-image-1064" src="http://www.yazarbozar.com/wp-content/uploads/2010/07/6.jpg" alt="6" width="315" height="240" /></p>
<p>OnTrue için yapacaklarımız şimdilik bu kadar. Sırada Edit Box’a girilen değer sıfırdan<ins datetime="2010-07-13T14:42" cite="mailto:Windows%20User"> </ins>farklı ise yapacaklarımız var. Bunları da OnFalse kısmına giriyoruz. İstersek teker teker az önce gerçekleştirdiğimiz bu işlemleri uygulayıp sadece assign işlemindeki veriyi değiştirebiliriz. İstersek de OnTrue action’ını kopyalayıp (sağ tık -&gt; copy ya da ctrl+c), OnFalse’a yapıştırabiliriz(sağ tık -&gt; paste ya da ctrl+v). Ancak kopyaladığımız action’ın assign değeri OnTrue’daki değerle aynı olacağı için assign işlemindeki iletiyi değiştirmeyi unutmayın.</p>
<p><img class="aligncenter size-full wp-image-1065" src="http://www.yazarbozar.com/wp-content/uploads/2010/07/7.jpg" alt="7" width="529" height="578" /></p>
<p>Şimdi uygulamayı Smartface Desginer’da simüle ettiğimizde (kısayol tuşu F12) edit box’a girdiğimiz değeri eş zamanlı olarak kontrol edip, label’daki string’i güncellediğini fark edeceksiniz.</p>
<p><img class="alignleft size-full wp-image-1066" src="http://www.yazarbozar.com/wp-content/uploads/2010/07/8.jpg" alt="8" width="297" height="672" /><img class="aligncenter size-full wp-image-1067" src="http://www.yazarbozar.com/wp-content/uploads/2010/07/9.jpg" alt="9" width="297" height="672" /></p>
<p>Condition’ların kullanımını çok basit bir örnekle açıklamaya çalıştım. Condition’ları kullanarak nested loop’lar (iç içe döngü), iç içe if’ler oluşturabilirsiniz. Böylece aynı anda birden fazla koşulu sağlayan değerlerle  işlem yapabilirsiniz.</p>
<p>Sorularınız için <span style="color: #ff0000">sadeceengin [at] gmail.com</span> a mail atmaktan çekinmeyin.</p>
<p>Engin YILDIZ</p>
<p style="text-align: center">
<p style="text-align: left">
<p style="text-align: center">


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.yazarbozar.com/2010/07/18/smartface-designerda-condition-kullanimi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.yazarbozar.com/2010/07/18/smartface-designerda-condition-kullanimi/</feedburner:origLink></item>
		<item>
		<title>Smartface Designer’da Web Service Kullanımı</title>
		<link>http://feedproxy.google.com/~r/YazarBozar/~3/9lGT7e1z6_g/</link>
		<comments>http://www.yazarbozar.com/2010/07/15/smartface-designer%e2%80%99da-web-service-kullanimi/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 13:54:55 +0000</pubDate>
		<dc:creator>lyd_y</dc:creator>
				<category><![CDATA[Geliştirme Araçları]]></category>
		<category><![CDATA[Genel]]></category>
		<category><![CDATA[Smartface Designer]]></category>

		<guid isPermaLink="false">http://www.yazarbozar.com/?p=1100</guid>
		<description><![CDATA[

Hayatımızın  vazgeçilmezi haline gelen internet mobil dünyada da sık sık karşımıza  çıkmaya başladı.İnternet üzerinden her zaman güncellenmesi gereken hava  durumu, döviz değerleri ya da ilgi alanlarına göre tercih edilen güncel  bilgilere ihtiyaç duyduğumuz anda en kolay ve rahat uygulamaları artık  telefonlarımızda görüyoruz.Smartface Designer da, kullanıcılarına bu  haberlerden her an [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p style="text-align: left">
<p style="text-align: left">
<p style="padding-left: 30px;text-align: left">Hayatımızın  vazgeçilmezi haline gelen internet mobil dünyada da sık sık karşımıza  çıkmaya başladı.İnternet üzerinden her zaman güncellenmesi gereken hava  durumu, döviz değerleri ya da ilgi alanlarına göre tercih edilen güncel  bilgilere ihtiyaç duyduğumuz anda en kolay ve rahat uygulamaları artık  telefonlarımızda görüyoruz.Smartface Designer da, kullanıcılarına bu  haberlerden her an yararlanma imkanı veriyor.</p>
<p style="padding-left: 30px;text-align: left">Web  servisi, XML mesajlaşma tabanlı bir sistem  entegrasyon yöntemidir.  Bilgisayarlar arasında ağ üzerinden etkileşimi ve uyumluluğu  sağlayacak  yazılım sistemidir. Günümüzde birbiriyle haberleşecek  sistemleri  gerçeklemek için en çok tercih edilen yöntem web servisidir.</p>
<p style="padding-left: 30px;text-align: left">Güncel  bilgilere mobil üzerinden sıklıkla erişmek istediğiniz zaman web sevice  yardımınıza koşuyor.Kod bilgisi gerektirmeyen Smartface Designer ile az  zaman harcayarak zevkinize göre kendi tasarımınızı  yapabiliyorsunuz.Şimdi bunu yapmak için gerekli bilgileri ve önemli  ipuçlarını adım adım gözden geçirelim&#8230;</p>
<h2 style="text-align: left">-WSDL adresinin yüklenmesi</h2>
<p style="padding-left: 30px;text-align: left">Bu işlem  için öncelikle istediğiniz bilgiler doğrultusunda araştırma yapmanız ve  bir WSDL adresi bulmuş olmanız gerekir.Ben burada hava durumu  bilgilerini örnek aldım.</p>
<p style="text-align: left"><a href="http://ilayday.files.wordpress.com/2010/07/ye1.jpg"><img src="http://ilayday.files.wordpress.com/2010/07/ye1.jpg" alt="" width="595" height="408" /></a><a href="http://ilayday.files.wordpress.com/2010/07/ye.jpg"><br />
</a></p>
<p style="text-align: left">Adresi bulduktan sonra Smartface platformunun üst tarafındaki <strong>web  service</strong> işaretine tıklayın.Soldaki gibi bir pencere karşınıza  gelecektir.Elinizdeki adresi WSDL kısmına yapıştırıp  yükleyin.Description seçiminizi de yapıp devam edin.</p>
<h2 style="text-align: left">-İstenen bilgi kaynağına ulaşılarak dataset oluşturulması</h2>
<p style="padding-left: 30px;text-align: left">Next  tuşuna tıkladığınızda karşınıza gelecek pencere bizim gönderdiğimiz  parametreler ve bize dönen veri konusunda bizi bilgilendir.Ben hava  durumu için giden parametrelerimi şehir ve ülke adı gelen veriyi hava  durumu bilgileri olarak belirledim.Her iki durum için de birer tablo  oluşturacak şekilde işaretlemelerimizi yapalım.</p>
<p style="padding-left: 30px;text-align: left">(Eğer  ayrıca tablolar oluşturmadan bilgileri önceden kendi oluşturmuş  olduğumuz tablolara yazdırmak istersek hazır tablolarımızla da işlem  yapabiliriz.)</p>
<p style="padding-left: 30px;text-align: left"><a href="http://ilayday.files.wordpress.com/2010/07/yen2.jpg"><img class="alignnone" src="http://ilayday.files.wordpress.com/2010/07/yen2.jpg" alt="" width="535" height="332" /></a></p>
<p style="padding-left: 30px;text-align: left"><a href="http://ilayday.files.wordpress.com/2010/07/a.jpg"><img class="alignnone" src="http://ilayday.files.wordpress.com/2010/07/a.jpg?w=195" alt="" width="195" height="300" /></a></p>
<p style="padding-left: 30px;text-align: left">
<p style="padding-left: 30px;text-align: left">
<p style="padding-left: 30px;text-align: left">
<p style="padding-left: 30px;text-align: left">
<p style="padding-left: 30px;text-align: left">
<p style="padding-left: 30px;text-align: left">
<p style="padding-left: 30px;text-align: left">
<p style="padding-left: 30px;text-align: left">Tablolarımız  ve datasetlerimiz oluştu.Bunları sol tarafta <strong>project  browser</strong> kısmında local table ve data access başlıkları altında  görebilir,  istediğimiz zaman düzenlemeler yapabiliriz.</p>
<h2 style="padding-left: 30px;text-align: left">-Label,  edit box ya da kullanılacak objelerin tasarımı</h2>
<p style="padding-left: 30px;text-align: left">Datasetlerimizi  oluşturduktan sonra gönderdiğimiz ve aldığımız bilgileri görüntülemek  için objelere bağlamamız gerekir.Bunun için ilk aşamada basit bir  tasarım yapalım&#8230;</p>
<p style="padding-left: 30px;text-align: left"><a href="http://ilayday.files.wordpress.com/2010/07/once.jpg"><img src="http://ilayday.files.wordpress.com/2010/07/once.jpg" alt="" width="165" height="227" /></a></p>
<p style="text-align: left">Şekle göre ilk edit box&#8217;a ülke ismi, ikincisine şehir ismi girmeyi  planlıyorum.Button&#8217;a bastığımda alttaki label&#8217;a da istediğim bilgiler  gelecek.Bu işlem için tasarladığımız objeleri datasetlere bağlamak  gerekiyor.</p>
<h2 style="text-align: left">-Objelerin datasete bağlanması</h2>
<p style="padding-left: 30px;text-align: left"><a href="http://ilayday.files.wordpress.com/2010/07/sonra.jpg"><img src="http://ilayday.files.wordpress.com/2010/07/sonra.jpg" alt="" width="162" height="237" /></a></p>
<p style="padding-left: 30px;text-align: left">Objelerin  isimlendirmesini yine keyfimize göre yapalım.Şimdi giden ve gelen  bilgileri datasetle bir şekilde ilişkilendirmek gerekiyor.İki edit box  ve alttaki label için bu işlemi yapalım.1.edit box üzerine tıklayarak  palette kısmına gelip data source&#8217;ta gönderilen parametrenizi(country)  seçin.</p>
<p style="padding-left: 30px;text-align: left">
<p style="padding-left: 30px;text-align: left"><img src="http://ilayday.files.wordpress.com/2010/07/data2.jpg?w=300" alt="" width="288" height="260" /></p>
<p style="padding-left: 30px;text-align: left">
<p style="padding-left: 30px;text-align: left">2.edit  box için de city seçimini yapın.Label&#8217;a da gelen haber parametresini  atayalım.Bir sonraki adım button&#8217;a görev atamak.</p>
<h2 style="text-align: left">-Run Web Service</h2>
<p style="padding-left: 30px;text-align: left"><a href="http://ilayday.files.wordpress.com/2010/07/son.jpg"><img src="http://ilayday.files.wordpress.com/2010/07/son.jpg?w=300" alt="" width="300" height="266" /></a></p>
<p style="padding-left: 30px;text-align: left">Web  Service&#8217;in çalışması için uygulamanın tetiklenmesi gerekiyor.Bunun için  göster adlı button&#8217;a bir action ataması yapalım.Kenar çubuğundan  Window&#8217;a tıklayarak Actions Editor&#8217;ı seçelim.Button&#8217;u seçerek bu objeye  network bölümünden <strong>Run Web Service</strong> görevini verelim. Artık göster  tuşu web servisi çalıştıracak yetkiye sahip.Device Simulator ile  uygulamanızı test edebilirsiniz.</p>
<p style="padding-left: 30px;text-align: left">
<p style="padding-left: 30px;text-align: left">İlayda YELTEKİN</p>
<p style="padding-left: 30px;text-align: left">ilaydayeltekin@gmail.com</p>
<p style="padding-left: 30px;text-align: left">


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.yazarbozar.com/2010/07/15/smartface-designer%e2%80%99da-web-service-kullanimi/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.yazarbozar.com/2010/07/15/smartface-designer%e2%80%99da-web-service-kullanimi/</feedburner:origLink></item>
		<item>
		<title>Smartface Designer’da RSS Kullanımı</title>
		<link>http://feedproxy.google.com/~r/YazarBozar/~3/-tFRgkOid4o/</link>
		<comments>http://www.yazarbozar.com/2010/07/15/smartface-designerda-rss-kullanimi/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 13:38:47 +0000</pubDate>
		<dc:creator>lyd_y</dc:creator>
				<category><![CDATA[Geliştirme Araçları]]></category>
		<category><![CDATA[Genel]]></category>
		<category><![CDATA[Smartface Designer]]></category>

		<guid isPermaLink="false">http://www.yazarbozar.com/?p=1053</guid>
		<description><![CDATA[Haber  servislerine, güncel bilgilere, öğrenmek istediğiniz bilgiye anında  ulaşmanın en kolay yolu artık mobil dünya.Smartface Designer&#8217;ın RSS Feed  hizmetiyle kendi zevkimize göre tasarımımızı yaparak istediğimiz  bilgilerden anında haberdar olabiliriz.
Peki nedir bu RSS?
RSS  çeşitli internet siteleri tarafından               [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p style="padding-left: 30px">Haber  servislerine, güncel bilgilere, öğrenmek istediğiniz bilgiye anında  ulaşmanın en kolay yolu artık mobil dünya.Smartface Designer&#8217;ın RSS Feed  hizmetiyle kendi zevkimize göre tasarımımızı yaparak istediğimiz  bilgilerden anında haberdar olabiliriz.</p>
<h3>Peki nedir bu RSS?</h3>
<p style="padding-left: 30px">RSS  çeşitli internet siteleri tarafından                             yayınlanan haber vb. içeriğin tek bir ortamdan  topluca                             izlenebilmesine olanak sağlayan yeni bir  içerik                             besleme yöntemidir. <strong>RSS</strong> <strong>R</strong>eal <strong>S</strong>imple                             <strong>S</strong>yndication, RDF Site Summary veya <strong>R</strong>ich                             <strong>S</strong>ite <strong>S</strong>ummary (Zengin Site  Özeti)                             kelimelerinin baş harflerinden oluşan   kısaltmadır. XML                            biçiminde olan RSS  dosyaları ilk olarak  NetScape                            firması  tarafından geliştirilmeye  başlanmıştır. RSS                             dosyalarının kullanımı her geçen gün artarak                             yaygınlaşmaktadır.</p>
<p style="padding-left: 30px">RSS  yöntemini destekleyen                             sistelerin  hazırladıkları XML biçimli  dosyalara bir                            çok  programla erişmek mümkündür. XML okuyucusu  olan bu                             programlar, web gezgini veya e-posta istemcisi                              olabileceği gibi sadece RSS içereriği izlemek  için                             hazırlanan masaüstü programları da olabilir.</p>
<p style="padding-left: 30px">RSS  ikonunu (<img src="http://www.rssnedir.com/images/rss_button.gif" border="0" alt="" width="36" height="14" />)                             gördüğünüz herhangi bir yerde, RSS verilerini  RSS                             istemcinizi kullanarak alabilirsiniz.</p>
<p style="padding-left: 30px">İlgili  RSS adresi bulmakla işe başlayalım.</p>
<h2>-RSS adreslerin yüklenmesi</h2>
<p style="padding-left: 30px">Bulduğunuz  RSS adresi load etmek için tool üzerinden RSS Feed seçeneğini seçerek  adres yükleyin.</p>
<p><a href="http://ilayday.files.wordpress.com/2010/07/yenii1.jpg"><img src="http://ilayday.files.wordpress.com/2010/07/yenii1.jpg" alt="" width="474" height="331" /></a></p>
<p style="padding-left: 30px">Bize  gelen parametreler Title, Description, Link vb bu işlemin sonrasında  kullanılmak üzere oluşturuluyor.</p>
<h2>-Tablo ve dataset oluşturma</h2>
<p style="padding-left: 30px">RSS  yüklemesinden sonra tabloların ve datasetin kendiliğinden oluştuğunu  görebiliriz.Oluşan tablo RSS ten  beslendiği için dinamik yapıdadır.</p>
<p style="padding-left: 30px"><a href="http://ilayday.files.wordpress.com/2010/07/yenii.jpg"><img src="http://ilayday.files.wordpress.com/2010/07/yenii.jpg" alt="" width="474" height="331" /></a></p>
<h2>-Obje dizaynı ve datasetlere bağlanması</h2>
<p style="padding-left: 30px">RSS  yükledikten sonra title isminde bir parametre oluştuğunu görmüştük.Bu  başlıkları liste şeklinde almak ve sonrasında bir seçim yaparak konunun  detaylarını Description yoluyla görüntülemek istiyorum.Bunun için repeat  box kullanalım.</p>
<p style="padding-left: 30px"><a href="http://ilayday.files.wordpress.com/2010/07/rep.jpg"><img src="http://ilayday.files.wordpress.com/2010/07/rep.jpg?w=295" alt="" width="290" height="291" /></a><a href="http://ilayday.files.wordpress.com/2010/07/tit.jpg"><img src="http://ilayday.files.wordpress.com/2010/07/tit.jpg?w=300" alt="" width="300" height="246" /></a></p>
<p style="padding-left: 30px">Repeat box objemizi şekildeki gibi  oluşturduk.Başlık kışmına bir label yerleştirdik.Burada tasarımı  yaparken önemli nokta repeat box&#8217;ın inactive kısmının da datasete  bağlanması gerektiğidir.Repeat box&#8217;ın label&#8217;ların ayrı ayrı  window-&gt;palette-&gt;data source yolundan datasetlerine  bağlayalım.Label&#8217;ları da title parametresine bağlayalım.</p>
<p style="padding-left: 30px">
<p style="padding-left: 30px">-&gt;Label&#8217;ın  title parametresine bağlanması</p>
<p><a href="http://ilayday.files.wordpress.com/2010/07/n1.jpg"><img class="alignleft" src="http://ilayday.files.wordpress.com/2010/07/n1.jpg" alt="" width="213" height="234" /></a></p>
<p style="padding-left: 30px">
<p style="padding-left: 30px">Haber   başlıkları repeat box içerisindeki active</p>
<p style="padding-left: 30px">ve inactive label&#8217;ların her  ikisine de bağlandı,</p>
<p style="padding-left: 30px">repeatbox datasete bağlandı.Şimdi  haberlerin</p>
<p style="padding-left: 30px">içeriklerini ayrı bir label&#8217;a bağlayalım:</p>
<p style="padding-left: 30px">
<p style="padding-left: 30px">
<p style="padding-left: 30px">
<p style="padding-left: 30px">
<p style="padding-left: 30px">
<p style="padding-left: 30px">
<p style="padding-left: 30px">
<p style="padding-left: 30px">
<p style="padding-left: 30px">
<p style="padding-left: 30px">
<p style="padding-left: 30px"><img class="alignnone" src="http://ilayday.files.wordpress.com/2010/07/dia.jpg" alt="" width="379" height="231" /></p>
<p>Bunun için öncelikle yukarıdaki resimde görüldüğü gibi yeni bir diyalog oluşturalım.Tool&#8217;da new page&#8217;i  tıklayarak create new dialog&#8217;u seçelim.Diyalog sayfa üzerine açılacak  küçük bir pencere görünümündedir.Burada haber içeriklerini  görüntüleyeceğiz.Oluşturduğumuz diyaloğa bir label koyalım.</p>
<h2 style="padding-left: 30px"><a href="http://ilayday.files.wordpress.com/2010/07/dia2.jpg"><img class="alignnone" src="http://ilayday.files.wordpress.com/2010/07/dia2.jpg" alt="" width="315" height="238" /></a></h2>
<p>Görüldüğü gibi bu label&#8217;ı yine data source kısmından description  parametresine bağladık.Diyaloğun büyüklüğünü,</p>
<p>efektlerini, rengini vs  palet kısmından ayarlayabilirsiniz.</p>
<h2>-Read RSS</h2>
<p style="padding-left: 30px">RSS  hizmetinden yararlanmak için bir action ataması gerekiyor.Biz uygulama  açıldığında bu hizmeti başlatacak şekilde ayarlayalım.Action for, object  ve events seçimlerimizi şekildeki gibi yapalım:</p>
<p style="padding-left: 30px"><a href="http://ilayday.files.wordpress.com/2010/07/rs.jpg"><img class="alignleft" src="http://ilayday.files.wordpress.com/2010/07/rs.jpg" alt="" width="299" height="486" /></a></p>
<p>Yaptığımız bu örnek istediğimiz zaman haberlerin en güncel haline  ulaşmamızı sağlıyor.</p>
<p>Şimdi Device Simulator ile uygulamamızı test edelim:</p>
<p style="padding-left: 30px;text-align: center"><a href="http://ilayday.files.wordpress.com/2010/07/tel1.jpg"><br />
</a><a href="http://ilayday.files.wordpress.com/2010/07/tel2.jpg"><img class="aligncenter" src="http://ilayday.files.wordpress.com/2010/07/tel2.jpg" alt="" width="263" height="576" /></a></p>
<p style="padding-left: 30px">İlayda YELTEKİN</p>
<p style="padding-left: 30px">ilaydayeltekin@gmail.com</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.yazarbozar.com/2010/07/15/smartface-designerda-rss-kullanimi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.yazarbozar.com/2010/07/15/smartface-designerda-rss-kullanimi/</feedburner:origLink></item>
		<item>
		<title>Smatface Designer’da Manuel(static) Tablolar</title>
		<link>http://feedproxy.google.com/~r/YazarBozar/~3/kVi87MmyCgU/</link>
		<comments>http://www.yazarbozar.com/2010/07/15/smatface-designerda-manuelstatic-tablolar/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 12:33:00 +0000</pubDate>
		<dc:creator>celikfi</dc:creator>
				<category><![CDATA[Geliştirme Araçları]]></category>
		<category><![CDATA[Genel]]></category>
		<category><![CDATA[Smartface Designer]]></category>
		<category><![CDATA[Data yapıları]]></category>
		<category><![CDATA[smartface designer]]></category>

		<guid isPermaLink="false">http://www.yazarbozar.com/?p=1041</guid>
		<description><![CDATA[Smartface Designer&#8217;da tablo oluşturma araçlarının bulunması  kullanıcıya kullanım kolaylığı sağlamaktadır. Bu tabloları oluşturmak  için asp.net&#8217;teki gibi başka veri tabanı dillerini bilmeye gerek  olmamasının yanı sıra veritabanı bağlantısı yapmaya da gerek yok. Bu  özellikler yeni kullancılar için uygulama geliştirmeyi çile olmaktan  çıkarır.
Smartface Designer&#8217;da tablo oluşturmak için başka bir platformla  bağlantı [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<h3><strong><strong>Smartface Designer&#8217;da tablo oluşturma araçlarının bulunması  kullanıcıya kullanım kolaylığı sağlamaktadır. Bu tabloları oluşturmak  için asp.net&#8217;teki gibi başka veri tabanı dillerini bilmeye gerek  olmamasının yanı sıra veritabanı bağlantısı yapmaya da gerek yok. Bu  özellikler yeni kullancılar için uygulama geliştirmeyi çile olmaktan  çıkarır.</strong></strong></h3>
<p>Smartface Designer&#8217;da tablo oluşturmak için başka bir platformla  bağlantı kurmaya gerek yoktur, tabloyu oluşturmak için hazır yaratılan  tablolara içeriklerin girilmesi yeterlidir.  Şimdi ASP.NET için MYSQL  bağlantısının nasıl yapıldığına bakalım.</p>
<p><code></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;%</span><span style="color: #339933;">@</span> Import <span style="color: #000000; font-weight: bold;">Namespace</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;System.Data.OleDb&quot;</span> <span style="color: #000000; font-weight: bold;">%&gt;</span>
&nbsp;
 &lt;script runat=&quot;server&quot;&gt;
 sub Page_Load
 dim dbconn
 dbconn=New OleDbConnection(&quot;Provider=Microsoft.Jet.OLEDB.4.0;
 data source=&quot; &amp;amp; server.mappath(&quot;northwind.mdb&quot;))
 dbconn.Open()
 end sub
 &lt;/script&gt;</pre></div></div>

<p></code></p>
<p>Yukarda görüldüğü gibi sadece veritabanına bağlamak için bu kodları  yazmak gerekir. Bunun dışında veri tabanından verileri okumak ve  üzerinde sorgu yapmak için de bundan daha uzun kod yazmak gerekiyor.  Aşağıda göreceğimiz Smartface Designer&#8217;da tablo oluşturmada bunların hiç  birine ihtiyaç duyulmadığı için kullanıcıya ciddi kolaylık  sağlamaktadır.</p>
<p>Şimdi Smartface Designerda tablo nasıl oluşturulur ona bakalım.</p>
<h2><span style="text-decoration: underline"><strong><strong>I. Lokal Tablo Oluşturma:</strong></strong></span></h2>
<p>Uygulamada verileri lokal olarak çekmek için bu tablolar  kullanılmaktadır.  Bu veriler kullanıcı tarafından elle girilmektedir.  Tablolar Smartface Designer&#8217;ın içinde bir ikon olarak seçilebilir olarak  yer almaktadır.  Bu ikon seçilip tablo tablo içerikleri doldurulduğunda  &#8220;Projects Browser&#8217;da&#8221; bulunan &#8220;Local Tables&#8217;ın&#8221; içinde verilen isimde  bir tablo oluşur.Uygulamalarda bu tablolar lokal olarak yer  aldıklarından projenin boyutunu artıran araçlardır. Eğer tablo kullanımı  gerekliyse bunların verileri küçük boyutlarda seçilmelidir. Manuel  olarak seçilen tabloların uygulamada kullanılabilir olması için  Datasetler oluşturulmalıdır.</p>
<p>Statik tabloyu Smartface Designer&#8217;da oluşturmak için tablo ikonun  üzerini tıklayınca tablo sayfası açılır.</p>
<p><a href="http://celikfi.files.wordpress.com/2010/07/tablo-olusturma.jpg"><img src="http://celikfi.files.wordpress.com/2010/07/tablo-olusturma.jpg" alt="" width="612" height="81" /></a></p>
<p>Bu sayfaya bir tablo adı verilip veri tabanı oluşturulur. Oluşturulan  tablonun max size&#8217;nı kullanıcı belirleyebilmektedir. Tabloya isim  verdikten sonra kullanacağımız kolonları oluşturmamız gerekmektedir.</p>
<p><a href="http://celikfi.files.wordpress.com/2010/07/tablo-sayfasi.jpg"><img class="alignnone" src="http://celikfi.files.wordpress.com/2010/07/tablo-sayfasi.jpg" alt="" width="458" height="308" /></a></p>
<p>Her sütunun bir ismi, bir tipi(type) ve ilk değeri(default)  bulunmaktadır. Burada sütun ismi yazıldıktan sonra bu sütunun tipi(type)  aşağıdaki  şekilde görüldüğü gibi seçilir. Eğer kullanıcı hiçbir şey  yapmazsa default olarak string tipine sahip olur. Bu işlem  tamamlandıktan sonra tabloları doldurabiliriz.</p>
<p><a href="http://celikfi.files.wordpress.com/2010/07/columns.jpg"><img class="alignnone" src="http://celikfi.files.wordpress.com/2010/07/columns.jpg" alt="" width="460" height="274" /></a></p>
<p>&#8220;Local tables&#8217;da&#8221; oluşan tabloya sağ tıklanarak &#8220;Edit Rows&#8221; seçilir  ve tablo içerikleri doldurulur. Aşağıdaki şekilde gösterilmiştir.</p>
<p><a href="http://celikfi.files.wordpress.com/2010/07/112.png"><img class="alignnone" src="http://celikfi.files.wordpress.com/2010/07/112.png" alt="" width="228" height="258" /></a></p>
<p>Ekleyeceğimiz satır sayısı kadar insert butonunu tıklayarak satırlar  oluştururuz. Bu oluşturulan satırlara kolonlarda(column) belirtilen  tiplerde(type) veriler girilmesi gerekir. Resim(Picture) için  bilgisayardan dosya seçme seçenekleri yer almaktadır. Tablo doldurma  işlemi bittikten sonra tablo save edilir. Tablonun sağ üst köşesinde  tablo verilerinin  kapladığı hafızayı görülebilmektedir.</p>
<p><a href="http://celikfi.files.wordpress.com/2010/07/tablo-ici.jpg"><img src="http://celikfi.files.wordpress.com/2010/07/tablo-ici.jpg" alt="" width="497" height="313" /></a></p>
<p>Tabloların nasıl oluştuğunu öğrendik şimdi Dataset nasıl oluşturulur  ona bir bakalım.</p>
<h2><span style="text-decoration: underline"><strong><strong>II. Dataset Oluşturma:</strong></strong></span></h2>
<p>Dateset manuel tablolarının nesnelerde(object) kullanılabilir hale  getirmek için oluşturulur. Bu tabloların Smartface Designer&#8217;a  uyarlanması için Dataset&#8217;lerini oluşturulması şarttır. Dataset ikonu  tıklandığında çıkan Dataset sayfasında &#8220;Local Tables&#8217;da&#8221; bulunan tablo  isimleri &#8220;ComboBox&#8217;da&#8221; sıralı olarak görülür. Bu tablolardan  kullanacağımızı seçip Dataset&#8217;imizi oluştururuz. Örneğin ülkeler  datasetini oluşturalım.</p>
<p><img src="/DOCUME%7E1/USER/LOCALS%7E1/Temp/moz-screenshot.png" alt="" /><a href="http://celikfi.files.wordpress.com/2010/07/dataset-olusturma1.jpg"><img class="alignnone" src="http://celikfi.files.wordpress.com/2010/07/dataset-olusturma1.jpg" alt="" width="404" height="334" /></a></p>
<p>Dataset’ini oluşturacağımız tabloyu sıralamak istersek &#8220;Sort’tan&#8221;  seçtiğimiz kolon&#8217;a(column)  göre küçükten büyüğe ya da büyükten küçüğe  sıralayabiliriz. Böylece tablo oluştururken verileri sıralı girmemize  gerek kalmaz, Dataset bizim yerimize sıralamış olur. Ülkeler Dataset&#8217;ini  ülke adına göre sıralayalım.</p>
<h2><a href="http://celikfi.files.wordpress.com/2010/07/dataset-siralama.jpg"><img class="alignnone" src="http://celikfi.files.wordpress.com/2010/07/dataset-siralama.jpg" alt="" width="404" height="370" /></a></h2>
<p>Dataset sayfasındaki bütün seçimlerimizi yaptıktan sonra &#8220;Ok&#8221;  butonunu tıklayarak Datasetimizi oluştururuz. Dataset&#8217;imiz &#8220;Data Access&#8221;  kısmında görünür olur. Şekilde de görüldüğü gibi&#8230;</p>
<p><a href="http://celikfi.files.wordpress.com/2010/07/data-acsess.jpg"><img src="http://celikfi.files.wordpress.com/2010/07/data-acsess.jpg" alt="" width="623" height="55" /></a></p>
<pre><strong>Önemli:</strong>
Bir tablonun birden fazla Dataset'i oluşturulabilir. Bu sayede
bir dataset'te filtreleme yaparken başka bir Dataset'te ana
tablomuz değişmeden tutulmuş olur.</pre>
<p>Dataset&#8217;in nasıl oluştuğunu öğrendikten sonra nasıl filtrelendiğini  ve nasıl kullanılacağı kısmını anlatmak kaldı. Şimdi Dataset nasıl  filtrelenir ona bakalım.</p>
<h2><span style="text-decoration: underline"><strong><strong>III. Dataset Filtreleme:</strong></strong></span></h2>
<p>Filtrenin amacı genel bir tablodan sadece kullanacağımız satırların  kaldığı bir tablo oluşturma olarak açıklayabiliriz. Bu genel tabloya  örnek olarak; İTU&#8217;deki bütün öğrencilerin okul numaralarının,  isim-soyisimlerinin ve bölümlerinin bilgilerinin tutulduğu bir tablo  olduğunu düşünelim. Biz bu tabloyu sadece bilgisayar mühendislerine göre  filtrelersek elimize bilgisayar mühendislerinin listesini tutan bir  tablo kalmış olur. Bunu bir nevi sorgulama olarak görebiliriz.  Aşağıda  Dataset filtrelemenin nasıl yapıldığını ülkeler Dataset&#8217;inde gösterelim.</p>
<p><a href="http://celikfi.files.wordpress.com/2010/07/filitre-olusturma1.jpg"><img class="alignnone" src="http://celikfi.files.wordpress.com/2010/07/filitre-olusturma1.jpg" alt="" width="399" height="106" /></a></p>
<p>Yukarda bulunan artı işareti tıklandığında Dataset&#8217;in &#8220;Filter&#8221;   bölümünde filtreleme satırı çıkar. Burada &#8220;Colums&#8221; kısmına kullandığımız  Dataset&#8217;te yer alan tablonun sütün isimleri çıkar. Bu sütunlardan biri  seçilerek &#8220;Operator&#8221; seçilir. &#8220;Columns&#8221; ve &#8220;Operatör&#8221; belirtildikten  sonra sıra geldi filtreleyeceğimiz veriyi almaya. Bu veriyi &#8220;Dataset  Column&#8217;dan(Dataset Sütun)&#8221;, &#8220;Object Value&#8217;den(Nesne)&#8221; veya  &#8220;Constant(sabit)&#8221; olarak alabiliriz.</p>
<p>Bu örnekte &#8220;Ulkeler&#8221; tablosunun ulkeadi sütununda turkiye olan  satırların bulunduğu bir tablo oluşur.</p>
<p><a href="http://celikfi.files.wordpress.com/2010/07/171.jpg"><img src="http://celikfi.files.wordpress.com/2010/07/171.jpg" alt="" width="313" height="29" /></a></p>
<pre><strong>Önemli:</strong>
Filtreleme yapılan Dataset'lerde bu işlemin yapıldığı yerde
<span style="text-decoration: underline">"refresh" dataset</span>" yapmak gerekir.</pre>
<p>Dataset oluşturduktan sonra bunları bağlandığı nesneler konusunu bir  örnekle açıklayıp konuyu burada bitirelim.</p>
<h2><strong><strong><span style="text-decoration: underline">IV. Dateset Bağlantılı Nesnelerden Oluşan Örnek Uygulama:</span></strong></strong></h2>
<p>Bu uygulamanın amacı Aksiyon&#8217;ların (Action Editors) Dataset  özellikleri ve Dataset filtrelemenin nasıl yapıldığıdır.<strong><strong><span style="text-decoration: underline"> </span></strong></strong></p>
<p>Örnek olarak anlatacağımız uygulamada farklı farklı ülkeler ve bu  ülkeler hakkında bilgilerin yer aldığı bir mobil uygulama olacaktır. Bu  uygulamada &#8220;RepeatBox&#8217;larda&#8221; bulunan ülkelere tıklanınca &#8220;ÜlkeBilgi&#8221;  sayfasına giderek ülke hakkında bilgileri bir Label&#8217;ın içinde  görüntülenecek. &#8220;ÜlkeBilgisi&#8221;" sayfasında ileri ve geri butonlarıyla  Dataset&#8217;in satırlarında ileri geri hareket etmektedir.Şimdi aşama aşama  uygulamayı nasıl gerçeklediğimizi anlatalım.</p>
<h2 style="text-align: left">Program  Geliştirme Zamanı(Designer Time)</h2>
<p>&#8220;RepeatBox&#8217;un&#8221; Palettes&#8217;de bulunan &#8220;Data Source&#8221; kısmına  Dataset&#8217;lerden &#8220;Ulkeler&#8221; Dataset&#8217;ini bağladık. Aşağıda resimde  gösterildiği gibi &#8220;RepeatBox&#8217;a&#8221; Dataset bağlanmaktadır.</p>
<p><a href="http://celikfi.files.wordpress.com/2010/07/repeatbox-icin-dataset1.jpg"><img src="http://celikfi.files.wordpress.com/2010/07/repeatbox-icin-dataset1.jpg" alt="" width="532" height="296" /></a></p>
<p>&#8220;RepeatBox&#8217;a&#8221; Dataset bağladıktan sonra sıra Dataset&#8217;teki verilerin  &#8220;RepeatBox&#8217;ta&#8221; gösterilmesine geldi. Öncelikler &#8220;&#8221;RepeatBox hakkında  biraz bilgi verelim.</p>
<p>&#8220;RepeatBox&#8217;ın&#8221; aktif(active item) ve pasif(inactive item) durumları  bulunur. &#8220;RepeatBox&#8217;ta&#8221; aktif ve pasif kullanılmasındaki amaç hangi  seçeneğin aktif olduğunu göstermeye yarar. Bu fark da aktif&#8217;te ve  pasif&#8217;te kullanılan araçların renklerinin, yazı boyutlarının farklı  seçilmesiyle sağlanabilir.</p>
<p><a href="http://celikfi.files.wordpress.com/2010/07/active-inactive1.jpg"><img src="http://celikfi.files.wordpress.com/2010/07/active-inactive1.jpg" alt="" width="258" height="195" /></a></p>
<p>&#8220;RepeatBox&#8217;ın&#8221; Plattes&#8217;inde bulunan aktif(active item) ve pasif  (Inactive item) kısımlarına bir &#8220;Label&#8221; yerleştirip bu Label&#8217;ların &#8220;Data  Source&#8217;larına&#8221; Dataset&#8217;te istenen kolon(column) seçilir. Bu seçilen  kolonun içeriği &#8220;RepeatBox&#8217;ta&#8221; görüntülenir. Böylece Dataset&#8217;te bulunan  ülke isimleri alfabetik olarak &#8220;RepeatBox&#8217;a&#8221; yazılmış olur.</p>
<p><a href="http://celikfi.files.wordpress.com/2010/07/label-dataset-baglantisi.jpg"><img src="http://celikfi.files.wordpress.com/2010/07/label-dataset-baglantisi.jpg" alt="" width="499" height="267" /></a></p>
<p>Kullanıcı &#8220;RepeatBox&#8217;ta&#8221; sıralanan ülkelerden birini şeçtiğinde  &#8220;ÜlkeBilgi&#8221; sayfasına gider. Bu bilgiler &#8220;UlkeBilgi&#8221; tablosunda  bulunmaktadır. Biz bu tabloyu filtreleyerek sadece seçilen ülkenin  bilgilerini çekmeliyiz.</p>
<p>&#8220;UlkeBilgi&#8221; tablosunun görünümü:</p>
<p><a href="http://celikfi.files.wordpress.com/2010/07/ulke-bilgiler-tablosu.jpg"><img src="http://celikfi.files.wordpress.com/2010/07/ulke-bilgiler-tablosu.jpg" alt="" width="477" height="365" /></a></p>
<p>Bu oluşturduğumuz tablo bütün ülkelerin bilgilerini kapsadığından  oluşturacağımız Dataset&#8217;e filtre koymamız gerekmektedir. Oluşturduğumuz  Dataset  &#8220;RepeatBox&#8217;ta&#8221; seçilen ülke adına göre filtrelenmelidir.  Dataset filtrelemek için &#8220;Columns&#8217;da&#8221; bulunan tablonun kolonlarından  &#8220;ulkeadi&#8221; ile &#8220;Ulkerler&#8221; Dataset&#8217;nin &#8220;ulkeadi&#8217;nın&#8221; değerine eşit olan  satırlardan oluşan bir tablo oluşur.</p>
<p><a href="http://celikfi.files.wordpress.com/2010/07/ulketanitimidataset1.jpg"><img class="alignnone" src="http://celikfi.files.wordpress.com/2010/07/ulketanitimidataset1.jpg" alt="" width="341" height="394" /></a></p>
<p>Filtre koşunu koyduktan sonra &#8220;UI Components&#8217;lardan&#8221;  RepeatBox&#8217;ın  &#8220;onSelectItem&#8217;da&#8221; Dataset aksiyonlarından(Actions) yenile(Refresh  Dataset=&#8221;DS_UlkeTanitimi&#8221;) seçilmelidir. Filtrelenmiş bir Dataset  yenilenmezse geriye hiçbir değer döndürmez.</p>
<p><a href="http://celikfi.files.wordpress.com/2010/07/repeatbox-actions.jpg"><img class="alignnone" src="http://celikfi.files.wordpress.com/2010/07/repeatbox-actions.jpg" alt="" width="400" height="456" /></a></p>
<p>Dataset&#8217;i filtreledikten sonra &#8220;UlkeBilgi&#8221; sayfasını anlatabiliriz.  Sayfanın en üstünde  seçilen ülkenin adını (RepeatBox&#8217;ın aktif olduğu  değer) gösteren label, onun altında &#8220;UlkeBilgi&#8221; Dataset&#8217;ine bağlı  bulunan Label(Dataset&#8217;in satırları aynı sayfada sırayla gösterilecek )  kullanılmıştır.</p>
<p><a href="http://celikfi.files.wordpress.com/2010/07/ulkebilgi-sayfasi.jpg"><img class="alignnone" src="http://celikfi.files.wordpress.com/2010/07/ulkebilgi-sayfasi.jpg" alt="" width="242" height="298" /></a></p>
<p>Yukarda gösterilen butonlar Dataset göstericisini ileri geri hareket  ettirmektedir.İleri butonun tıklanma(OnPress) durumuna aksiyon(Actions)  olarak Move Next Record Dataset =&#8221;DS_UlkeTanitimi&#8221; konulur. Geri  butonunda da tam tersi Move Previous Record Dataset=&#8221;DS_UlkeTanitimi&#8221;  konur. İleri butonu tıklandığında Dataset göstergesi bir alttaki satırı  gösterir. Geri butonunda ise bir üstündeki satırı gösterir. Şimdi ileri  butonunda seçilen Dataset aksiyonu(Actions) gösterelim.</p>
<p><a href="http://celikfi.files.wordpress.com/2010/07/ileributonu.jpg"><img class="alignnone" src="http://celikfi.files.wordpress.com/2010/07/ileributonu.jpg" alt="" width="350" height="456" /></a></p>
<p>Geri butonunda ise &#8220;Next&#8221; yerine &#8220;Previous&#8221; Aksiyonu kullanılır. Bu  işlemlerle program geliştirme süreci sona erdi. Şimdi geliştirdiğimiz  uygulamanın ekran çıktıları ve &#8220;UlkeBilgi&#8221; tablosunu göstericisiyle  gösterelim.</p>
<h2>Simülasyon Zamanı(Run Time)</h2>
<p>Ülkeler Sayfası:</p>
<p><a href="http://celikfi.files.wordpress.com/2010/07/uygulama-sayfasi.jpg"><img class="alignnone" src="http://celikfi.files.wordpress.com/2010/07/uygulama-sayfasi.jpg" alt="" width="239" height="229" /></a></p>
<p>&#8220;UlkeBilgi&#8221; tablosuna Dataset&#8217;in gösterdiği satır okla belirtildi.  Burada tabloda gösterilen satır içeriğinin &#8220;Label&#8217;da&#8221; görünür.</p>
<p><a href="http://celikfi.files.wordpress.com/2010/07/dataset-gostericisi.jpg"><img class="alignnone" src="http://celikfi.files.wordpress.com/2010/07/dataset-gostericisi.jpg" alt="" width="427" height="289" /></a></p>
<p>&#8220;ÜlkeBilgi&#8221; sayfasında Dataset&#8217;in gösterdiği ilk değeri &#8220;Label&#8217;da&#8221;  gösterilmiştir. İleri butonuna tıklamayla sayfanın nasıl değiştiği bunun  yanında tablo göstericisini yer değiştirmesi gözlemlenecektir.</p>
<p><a href="http://celikfi.files.wordpress.com/2010/07/bilgidsayfasi23.jpg"><img class="alignnone" src="http://celikfi.files.wordpress.com/2010/07/bilgidsayfasi23.jpg" alt="" width="222" height="246" /></a></p>
<p>İleri butonunun içinde bulunan Dataset&#8217;te ileri git aksiyonu  &#8220;UlkeBilgi&#8221; tablosunda Portekiz&#8217;le ilgili bir alt satıra geçmesini  sağlar.</p>
<p><a href="http://celikfi.files.wordpress.com/2010/07/dataset-gostericisi2.jpg"><img src="http://celikfi.files.wordpress.com/2010/07/dataset-gostericisi2.jpg" alt="" width="423" height="299" /></a></p>
<p>Görüldüğü gibi ileri butonu tıklandıkça Dataset göstericisi tabloda  bir aşağı inmekte ve label bu bilgiyi göstermektedir.</p>
<p><a href="http://celikfi.files.wordpress.com/2010/07/bilgidsayfas3.jpg"><img class="alignnone" src="http://celikfi.files.wordpress.com/2010/07/bilgidsayfas3.jpg" alt="" width="236" height="260" /></a><a href="http://celikfi.files.wordpress.com/2010/07/bilgidsayfas4.jpg"> </a></p>
<p>Aynı şekilde ileri butonu tıklandığında gösterge tabloda aşağı doğru  iner.</p>
<p><a href="http://celikfi.files.wordpress.com/2010/07/dataset-gostericisi3.jpg"><img src="http://celikfi.files.wordpress.com/2010/07/dataset-gostericisi3.jpg" alt="" width="427" height="254" /></a></p>
<p>Ekranda tabloda göstergesinin &#8220;bilgi&#8221; kısmını Labelda gösterir.</p>
<p><a href="http://celikfi.files.wordpress.com/2010/07/bilgidsayfas42.jpg"><img class="alignnone" src="http://celikfi.files.wordpress.com/2010/07/bilgidsayfas42.jpg" alt="" width="241" height="263" /></a></p>
<p>Tablo son değeri gösterdiği için bundan sonra ileri tuşuna ne kadar  basılırsa basılsın aynı yeri gösterecektir. Bu durumda ileri tuşunun  aksiyonuna bir koşul konulabilir. Eğer son sayfaya gelindiyse tablonun  başına git(Move First Record Dataset) aksiyonu seçilerek Dataset&#8217;in  göstergesi tablonun ilk değerini gösterecek şekilde ayarlanır. Bunu  yapmadan geri butonuyla önceki sayfalara geçilebilir.</p>
<p>Sayfalarıyla uygulama bölümünde sonuna geldik. Bu makalede Tablo  oluşturmayı, Dataset oluşturmayı, Dataset Filtrelemeyi ve nesnelerle  uygulama geliştirmeyi gösterdik.</p>
<p>Herkese iyi çalışmalar&#8230;.</p>
<p>Fırat Çelik</p>
<p>firat901@hotmail.com<span id="more-1041"></span><!--more--><!--more--></p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.yazarbozar.com/2010/07/15/smatface-designerda-manuelstatic-tablolar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.yazarbozar.com/2010/07/15/smatface-designerda-manuelstatic-tablolar/</feedburner:origLink></item>
		<item>
		<title>Smartface Designer’da Data Yapıları</title>
		<link>http://feedproxy.google.com/~r/YazarBozar/~3/Xm2nBhNMtMU/</link>
		<comments>http://www.yazarbozar.com/2010/07/15/smartface-designerda-data-yapilari/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 12:31:21 +0000</pubDate>
		<dc:creator>celikfi</dc:creator>
				<category><![CDATA[Geliştirme Araçları]]></category>
		<category><![CDATA[Genel]]></category>
		<category><![CDATA[Smartface Designer]]></category>
		<category><![CDATA[smartface designer]]></category>
		<category><![CDATA[Smartface Desinger'da Manuel(statik) Tablolar]]></category>

		<guid isPermaLink="false">http://www.yazarbozar.com/?p=1038</guid>
		<description><![CDATA[Smartface Designer&#8217;da data mimarisinin yerleşik olması kullanıcıya  kullanım kolaylığı sağlamaktadır.Smartface Designer&#8217;da bulunan tablolar  uygulamalarda üç şekilde kullanılabilmektedir.Bunlar Manuel(static),  Telefondan(Device Table) ve Dinamik(dynamic) datalar olarak kullanılır.  Dataları kullanmak için sadece tabloların Dataset’ini oluşturulması  yeterlidir.
Bu yazımda Smartface Desinger&#8217;da kullanılan data yapıları hakkında  genel bir değerlendirmede bulunacağım. Tabloların nereden nasıl  oluşturulduğu, [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<h3>Smartface Designer&#8217;da data mimarisinin yerleşik olması kullanıcıya  kullanım kolaylığı sağlamaktadır.Smartface Designer&#8217;da bulunan tablolar  uygulamalarda üç şekilde kullanılabilmektedir.Bunlar Manuel(static),  Telefondan(Device Table) ve Dinamik(dynamic) datalar olarak kullanılır.  Dataları kullanmak için sadece tabloların Dataset’ini oluşturulması  yeterlidir.</h3>
<p>Bu yazımda Smartface Desinger&#8217;da kullanılan data yapıları hakkında  genel bir değerlendirmede bulunacağım. Tabloların nereden nasıl  oluşturulduğu, platforma bağlatılarının nasıl yapılacağı ve verilerin  uygulama sayfasında aksiyonlarla (Actions) nasıl çağırılacağı hakında  detaylandırılmadan anlatılacaktır. Böylece tablo ve Dataset kullanımına  geçmeden önce kullanıcıya genel bir izlenim kazandırılacağını  düşünüyorum.</p>
<p>Data yapılarını değerlendirmeden önce  bu yapıyı bir şema ile  gösterelim.</p>
<p><a href="http://celikfi.files.wordpress.com/2010/07/architecture.jpg"><img src="http://celikfi.files.wordpress.com/2010/07/architecture.jpg" alt="" width="567" height="696" /></a></p>
<p>Smartface Designer&#8217;da data yapıları üç kademede gerçekleşmekdir. İlk  olarak tabloları oluşturmamız gerekmektedir. Bu tablolar yukarıdaki  şemada da gözüktüğü gibi kullanıcı tarafından elle girilerek, telefonda  bulunan verileri alarak ve internet ortamından RSS veya WSDL bağlantısı  kurularak oluşturulan tablolardır. Smartface Designer&#8217;da kullanıcılar  kendi isteklerini karşılayabilecekleri manuel tabloları lokalde tutup,  uygulamalarında kullanabilirler. Kullanıcılar bu tablolar üzerinde  güncelleme yapabildikleri gibi her an tabloya ekleme yapabilirler.  İkinci data yapısı şekilde de görülen telefonun içindeki veriler  kullanılarak oluşturulan tablolardır.  Bu tablolar telefonda bulunan   rehberden, fotoğraflardan, videolardan, ses öğelerinden ve telefonun  bilgilerinden  oluşturulabilir. Bunun dışında dinamik olarak oluşturulan  tablolar bulunmaktadır. Bu tablolar sadece uygulama çalışırken(run  time) veri çektiği için uygulamanın kurulum boyutunu küçülterek şişmenin  önüne geçilir.  Smartface Designer&#8217;a tabloların çekilmesi için RSS veya  WSDL linkleri bulunması gerekir. Bu özelliğe sahip linklerle tabloların  görüntüleri uygulamaya çekilir. Bunların içerikleri Project Browser&#8217;da  bulunan Local Tables&#8217;da görülmemektedir. Yukarda bütün tablo  yapılarından bahsettikten sonra şimdi bu tabloların nasıl bağlandığından  bahsedelim. Uygulamada oluşturduğumuz ve zaten var olan telefondan  gelen tabloları kullanmak istersek bu tabloların Dataset&#8217;ini  oluşturmamız gerekmektedir. Bunu yapmamızdaki amaç veri tabanımızı  kullanılabilir hale getirmektir. Bir tablodan farklı adlarda birden  fazla Dataset oluşturulabilir. Elimizde bir tablonun birden fazla sanal  hali bulunduğundan birinde filtreleme yaparken diğerlerinde farklı bir  işlem yapılabilecektir. Elimizde bulunan Dataset&#8217;leri uygulama  sayfasında kullandığımız araçlarla bağlayarak tablolardaki verileri  sayfamızdaki labellarda görüntülüyebilir, bunları koşulların  parametreleri yapabilir ve Datasetini oluşturduğumuz tabloyu  filtreleyebiliriz. Araçların içinde kullandığımız aksiyonlar(Actions)  yardımıyla tabloların içindeki veriler uygulama sayfasında görüntülenir.</p>
<p>Burada Smartface Designer&#8217;da Data Yapılarının mantığını anlatmaya  çalıştım. Bundan sonraki iki makalemde Manuel data yapısı ve Telefon  data yapısını detaylarıyla anlatacağım.</p>
<p>Herkese iyi çalışmalar&#8230;</p>
<p>Fırat Çelik</p>
<p>firat901@hotmail.com</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.yazarbozar.com/2010/07/15/smartface-designerda-data-yapilari/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.yazarbozar.com/2010/07/15/smartface-designerda-data-yapilari/</feedburner:origLink></item>
		<item>
		<title>Smartface Designer ile Google Maps Haritası Çağırma</title>
		<link>http://feedproxy.google.com/~r/YazarBozar/~3/TLeeRQRAoMA/</link>
		<comments>http://www.yazarbozar.com/2010/07/13/smartface-designer-ile-google-maps-haritasi-cagirma/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 13:47:15 +0000</pubDate>
		<dc:creator>Tuna Emre</dc:creator>
				<category><![CDATA[Geliştirme Araçları]]></category>
		<category><![CDATA[Genel]]></category>
		<category><![CDATA[Smartface Designer]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Harita]]></category>
		<category><![CDATA[smartface designer]]></category>

		<guid isPermaLink="false">http://www.yazarbozar.com/?p=1011</guid>
		<description><![CDATA[Merhabalar;
Smartface Designer, mobil uygulama geliştirmek isteyenler için gerçekten büyük kolaylıklar sağlayan, hiçbir kod yazmadan sadece aksiyonlar belirleyerek uygulama yapabilmeyi sağlayan bir sürükle-bırak platformudur. Bu yazıda, Smartface Designer üzerinde sadece “HTTP Object”, “Edit Box”, “Image” ve birkaç aksiyon kullanarak, Google Maps haritası çağıracağız.
Öncelikle Google Maps, direk bir URL adresi ile statik harita hizmeti sunmaktadır (1). Bu [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Merhabalar;</p>
<p>Smartface Designer, mobil uygulama geliştirmek isteyenler için gerçekten büyük kolaylıklar sağlayan, hiçbir kod yazmadan sadece aksiyonlar belirleyerek uygulama yapabilmeyi sağlayan bir sürükle-bırak platformudur. Bu yazıda, Smartface Designer üzerinde sadece “HTTP Object”, “Edit Box”, “Image” ve birkaç aksiyon kullanarak, Google Maps haritası çağıracağız.</p>
<p>Öncelikle Google Maps, direk bir URL adresi ile statik harita hizmeti sunmaktadır (1). Bu URL kabaca şöyledir:</p>
<p><em>http://maps.google.com/maps/api/staticmap?size=240&#215;320&amp;maptype=roadmap&amp;sensor=true&amp;mobile=true&amp;zoom=15&amp;center=taksim,istanbul</em></p>
<p>Bu URL’deki parametreler isteğe göre değiştirilebilir. Mesela <em>“center=taksim,istanbul”</em> yerine direk Taksim’in koordinatları da girilebilir: <em>“center=41.036948,28.986629”</em>. Referanslarda verdiğim Google Maps Api sayfasında bu konu hakkında çok daha ayrıntılı bilgi bulabilirsiniz.</p>
<p>Google Maps hakkında kısa bir bilgi verdikten sonra, Smartface Designer ile tasarıma başlayabiliriz. Öncelikle bu örnekte “Image”, “Edit Box” ve “HTTP Object” elemanları ve 2 ayrı sayfa kullanacağız.</p>
<div id="attachment_1012" class="wp-caption aligncenter" style="width: 735px"><img class="size-full wp-image-1012" src="http://www.yazarbozar.com/wp-content/uploads/2010/07/googlemaps1.png" alt="Smartface Designer Tools" width="725" height="99" /><p class="wp-caption-text">Smartface Designer Insert Bar ve &quot;Image&quot;, &quot;Edit Box&quot; ve &quot;HTTP Object&quot; Elemanları</p></div>
<p>Yeni bir proje açarak boş bir sayfa önümüze geldikten sonra tekrar yeni sayfa butonuna tıklayarak bize gerekli olan diğer sayfayı da oluşturuyoruz. İlk sayfamız arama sayfası, ikinci sayfamız da harita sayfamız olacaktır. İlk adım olarak arama sayfamıza ait nesneleri yerleştirelim. Bu sayfada temel olarak “Edit Box” yer alacaktır. Araç çubuğundan ve “Design Object” ekranından bu nesneye ait butonu buluyoruz sürükle-bırak ile sayfamıza yerleştiriyoruz ve tasarıma göre boyutlarını, konumlarını ayarlıyoruz. Bu yerleştirdiğimiz “Edit Box” haritamızın konumunu belirleyecektir. Daha sonra sayfanın geri kalanını isteğimize göre (Banner, Left Soft Key, Right Soft Key isimleri vb.) düzenliyoruz.</p>
<p>Şimdi 2. Sayfaya geçerek haritamızı gerçekliyoruz. Öncelikle “Image” tuşuna tıklayarak sayfamıza bu nesneyi getiriyoruz. Bu haritamızın görüntüsünü ekrana yansıtacaktır. Yarattığımız “Image” nesnesini, “Palettes” ekranına geçerek genişlik ve yüksekliğini %100, X-Y konumlarını 0 (sıfır) ve “Data Source” kaynağını da önceden belirlediğimiz bir resim olarak ayarlıyoruz. Bahsettiğim “Data Source” noktası çok önemlidir, çünkü içeriği boş olan “Image” nesnesine “HTTP Object” ile gelen bir dosyayı bağlayamayız. Bu adımı yaptıktan sonra, “HTTP Object” nesnesini sayfamıza getiriyoruz. Yine “Palettes” ekranından bu objeye ait “URL” seçeneğini düzenleyerek “http://maps.google.com/maps/api/staticmap?size=240&#215;320&amp;maptype=roadmap&amp;sensor=true&amp;mobile=true&amp;zoom=15” değerine getiriyoruz. “Sending Parameters” ifadesini açarak “center” değerinde yeni bir parametre ekliyoruz ve bu parametrenin içeriğini “Object Value” seçeneğiyle Sayfa 1’de yarattığımız “Edit Box” olacak şekilde ayarlıyoruz.</p>
<div id="attachment_1013" class="wp-caption aligncenter" style="width: 433px"><img class="size-full wp-image-1013" src="http://www.yazarbozar.com/wp-content/uploads/2010/07/googlemaps3.png" alt="HTTP Object Seçenekleri" width="423" height="336" /><p class="wp-caption-text">HTTP Object Seçenekleri</p></div>
<p>Harita uygulamamızın temel iskeletini yarattık, ancak uygulamanın çalışması için belirli aksiyonlara ihtiyacımız var. Bu aksiyonları “Actions Editor” ekranından ayarlıyoruz. Öncelikle Sayfa 1’e geçerek, “Left Soft Key” tuşuna (bu tercih tamamen size aittir, herhangi bir tuş veya nesne de olabilir) hem HTTP bağlantısını hem de Sayfa 2’ye geçişi ayarlayalım. “Project Browser” ekranından Sayfa 1’i seçiyoruz, daha sonra “Keypad” ekranından “Left Soft Key” tuşuna tıklayarak “Actions Editor” ekranına geçelim. Burada önce “Network” sekmesinden “Send HTTP” seçeneğine tıklıyoruz ve ekrana gelen ayarlarda Sayfa 2’yi ve yarattığımız “HTTP Object” ifadesini seçiyoruz. Şimdi asıl önemli nokta olan, Google Maps tarafından geri gönderilen haritayı ekrana aktarmak. “Send HTTP” ayarlarından “Save Returning Value To” seçeneğini seçiyoruz ve Sayfa 2’de bulunan ve haritamızı temsil eden “Image” nesnesine bu değeri “Property” seçeneği “Image” olacak şekilde kaydediyoruz. Bu aksiyonu bitirdikten sonra yine aynı aksiyon penceresinden “Navigation” sekmesine gelip “Show Page” aksiyonun seçiyoruz ve “Page” ayarını Sayfa 2 olarak ayarlıyoruz. Smartface Designer, aksiyonları pencerede görülen sırada yaptığı için &#8220;Show Page&#8221; aksiyonunun &#8220;Send HTTP&#8221; aksiyonundan sonra koymak gereklidir. Aksi takdirde uygulama önce Sayfa 2&#8242;yi gösterip sonra haritayı çağıracağından düzgün çalışmayabilir.</p>
<div id="attachment_1014" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-1014" src="http://www.yazarbozar.com/wp-content/uploads/2010/07/googlemaps4.png" alt="Sayfa 1 &quot;Left Soft Key&quot; Aksiyonları" width="500" height="455" /><p class="wp-caption-text">Sayfa 1 &quot;Left Soft Key&quot; Aksiyonları</p></div>
<p>Ve basit bir Google Maps uygulamasını Smartface Designer ile birlikte yapmış olduk. Yazı boyunca yaptığımız işlemleri bir akış diyagramı halinde anlatırsak metni daha anlaşılır kılabiliriz.</p>
<div id="attachment_1015" class="wp-caption aligncenter" style="width: 337px"><img class="size-full wp-image-1015" src="http://www.yazarbozar.com/wp-content/uploads/2010/07/googlemapschart.png" alt="Örnek Google Maps Uygulamasının Akış Diyagramı" width="327" height="305" /><p class="wp-caption-text">Örnek Google Maps Uygulamasının Akış Diyagramı</p></div>
<p>Smartface Designer kendi Device Simulator seçeneğinde, “HTTP Object” nesnelerini henüz kullanamadığı için, yaptığımız uygulamayı Symbian, Java, Blackberry bir telefon ile veya J2ME olarak uygulamayı yayınlayarak Sun Java Wireless Toolkit (2) ile tam olarak test edebiliriz. Son olarak, yaptığımız uygulamamızın ekran görüntüleri temel olarak aşağıdaki gibi olacaktır:</p>
<div id="attachment_1018" class="wp-caption aligncenter" style="width: 502px"><img class="size-full wp-image-1018" src="http://www.yazarbozar.com/wp-content/uploads/2010/07/googlemapsekran.png" alt="Örnek Google Maps Uygulamasının Ekran Görüntüleri" width="492" height="311" /><p class="wp-caption-text">Örnek Google Maps Uygulamasının Ekran Görüntüleri</p></div>
<p>Her türlü soru ve yardım için mail adresim aracılığıyla benimle iletişime geçebilirsiniz. İyi çalışmalar.</p>
<p>Tuna Emre</p>
<p>tn.emre@gmail.com</p>
<p>Referanslar:</p>
<ol>
<li><a title="Google Maps Api" href="http://code.google.com/apis/maps/documentation/staticmaps/">http://code.google.com/apis/maps/documentation/staticmaps/</a></li>
<li><a title="Sun Java Wireless Tool Kit" href="http://java.sun.com/products/sjwtoolkit/">http://java.sun.com/products/sjwtoolkit/</a></li>
</ol>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.yazarbozar.com/2010/07/13/smartface-designer-ile-google-maps-haritasi-cagirma/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.yazarbozar.com/2010/07/13/smartface-designer-ile-google-maps-haritasi-cagirma/</feedburner:origLink></item>
	</channel>
</rss>

