Windows 10 UWP uygulamasının Emulator üzerinde çalıştığını yakalamak

Eğer yazdığımız uygulamanın emulator üzerinde mi yoksa gerçek cihazda mı çalıştığını anlamak istiyorsak Windows.Security.ExchangeActiveSyncProvisioning namespace‘inde yeralan EasClientDeviceInformation sınıfından faydalanabiliriz.

var deviceInfo = new EasClientDeviceInformation();</pre>

Eğer yukarıdaki kodu emulator üzerinde çalıştıracak olursak

değerleri olacak. Eğer aynı kodu gerçek cihaz üzerinde çalıştıracak olursak aynı property‘lerde cihaza göre farklı değerler olacak.

EasClientDeviceInformation sınıfını kullanarak uygulamanın çalıştığı cihazın emulator veya gerçek cihaz olduğunu aşağıdaki koddaki gibi anlayabiliriz;

public static class DeviceInfo
{
    private static EasClientDeviceInformation deviceInfo = new EasClientDeviceInformation();

    public static bool IsRunningOnEmulator
    {
        get
        {
            return (deviceInfo.SystemProductName == "Virtual");
        }
    }
}

Aşağıdaki gibi kullanabiliriz;

if (DeviceInfo.IsRunningOnEmulator)  
{
    // TODO : Emulator üzerinde çalışıyor
}


*Kaynak : Get device information on Windows*

Asp.Net Core 1.0 ile web uygulama geliştirmeye başlamak

Yeni adı ile Asp.Net Core 1.0 (eski adı Asp.Net 5) üzerinde geliştirdiğimiz web uygulamaları hem Windows hem MacOS işletim sisteminde hem de Linux işletim sisteminde çalıştırılabiliyor. Cross-Platform denilen bu tarz uygulamaları genelde cross-platform araçlar ile geliştiririz.

Microsoft, Asp.Net Core 1.0 ile web uygulamaları geliştirebilmemiz için ücretsiz olarak Visual Studio Code aracını da sağlıyor ve Visual Studio Code cross-platform çalışabilen bir uygulama geliştirme aracıdır.

Bu makale ile Visual Studio Code kullanarak Asp.Net Core 1.0 projeleri nasıl oluşturulur inceleyeceğiz ve ilk Merhaba Dünya uygulamamızı oluşturacağız.

Öncelikle Command Prompt (Windows) veya Terminal (MacOS, Linux) penceresi açıyoruz;

Projeyi oluşturmak istediğimiz dizine giderek komut satırına

yo aspnet</pre>

yazarak çalıştırıyoruz. Böylece Yeoman kullanarak Asp.Net Core 1.0 projesi oluşturacağız.

Eğer bilgisayarda Yeoman kurulu değilse yukarıdaki kod çalışmayacaktır. Öncelikle Command Prompt (Windows) veya Terminal (MacOS, Linux) penceresi içerisinde aşağıdaki kodu çalıştırarak yo aracını kurabilirsiniz;

npm install -g yo

Eğer bilgisayarda npm kurulu değilse, Node.js anasayfasından indirerek kurabilirsiniz.

Yeoman aspnet komutunu çalıştırırken bize ne tip bir proje oluşturmak istediğimizi sorar, listeden Empty Application seçeneğini seçebiliriz.

Yeoman çalışmaya devam ederken projemize vermek istediğimiz ismi sorar, bu makalede ben aspnetcoreornek ismini verdim;

Böylece Yeoman projeyi istediğimiz dizinde oluşturmuş oldu.

Komut satırında projenin dizinine giderek

dnu restore

komutunu çalıştırıyoruz. Böylece projedeki project.json dosyasında tanımlı olan paketler proje dizinine indiriliyor. Eğer bu komutu çalıştırmazsak, uygulamanın ihtiyaç duyduğu paketler eksik olacak ve uygulama çalışmayacak.

Proje kodlarını açmak için bir editöre ihtiyacımız var. Visual Studio Code cross-platform Asp.Net projeleri geliştirmek için gene cross-platform geliştirilmiş bir araç.

code .

komutunu çalıştırarak proje dizinini Visual Studio Code ile açıyoruz;

Visual Studio Code açıldığında soldaki panelde proje dizininde yeralan dosyalar listeleniyor.

project.json dosyası içerisine bakarsak, projenin çalışabilmek için ihtiyaç duyduğu paketlerin listesini görebiliriz.

Aynı şekilde Startup.cs dosyasını açacak olursak, gelen her request için yapılacak işleri görebiliriz. Empty Application projesi oluşturduğumuzdan gelen her request için geriye Hello World! döndürülüyor;

Projeyi bir tarayıcı içerisinde görmek istiyorsak projenin dizininde

dnx web


komutunu çalıştırmalıyız. Böylece *http://localhost:5000* adresi üzerinde proje çalışmaya başlayacak.

![](/assets/uploads/2016/01/aspnetcore-11.png)

