Volkan Atasever

mühendislik, edebiyat, retro computer, yazılım, şiir, nümismatik, bilişim, podcast ve daha bir çok yazılarım...

Yılın yükselen Trendi: "Android Tabletler"

clock Şubat 8, 2011 09:02 by author Volkan Atasever

PCWorld Mobil Programlama köşemde seçtiğim ve 2011'in yeni trendlerinden biri olarak belirlediğimiz Android tabletler dolu dizgin yoluna devam ediyor. CES 2011'e de damgasını vuran tabletler hem teknoloji hem de kullanım aşamalarından dolayı fazlasıyla tercih edilmeye başlandı. Donanımda ve yazılımda esneklik en sevdiğim yönlerden biri. Çoğu kişi Android cihazlar için bunun olumsuz olduğu görüşünde olsada ucuz donanımlarlada Android'lerin çalışması benim için bilgisayar teknolojisinin gelişmesindeki en temel unsurlardan biriydi. Pazarda 300tl'den 2000tl'ye kadar Android tablet bulma mümkün. Aradaki fark daha az gelişmiş ve değişik teknolojili dokunmatik ekrandan ve işlemci, ram özelliklerinden kaynaklanmakta. Tek sorun ise ucuz ürünlerde daha az keyifli kullanıcı deneyimi sunması donanımlarınsa zaman zaman yetersiz kalmasından kaynaklanmaktadır.  Geniş bir yelpazede ise bu durumun olması yadsınamaz. Standart bir donanım kullanımı güncellemelerde ve yeni OS update'lerinde önemli bir yer tutmakteyken ürünlerin teknoloji sever her kesime hitap etmesi benim açımdan çok büyük bir artı. Kişisel olarak hali hazırda değişik teknolojili cihazlar kullanmaktayken Android geliştirme açısından deneyim ve denemelerimi yapmam için benim içinde bir tercih olmuştur.

 



Bahçeşehir Üniversitesindeydim

clock Aralık 1, 2010 21:26 by author Volkan Atasever

Mobil Cihazların Devrimi ve Programlama isimli seminerimi vermek üzere Bahçeşehir Üniversitesindeydim. 1 Aralık 2010 tarihinde gerçekleşen seminerim oldukça keyifli geçti. Semineri KODLAB yayıncılıkta destekledi. Organizasyona katkılarından dolayı Bahçeşehir Üniversitesi Bilgisayar Mühendisliği kulübüne teşekkür ederim. Bu seminerimi geçen senelerde de vermiş fakat her geçen gün gelişen teknolojilerden dolayı her seminer öncesi güncellenmiş bir versiyonunu hazırlamaktayım. 2 bölümde gerçekleşen bu seminerde ilk bölüm Mobil Cihazların devrimine ikinci bölümse Mobil Programlamaya ayrılmıştır. Türkiyedeki ilk windows phone 7 içeren semineri verdiğimi hatırlatmak isterim. Bu seimnerde de demolar iki bölüm şeklinde işlenmiştir. İlk bölüm Windows Mobile 6.x demoları ikinci bölümse Windows Phone 7 demoları olarak gerçekleşmiştir.



WP7 ile ilk XNA projesi

clock Aralık 1, 2010 03:09 by author Volkan Atasever

Windows Phone 7 bildiğiniz gibi temel olarak iki proje tipini sunmaktadır. Bunlar Silverlight proje tipi ve XNA proje tipi. Silverlight ile günlük, ticari ve eğlenceye yönelik uygulamaları yaparken XNA kullanarak Windows Phone 7 cihazları için eğlenceli oyunlar yapabilmekteyiz. Alt katmanda ortak kullanılan bileşenlerle birlikte yapabilecekleriniz aslında hayal gücünüzle sınırlı.

Nedir bu XNA ve nerelerde kullanılır ? Bunu bir grafikle açıklamak isterim XNA çoklu platform desteği sunmaktadır. Windows 7, Windows Phone 7 ve XBOX 360 desteklemektedir.

Bir XNA projesinin çalışma prensibini bilmek en önemli noktalardan biridir. Başlangıç değerleri ile başlanır, içerikler yüklenir ve durmadan bir Update – Load döngüsü devam eder. Bununla ilgili grafiği aşağıda görebilirsiniz.

 

Öncelikle bir XNA projesi başlatalım. Bunun için Windows Phone 7 SDK’sı yüklenmiş bir Visual Studio 2010 veya Visual Studio 2010 Express for Windows Phone kullanmanız gerekmektedir.

 

