Capabilities | Engin Polat\'ın Windows 8 , Windows Phone 8 ve C# içerikli programcılık sitesi

Arşiv

Etiketlenen yazılar capabilities

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

26 January 2016 Yorum yapılmamış

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;

Windows 8 uygulaması içerisinden fotoğraf ve video çekmek

10 June 2014 Yorum yapılmamış

Windows Store için geliştireceğimiz uygulama içerisinden fotoğraf ve video çekecek ve Fotoğraflar ve Videolar dizinlerine kaydedeceğiz.

Yeni oluşturduğumuz projenin Package.appxmanifest dosyasını açıyor ve Capabilities tabında yeralan Webcam, Videos Library, Pictures Library kutucuklarını işaretliyoruz. Böylece uygulamamızın çalışırken ihtiyaç duyacağı yetkileri kullanıcıdan talep edilmesini sağlıyoruz.

MainPage.xaml dosyasını açarak içerisine aşağıdaki xaml kodlarını ekleyelim ve ekranın altında bir AppBar gözükmesini, içerisinde bir adet StackPanel iki adette Button olmasını sağlayalım;

<Page.BottomAppBar>
	<AppBar>
		<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
			<Button Style="{StaticResource PhotoAppBarButtonStyle}" Click="PhotoButton_Click /">
			<Button Style="{StaticResource VideoAppBarButtonStyle}" Click="VideoButton_Click /">
		</StackPanel>
	</AppBar>
</Page.BottomAppBar>

Öncelikle PhotoButton_Click methodunun içini dolduralım;

private async void PhotoButton_Click(object sender, RoutedEventArgs e)
{
	var camera = new CameraCaptureUI();

	var capture = await camera.CaptureFileAsync(CameraCaptureUIMode.Photo);

	if (capture != null)
	{
		var file = await KnownFolders.PicturesLibrary.CreateFileAsync(Guid.NewGuid().ToString("N") + ".jpg", CreationCollisionOption.ReplaceExisting);

		await capture.CopyAndReplaceAsync(file);
	}
}

İlk olarak CameraCaptureUI sınıfından yeni bir değişken oluşturup, CaptureFileAsync() methodunu çağırıyoruz, parametre olarak CameraCaptureUIMode.Photo değerini veriyoruz, böylece fotoğraf çekmek için gerekli hazırlıklarımızı tamamlamış oluyoruz.

KnownFolders sınıfının PicturesLibrary özelliği sayesinde cihazın fotoğraf kütüphanesine erişiyoruz ve CreateFileAsync() methodunu kullanarak çekilen fotoğrafı kaydedebileceğimiz bir dosya oluşturuyoruz.

capture ismindeki değişkenin CopyAndReplaceAsync() methodu sayesinde webcam kullanılarak çekilen resmi kaydediyoruz.

Video çekimi yapacak VideoButton_Click methodunun içi PhotoButton_Click methoduna çok benziyor;

private async void VideoButton_Click(object sender, RoutedEventArgs e)
{
	var camera = new CameraCaptureUI();

	var capture = await camera.CaptureFileAsync(CameraCaptureUIMode.Video);

	if (capture != null)
	{
		var file = await KnownFolders.VideosLibrary.CreateFileAsync(Guid.NewGuid().ToString("N") + ".wmv", CreationCollisionOption.ReplaceExisting);

		await capture.CopyAndReplaceAsync(file);
	}
}

Üç önemli değişiklik var;

  • camera değişkeninin CaptureFileAsync() methoduna parametre olarak CameraCaptureUIMode.Photo değeri yerine CameraCaptureUIMode.Video değerini veriyoruz
  • KnownFolders sınıfının PicturesLibrary özelliği yerine VideosLibrary özelliğini kullanıyoruz
  • CreateFileAsync() methoduna parametre olarak verdiğimiz dosya isminin uzantısını jpg yerine wmv yapıyoruz

Böylece Windows 8 uygulaması içerisinden hem fotoğraf hem video çekebilir ve uygun dizinlere kaydedilmesini sağlayabiliriz.

Windows Phone 8 ile telefonun koordinatlarını bulma

16 July 2013 2 yorum

Windows Phone 8 SDK ile birlikte coğrafi konum API güncellendi, yeni API ile birlikte Geolocator sınıfı kullanımımıza açılmış oldu.

Windows Phone 7.5 SDK‘da yer alan GeoCoordinateWatcher sınıfı halen kullanımda, fakat özellikle Windows Phone 8 destekleyecek uygulamaların yeni Geolocator sınıfını kullanması tavsiye ediliyor.

Geolocator sınıfını kullanarak cihazın yerini bulmamız ve takip edebilmemiz mümkün.

Telefonun yerini bir defa bulmamız gerekiyorsa basitçe GetGeopositionAsync() methodunu çağırmamız yeterli.

Geolocator sınıfı ayrıca, PositionChanged event‘i sayesinde konumu takip edebilmemize de olanak sağlıyor.

Uygulama içerisinde konum bilgisini okuyabilmek için WMAppManifest.xml dosyasında Capabilities tabında yer alan ID_CAP_LOCATION kutucuğunu işaretlemiş olmamız gerekiyor.

Geolocator sınıfı Windows.Devices.Geolocation namaspace’i içerisinde tanımlıdır, kullanabilmek için öncelikle ilgili sınıfın using alanına eklememiz gerekiyor;

using Windows.Devices.Geolocation;

Ayrıca GetGeopositionAsync() method’u asenkron bir method olduğu için başına await anahtar kelimesini eklemeliyiz ve ilgili method’u async anahtar kelimesi ile işaretlemeliyiz;