**Microsoft Edge**, **Internet Explorer**, **Google Chrome**, **Mozilla Firefox**, **Safari**, **Opera**, vs gibi bir tarayıcıyı açıp adres satırına *http://localhost:5000* yazacak olursak *Hello World!* cevabının görüntülendiğini görebiliriz;

![](/assets/uploads/2016/01/aspnetcore-13.png)

Aslında gelen her request için *Hello World!* sonucunu döndürdüğümüzden, *http://localhost:5000* ile başlayan hangi adrese gidersek gidelim hep aynı *Hello World!* sonucunu göreceğiz;

![](/assets/uploads/2016/01/aspnetcore-8.png)

Unity3D ile sahneye saat ve gerisayım eklemek

Bu makaleyi okumadan önce Unity3D Kategorisindeki diğer makalelerimi okumanızı tavsiye ederim.

Bu makale sonunda sahneye saati ve 60 saniyeden geri sayımı gösteren iki yazı koyabileceksiniz.

Öncelikle Unity3D‘yi açarak bir oyun projesi oluşturuyoruz;

Hierarchy panelinden Main Camera nesnesini seçiyor ve Projection özelliğinde Ortographic değeri olduğunu kontrol ediyoruz. Scene alanında tam kamera’nın arkasından bakmak için GameObject menüsü altından Align View to Selected menüsüne tıklıyoruz.

Sahneye bir Text nesnesi eklemek için Hierarchy panelinde boş bir yere sağ tuşla tıklıyor ve UI kategorisi altından Text menüsünü seçiyoruz.

Oluşturulan Canvas ve Text‘in kamera’nın gördüğü alanın içerisinde olmasını sağlamak için Canvas seçili iken Render Mode özelliğine Screen Space - Camera değerini giriyoruz. Ayrıca Render Camera özelliğine Hierarchy panelinden Main Camera nesnesini sürükleyip bırakıyoruz.

Hierarchy panelinden Text nesnesini seçip Inspector panelinde gözüken Rect Transform kategorisi altından sahnede gözükeceği konumu belirliyoruz. Örneğin sahnenin sol üst köşesinde olması için left sütunu ile top satırının kesiştiği hücreye tıklıyoruz.

Hierarchy panelinde gözüken Text nesnesine isim olarak TimerText değerini verdikten sonra Edit menüsü altından Duplicate seçeneğini seçerek aynı nesneden bir tane daha oluşturuyoruz.

Yeni oluşturduğumuz Text nesnesine isim olarak CountdownText verip, sahnenin sağ üst köşesine hizalıyoruz.

Her iki Text nesnesinin de Inspector panelinden erişilebilen Font, Font Size ve Color değerlerini değiştirerek, sahnede büyük beyaz harfler gösterecek hale getiriyoruz.

Hierarchy panelinden Canvas nesnesini seçip Inspector panelinden Add Component butonuna tıklıyoruz ve New Script seçeneğini seçiyoruz.

Canvas nesnesine eklediğimiz yeni script’e TimeManager ismini verebiliriz.

TimeManager.cs dosyasını açarak için aşağıdaki kodları yazıyoruz;

using System; using UnityEngine; using UnityEngine.UI;

public class TimeManager : MonoBehaviour { Text timerText; Text countdownText;

float countdownTo = 60.0F;

void Start()
{
    timerText = GameObject.Find("TimerText").GetComponent&lt;Text&gt;();
    countdownText = GameObject.Find("CountdownText").GetComponent&lt;Text&gt;();
}

void Update()
{
    countdownTo -= Time.deltaTime;

    if (countdownTo > 0)
    {
        countdownText.text = countdownTo.ToString();
    }

    timerText.text = DateTime.Now.ToString("hh:MM:ss");
} }

Öncelikle Start() methodunda ismi TimerText ve CountdownText olan iki nesneyi bulup içlerindeki Text elementlerine erişiyoruz ve bunları birer değişkende saklıyoruz. Böylece daha sonra bu nesnelere kolay bir şekilde erişebileceğiz.

Update() methodunda 60 saniyeden geri sayma yapabilmek için countdownTo değişkeninden geçen süreyi çıkartıyoruz ve elde ettiğimiz değeri sahnedeki CountdownText nesnesinde gösteriyoruz.

Son olarak Update() methodunda DateTime sınıfının Now özelliğinden elde ettiğimiz değeri saat:dakika:saniye formatına çeviriyoruz ve sahnedeki TimerText nesnesinde gösteriyoruz.

Eğer oyunu başlatacak olursak 60 saniyeden geri sayım ve bilgisayarın saati ekranda gözükecek;

Windows 10 UWP uygulamalarında ön veya arka kamera'nın görüntüsünü almak

Windows 10 UWP uygulamalarında cihazda bulunan ön veya arka kamera’dan birinin görüntüsünü alarak ekranda göstermek isteyebiliriz.

Örneğin, daha kaliteli olduğu için arka kamera‘nın görüntüsünü alıp üzerine filtre uygulayarak ekranda önizleme yaptırabiliriz.