Bir proje başlatıyoruz. Windows Phone 7 için bir XNA projesi yapacağımız için XNA sekmesine gelmemiz lazım.

Burada Windows Phone Game (4.0) seçeneğini seçiyoruz. Bu arada projemizin lokasyonunu, ismini ve çözüm ismini burada belirtiyoruz.

 

Projemizi açtığımzıda bir dizayn penceresi göremeyeceksiniz. Bu oyun programlama prensibinin ilk adımıdır.  Projeyle gelen ilk kod aşağıdaki gibidir.

 

using System;

using System.Collections.Generic;

using System.Linq;

using Microsoft.Xna.Framework;

using Microsoft.Xna.Framework.Audio;

using Microsoft.Xna.Framework.Content;

using Microsoft.Xna.Framework.GamerServices;

using Microsoft.Xna.Framework.Graphics;

using Microsoft.Xna.Framework.Input;

using Microsoft.Xna.Framework.Input.Touch;

using Microsoft.Xna.Framework.Media;

 

namespace WindowsPhoneGame1

{

    ///<summary>

    /// This is the main type for your game

    ///</summary>

    public class Game1 : Microsoft.Xna.Framework.Game

    {

        GraphicsDeviceManager graphics;

        SpriteBatch spriteBatch;

 

        public Game1()

        {

            graphics = new GraphicsDeviceManager(this);

            Content.RootDirectory = "Content";

 

            // Frame rate is 30 fps by default for Windows Phone.

            TargetElapsedTime = TimeSpan.FromTicks(333333);

        }

 

        ///<summary>

        /// Allows the game to perform any initialization it needs to before starting to run.

        /// This is where it can query for any required services and load any non-graphic

        /// related content.  Calling base.Initialize will enumerate through any components

        /// and initialize them as well.

        ///</summary>

        protected override void Initialize()

        {

            // TODO: Add your initialization logic here

 

            base.Initialize();

        }

 

        ///<summary>

        /// LoadContent will be called once per game and is the place to load

        /// all of your content.

        ///</summary>

        protected override void LoadContent()

        {

            // Create a new SpriteBatch, which can be used to draw textures.

            spriteBatch = new SpriteBatch(GraphicsDevice);

 

            // TODO: use this.Content to load your game content here

        }

 

        ///<summary>

        /// UnloadContent will be called once per game and is the place to unload

        /// all content.

        ///</summary>

        protected override void UnloadContent()

        {

            // TODO: Unload any non ContentManager content here

        }

 

        ///<summary>

        /// Allows the game to run logic such as updating the world,

        /// checking for collisions, gathering input, and playing audio.

        ///</summary>

        ///<param name="gameTime">Provides a snapshot of timing values.</param>

        protected override void Update(GameTime gameTime)

        {

            // Allows the game to exit

            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)

                this.Exit();

 

            // TODO: Add your update logic here

 

            base.Update(gameTime);

        }

 

        ///<summary>

        /// This is called when the game should draw itself.

        ///</summary>

        ///<param name="gameTime">Provides a snapshot of timing values.</param>

        protected override void Draw(GameTime gameTime)

        {

            GraphicsDevice.Clear(Color.CornflowerBlue);

 

            // TODO: Add your drawing code here

 

            base.Draw(gameTime);

        }

    }

}

İşe yara birşeyler yapmamız için işe yarar bir kod yazmamız gerekmektedir. Yukarıdaki grafikte incelediğimiz gibi oyun esnasında Update ve Draw döngüsü geçmekte.

Fakat bizim yapmamız gereken bir iş yapabilen XNA projesi yapmak olmalıdır. Bunun için MSDN kaynaklarından faydalanıp biraz geliştirdiğim bir kod parçası üzerinden giderken MSDN üzerinde anlatılmayan hatalardan ve çözümlerinden bahsedeceğim.

using System;

using System.Collections.Generic;

using System.Linq;

using Microsoft.Xna.Framework;

using Microsoft.Xna.Framework.Audio;

using Microsoft.Xna.Framework.Content;

using Microsoft.Xna.Framework.GamerServices;

using Microsoft.Xna.Framework.Graphics;

using Microsoft.Xna.Framework.Input;

using Microsoft.Xna.Framework.Input.Touch;

using Microsoft.Xna.Framework.Media;

 

namespace XnaHelloPhone

{

    public class Game1 : Microsoft.Xna.Framework.Game

    {

        GraphicsDeviceManager graphics;

        SpriteBatch spriteBatch;

        Texture2D logoTexture;

        Vector2 logoPosition;

 

        public Game1()