private async void GetLocation()
{
	Geolocator locator = new Geolocator();
	Geoposition position = await locator.GetGeopositionAsync();
	Geocoordinate coordinate = position.Coordinate;
	lblLatitude.Text = "Lat : " + coordinate.Latitude;
	lblLongitude.Text = "Long: " + coordinate.Longitude;
}

Sonuçta aşağıdaki ekranı görmemiz lazım;

Windows 8 Metro Style Uygulamalarda Package Manifest Dosyası

18 November 2011 1 yorum

Visual Studio 2011 kullanarak yeni bir Windows Metro Style projesi başlattığımızda bizim için projeye otomatik olarak bir manifest dosyası eklenir.

Manifest dosyası Package.appxmanifest olarak isimlendirilir ve projenin kök dizininde konumlanır.

Temelinde XML formatında olan bu dosyayı kolay güncellemek için Visual Studio ile birlikte gelen GUI aracını kullanabiliriz.

Project -> Store -> Edit App Manifest menüsünden erişebilieceğimiz arayüz sayesinde manifest dosyasını çok kolay güncelleyebiliriz. Windows 8 Metro Style Uygulamalarda Async Desteği başlıklı makalemde oluşturduğumuz projenin manifest dosyasına biraz göz atalım.

Application UI

Bu tab’daki seçenekler ile uygulamamız ile ilgili temel bilgileri güncelleyebiliriz.

Display Name : Uygulamanın başlığı. Start Screen (Başlangıç Ekranı), Arama Sonuçları Sayfası, vs. kullanıcının uygulamayı göreceği her yerde bu başlık ile görüntülenecek

Entry Point : Uygulamanın açılışında kullanılacak sınıf’ın adı. Windows.UI.Xaml.Application sınıf’ından türetilmiş olması gerekiyor

Description : Uygulama ile alakalı daha uzun ve detaylı bilginin bulunabildiği açıklama alanı. 2048 karakter limiti vardır

Tiles (Logo, Wide Logo and Small Logo) : Uygulamanın ikonları

Logo : Start Screen’de (Başlangıç Ekranı) uygulamayı temsil edecek ikon

Small Logo : Listeleme modunda uygulamayı temsil edecek ikon

Wide Logo : Start Screen’de (Başlangıç Ekranı) Geniş Mod’da iken uygulamayı temsil edecek ikon

Show Name : Uygulamanın Start Screen‘deki (Başlangıç Ekranı) Tile‘ında uygulamanın adı’nın görüntülenip/görüntülenmeyeceği seçeneği

Short Name : Eğer Show Name seçeneği Yes olarak ayarlanmış ise; Short Name boş iken Display Name, Short Name dolu iken Short Name bilgisi kullanılır

Foreground Text : Uygulama başlığının Tile‘da gösterilecek rengi. Light (Açık) veya Dark (Koyu) seçeneklerinden biri olabilir

Background Color : Uygulama’nın Tile arkaplan rengi

Notifications : Yeni gelen Notication Service‘in kullanımı ile ilgili seçenekler

Badge Logo : Lock Screen‘de (Windows Oturum Açma Ekranı) uygulamanın bildirimleri göstereceği ikon

Toast Capable : Uygulamanın bildirim gösterip/göstermeyeceği seçeneği

Lock Screen Notifications : Lock Screen‘de (Windows Oturum Açma Ekranı) uygulamanın hangi tip bildirim gösterebileceği seçeneği. Badge, Tile Text, Badge and Tile Text seçeneklerinden biri olabilir

Splash Screen : Uygulamanın açılışı sırasında gösterilen karşılama ekranı ile ilgili seçenekler

Splash Screen : Uygulamanın açılış ekran görseli

Background Color : Uygulama açılış ekranının arkaplan rengi

Initial Rotation : Uygulamanın başlangıç yönü. Portrait, Landscape, Portrait and Flipped, Landscape and Flipped seçeneklerinden biri olabilir

Capabilities

Windows 8 üzerinde çalışan uygulamalar erişmek isteyecekleri kaynakları (İnternet, SMS, Webcam, Mikrofon, vs.) manifest dosyasında belirtmeliler. Manifest dosyasında belirtilmeyen kaynaklara erişim engellenmiştir.

Uygulama Manifest dosyasında ilgili kaynaklara erişeceğini bildirmiş olsa dahi, donanım eksikliğinden (WebCam’in olmaması, Mikrofon’un olmaması, vs.) dolayı bu kaynaklara erişemeyebilir.

Windows 8 uygulamaları kurulum esnasında kullanıcıya gösterilen bir ekran aracılığıyla hangi kaynaklara ihtiyaç duyacağını belirtir. Kullanıcı bu ekranda kaynaklara erişilmesine izin vermeyebilir.

Declarations

Declarations, uygulamanın İşletim Sistemine (OS) kendini tanıttığı genişletme noktalarından biridir. Declarations aracılığıyla, uygulama kendisini Arama noktalarından biri olarak (Search Provider), Paylaşım noktalarından biri olarak (Sosyal paylaşım uygulamaları), vs. tanıtabilir.

Packaging

Packaging tab’ı uygulamanın paketlenmesi ve yayınlanması ile ilgili seçenekleri içerir

Package Name : Paket’in ve dolayısıyla uygulamanın benzersiz adı, Guid formatındadır.

Package Display Name : Paket’in kullanıcılar tarafından görülebilen ismidir

Logo : Uygulamanın Windows Store (Windows Uygulama Market’i) üzerinde gözüken ikonu

Publisher : Uygulama geliştiriciye ait sertifika üzerinden otomatik olarak doldurulur. Her geliştirici, kendi sertifikası aracılığıyla uygulamasını imzalar

Publisher Display Name : Uygulama geliştiriciye ait sertifika üzerinden otomatik olarak doldurulur

Package Family Name : Uygulama geliştiriciye ait sertifika üzerinden otomatik olarak doldurulur