Aynı şekilde ön kamera‘nın görüntüsünü ekranda göstererek kullanıcının aynaya bakıyormuş gibi uygulamayı kullanmasını sağlayabiliriz.

Hemen Visual Studio‘yu açarak yeni bir proje oluşturalım ve nasıl yapabildiğimize bakalım.

Windows kategorisinden Blank App (Universal Windows) proje template’ini seçerek, projeme bir isim veriyorum;

2-00

Solution Explorer‘dan erişebildiğim Package.appxmanifest dosyasına çift tıklayarak açıyoruz.

2-01

Capabilities tab’ında yeralan WebCam ve Microphone kutucuklarını işaretliyoruz;

2-02

MainPage.xaml dosyasını açıyor ve sayfaya bir CaptureElement nesnesi ekliyoruz;

MainPage.xaml.cs dosyasını açıyor ve OnNavigatedTo methodunu override ediyoruz. Böylece MainPage sayfasına gelindiğinde yapılacak işleri yazabileceğimiz bir method‘umuz oluyor;

OnNavigatedTo methodunda sırasıyla şunları yapıyoruz;

  • Uygulamanın çalıştığı cihazda bulunan ve video kaydetme yeteneğine sahip olan cihazların listesini alıyoruz
  • Bu cihaz listesinden ön panel‘de olanları filtreliyoruz
  • Eğer ön panelde bir video kaydedici cihaz varsa, bu cihazın Id bilgisi üzerinden cihaza erişiyoruz
  • Eriştiğimiz cihaz’ın önizlemesini MainPage.xaml dosyasında tanımladığımız CaptureElement nesnesi üzerinde göstermeye başlıyoruz

Eğer ön kamera‘nın değilde, arka kamera‘nın görüntüsünü göstermek isteseydik camera değişkenine aşağıdaki şekilde değer ataması yapmamız gerekecekti;

Unity3D ile kendi etrafında dönen Cube yapmak

Bu makaleyi okumadan önce Unity3D Kategorisindeki diğer makalelerimi okumanızı tavsiye ederim.

Bu makale sonunda sahneye koyacağınız bir Cube nesnesini kendi ekseni etrafında istediğiniz hızda döndürebileceksiniz.

Öncelikle Unity3D‘yi açarak bir oyun projesi oluşturuyoruz;

Unity3D Editor açıldıktan sonra, sahneye bir tane Cube nesnesi ekliyoruz;

  • Hierarchy panelinde boş bir yere sağ tuşla tıklanır
  • 3D Object menüsü altından Cube seçeneği seçilir
  • Hierarchy paneline eklenen Cube nesnesine çift tıklanır ve Scene alanında Cube nesnesine odaklanılır

Sahnedeki nesnelerin gözükebilmesi için üzerlerine ışık tutmak gerekir;

  • Hierarchy panelinde boş bir yere sağ tuşla tıklanır
  • Light menüsü altından Directional Light seçeneği seçilir

Kamera bakış açısını Scene alanında gördüğümüz gibi yapmak için Main Camera nesnesi seçili iken GameObject menüsünden Align with View alt menüsü seçilir.

Hierarchy panelinden Cube nesnesi seçilir, Inspector panelinde gözüken Add Component butonuna tıklanır, New Script menüsüne tıklanır ve SpinningCube yazılır.

Project Assets panelinde gözüken SpinningCube.cs dosyasına çift tıklanır ve Cube nesnesine eklediğimiz script dosyası açılır.

SpinningCube.cs dosyası içinde iki method yer almaktadır;

using UnityEngine; using System.Collections;

public class SpinningCube : MonoBehaviour {

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {

} }</pre>

Start() methodu, Cube nesnesi oyunda ilk oluşturulduğunda bir defa çalıştırılır. Update() methodu ise oyunun her “kare“sinde tekrar tekrar çalıştırılır. Örneğin, 60fps hızında bir oyunda Update() methodu saniyede 60 defa çalışacaktır.

Update() methodu içerisinde Cube nesnesini yukarı-aşağı eksen etrafında hareket ettirmemiz gerekiyor. Böylece kendi ekseni etrafında dönüyormuş gibi gözükecek.

void Update () {
    transform.Rotate(Vector3.up, Time.deltaTime * 30);
}


**Vector3.up** ile, *yukarı-aşağı* yönlü ekseni belirliyoruz, **Time.deltaTime** ile oyunun çalıştığı cihazın hızından bağımsız olarak hareket etmesini garantiliyoruz, böylece hızlı cihazlarda hızlı, yavaş cihazlarda yavaş dönmeyecek. Son olarak 30 ile çarparak bir miktar hızlı dönmesini sağlıyoruz.

Şimdi oyunu çalıştırarak **Cube** nesnesinin kendi ekseni etrafında döndüğünü görelim;

![](/assets/uploads/2016/01/1-05.gif)

Engin Polat hakkında

Chief Architect, Microsoft RD, Microsoft MVP

Ada ve Ege'nin babası ;)

Kategoriler

İstatistik

Makale Adedi: 458

Creative Commons Lisansı