        {

            graphics = new GraphicsDeviceManager(this);

            Content.RootDirectory = "Content";

 

            // Frame rate is 30 fps by default for Windows Phone.

            TargetElapsedTime = TimeSpan.FromSeconds(1 / 30.0);

        }

 

        protected override void Initialize()

        {

            // TODO: Add your initialization logic here

 

            base.Initialize();

        }

 

        protected override void LoadContent()

        {

            // Create a new SpriteBatch, which can be used to draw textures.

            spriteBatch = new SpriteBatch(GraphicsDevice);

 

            // TODO: use this.Content to load your game content here

            logoTexture = Content.Load<Texture2D>("volkanatasever");

 

            Viewport viewport = graphics.GraphicsDevice.Viewport;

            logoPosition = new Vector2(

                (viewport.Width - logoTexture.Width) / 2,

                (viewport.Height - logoTexture.Height) / 2);

        }

        protected override void UnloadContent()

        {

            // TODO: Unload any non ContentManager content here

        }

        protected override void Update(GameTime gameTime)

        {

            // Allows the game to exit

            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)

                this.Exit();

 

            // TODO: Add your update logic here

            TouchCollection touchCollection = TouchPanel.GetState();

            if (touchCollection.Count > 0)

            {

                TouchLocation t1 = touchCollection[0];

 

                double x = t1.Position.X - (logoPosition.X + (logoTexture.Width / 2));

                double y = t1.Position.Y - (logoPosition.Y + (logoTexture.Height / 2));

                double speed = Math.Sqrt(x * x + y * y) / 20;

 

                double angle = (float)Math.Atan2(y, x);

 

                logoPosition.X += (float)(speed * Math.Cos(angle));

                logoPosition.Y += (float)(speed * Math.Sin(angle));

            }

 

            base.Update(gameTime);

        }

        protected override void Draw(GameTime gameTime)

        {

            GraphicsDevice.Clear(Color.Red);

 

            // TODO: Add your drawing code here

            spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend);

            spriteBatch.Draw(logoTexture, logoPosition, Color.White);

            spriteBatch.End();

 

            base.Draw(gameTime);

        }

    }

}

 

Bu program sayesinde arka planı kırmızı olan bir uygulamada hareket edebilen bir resme sahip olacağız.

Uygulamadan görüntüler:



WP7 ile Aldığım ilginç Hata!

clock Kasım 17, 2010 06:45 by author Volkan Atasever

Visual Studio 2010 Professional sürümüne SDK’yı yükleyerek WP7 projelerimi Express edition’dan bağımsız yapmak istedim. Bir kaç projeyle uğraştıktan sonra birden VS 2010 üstünde projeyi çalıştırmayı denediğimde “Zune software is not installed. Install the latest version of Zune software” hatası aldım. Hatta bu zune software’i indirmek için bir internet araması bile yaptım. Dikkatimden kaçan bu hatanın sonucunu ise biraz VS 2010’a dikkatlice bakınca anlayabildim. Uygulamayı yazdıktan sonra projenin çalışması için gerekli aygıt varsayılan olarak “Windows Phone Device” şeklinde seçili kalmış. Tabi durumu düzeltince emülatörde silverlight uygulamam açıldı. Projemi çalıştırabildim. Bunun için bu ufak ayrıntıya dikkat etmekte gerek var. Varsayılan olarak Device seçeneği size boş yere internette arama yapmaya götürebilir. Bu hata için endişelenmemin sebei ise önceki uygularımın varsayılan olarak emülatörle çalışırken birden device seçeneğine geçmiş olmasıydı. Bilinçli bir seçim değildi.

 



WP7 ile Ekran Görüntüsü Yakalama

clock Kasım 16, 2010 04:41 by author Volkan Atasever

Windows Phone 7 geliştirme yazımla herkese merhaba! Mobil dünyanın yeni çocuğu olan WP7 ile beta sürümleri ile geliştirmeyle ilgili bilgileri zamanında vermiştim. Peki final sürümü bize neler getirdi neler götürdü. Bu yazıda inceleyeceğimiz bu konu bizi oldukça heyecanlandıracaktır. Öncelikle bir iyi bir kötü haberim var.

İyi haber:

XNA ve Silverlight platformu mükemmel.

Kötü haber:

Native kod desteği ortadan kalktı.

 

Geliştirme yapısını MSDN üzerinden aldığım bir grafikle açıklamak isterim.

 

Üst katmanda iki seçenek görüyoruz. Silverlight projesi veya XNA projesi ile oyunlar adı altında. XNA eskiden sadece oyun geliştiricileri ilgilendirirdi ve genelde ben uzak durmayı tercih ederdim. Çünkü gerçek manada masaüstü platformu için oyun yazmak 80’lerdeki kadar kolay değil. Tek başına yapılacak bir işse hiç değil. Mobil platformlarda nispeten küçük oyunlar yazma konusu ise beni bu aralar cezbetmeye başladı. Fakat bizim asıl durmamız gereken ve en çok yazılım geliştireceğimiz proje tipi Silverlight olacaktır. Artık standart ve klasik windows kontrollerinden kurtuluyoruz. Uygulamalar, animasyonlar ve silverlight kontrolleriyle çok daha zengin uygulamalar yapabilceğiz. Bunun altında ise sensor API’lar mevcut nedir bu sensor API’ları derseniz bir IPhone’u yatay çevirdiğinizde verdiği tepkiyi sensörler gerçekleştirmekte. Aynı sensörler WP7 telefonlarımızda da bulunmakta. WM 6.x telefonlardaki en büyük zorluklardan birisi Media ve ses işlemlerinde ya 3. Parti yazılım kullanmak ya da oturup native kod yazma zorunluluğuydu. XNA API’ları ile bu çözülmüş durumda. Çekirdek kısımda ise her zaman bildiğimiz ve kullandığımız yeni versiyon bir .NET Comapct Framework durmakta. Yeni ve zengin kullanıcı arayüzü geliştirmek oldukça memnun edici bir durum olacaktır. En azından onca uğraş verdiğimiz uygulama son kullanıcı için daha cazip hale gelecektir. Önemli noktalardan biriyse artık yazdığımız kod satırları daha da azalıyor. .NET Compact Framework 3.5 ile karşılaştırdığımızda spesifik uygulamalarda yaptığımız kodların azaldığını görmekteyim. Çoğu zaman zaten native koda da ihtiyaç duymuyorsunuz. Herşeyin yönetilen kod olarak sunulduğu bu dünya oldukça eğlenceli. İsterseniz biraz WP7’nin deirnliklerine inelim. Bunun için bir uygulama yapıp neler olup bitiyor bunu inceleyelim.

Yapacağımız uygulama .NET CF üstünde 15-20 satırla yapabileceğimiz butona bastığımızda o anki ekran görüntüsünü yakalayabilen bir uygulama olsun. Bunun için uygulamamızda standart olarak gelen isim alanlarına aşağıdaki isim alanını ekleyelim.

 

using System.Windows.Media.Imaging;

 

Ardından formumuzun dizayn penceresine standar silverlight kontrollerinden olan buton kontrolü ve image kontrolü ekleyelim.

Uygulamamızın kullanıcı arayüzü:

 

Uygulamamızın C# kodu:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Net;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Animation;

using System.Windows.Shapes;

using Microsoft.Phone.Controls;

using System.Windows.Media.Imaging;

 

namespace WindowsPhoneApplication12

{

    public partial class MainPage : PhoneApplicationPage

    {

        public MainPage()

        {

            InitializeComponent();

        }

 

        private void button1_Click(object sender, RoutedEventArgs e)

        {

 

            WriteableBitmap bmp = new WriteableBitmap((int)this.ActualWidth, (int)this.ActualHeight);

            bmp.Render(this, null);

            bmp.Invalidate();

            this.image1.Source = bmp;

           

        }

    }

}

 

Uygulamamızın çıktısı:

 



Volkan Atasever Kimdir ?

E-Mail: volkan(et)volkanatasever.com

Genel Müdür/S4G 
Bilgisayar Mühendisi

mühendislik, edebiyat, retro computer, yazılım, şiir, nümismatik, bilişim, podcast ve bir çok kategoride yazılarım...

Yazılım Kitaplarım

   

Şiir Kitaplarım

Dergi Yazılarım

 

Sosyal Ağlarım

 

 

 

 

Retro Bilgisayar Dergimiz

Türkçe Retro Bilgisayar dergimiz haziran 2016'da ilk sayısını çıkardı. ilk sayı yeni bir internet sitesinden tekrar yayınlanacaktır. Retro camiası tüm dünyada oldukça eğlenceli bir camia. Sizde katkıda bulunmak isterseniz bana mail atmanız yeterli. Dergimiz PDF formatında ve tamamen ücretsizdir.

Yasal Bilgi

Sitedeki yazıları,kodlar ve diğer materyaller Volkan Atasever'e aittir. Yazarı ve siteyi kaynak göstererek yazıları paylaşabilirsiniz.  Copyright(c)2004-2017

Sign In

Yazılım