Windows Phone 8 etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Windows Phone 8 etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

13 Ocak 2015 Salı

Windows Phone 8 ve 8.1 üzerinden Azure Blob Storage Üzerine Resim Kaydetme

     Merhabalar uzun süredir blog yazmadım ve çok az yazdığımın farkındayım :( Durdum durdum final haftasında sizlere bu yazıyı yazmaya karar verdim.

                                           Windows Phone 8 üzerinden Upload işlemi :)

    Ben Windows 10 üzerinde visual studio 2015 preview kullanıyorum ve uygulamaları buradan anlatıyor olacam. İlk olarak yeni wp8 uygulaması oluşturun MainPage.xaml içerisine bir Image nesnesi atın ve solution içerisinede bir resim atın. Daha sonra bu resmi Image üzerine atayın. Yani Source özelliğine yolu gösterin.

   Şimdi referanslara gelerek sağ tıklayıp Azure Storage referanslarını eklemek gerekiyor. Referanslara sağ tıklayıp Manage NuGet packages diyorum ve arama çubuğuna Azure Storage yazıyorum. Arama sonucu gelen ilk iki eleman bizim işimiz görecen ancak bir tanesini kullanmalıyım. Bu WindowsAzure.Storage olan referansı projeme yüklüyorum. 


                    


   Bu işlemleri başarılı bir şekilde yaptıktan sonra referanslar kısmında değişiklik olduğunu farkedeceksiniz. Şimdi geldi kod yazma olayına. Burada sizinle bir metod yazalım ve aşağıdaki gibi olsun. Daha sonra bu metodu butonumun click event'i içerisinde çağıralım.


async void UploadPhotoBytes(Image image, string UserNameToPhoto)
        {
            string accountName = "blob adı";
            string accountKey = "blob key";

            try
            {
                var credentilas = new StorageCredentials(accountName, accountKey);
                CloudStorageAccount account = new CloudStorageAccount(credentilas, false);
                CloudBlobClient client = account.CreateCloudBlobClient();
                CloudBlobContainer container = client.GetContainerReference("t2s");
                await container.CreateIfNotExistsAsync();

                BlobContainerPermissions containerPermissions = new BlobContainerPermissions() { PublicAccess = BlobContainerPublicAccessType.Blob };
                await container.SetPermissionsAsync(containerPermissions);

                CloudBlockBlob blockBlob = container.GetBlockBlobReference(UserNameToPhoto + ".png");

                var bitImage = new WriteableBitmap(image, null);
                var stream = new MemoryStream();
                bitImage.SaveJpeg(stream, bitImage.PixelWidth, bitImage.PixelHeight, 0, 100);

                byte[] dizi = stream.GetBuffer();

                await blockBlob.UploadFromByteArrayAsync(dizi, 0, dizi.Length);

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

Metodumuzu yazdık ve açıklayalım hemen ne yaptığımızı. Baştaki string değerler aşağıdaki resimdeki değerlerdir.


var credentilas = new StorageCredentials(accountName, accountKey);
CloudStorageAccount account = new CloudStorageAccount(credentilas, false);

Yukarıdaki tanımalanan iki string değere göre account kontrolünüzü yapar.

 CloudBlobClient client = account.CreateCloudBlobClient();

Bu kod ise bloba bağlanmanız için bir client oluşturur.

 CloudBlobContainer container = client.GetContainerReference("t2s");
 await container.CreateIfNotExistsAsync();

Bu kod parçacığı ise blobunuz içerisinde bir Container lara bakar ve var olup olmadığna göre oluşturur veya oluşturmaz.


 BlobContainerPermissions containerPermissions = new BlobContainerPermissions() {  PublicAccess = BlobContainerPublicAccessType.Blob };
 await container.SetPermissionsAsync(containerPermissions);

Yukarıdaki kod sizin konteynırınızın izinidir ve izin vermenizi yada yeni izinler oluşturmanızı sağlar.

 var bitImage = new WriteableBitmap(image, null);
 var stream = new MemoryStream();
 bitImage.SaveJpeg(stream, bitImage.PixelWidth, bitImage.PixelHeight, 0, 100);
 byte[] dizi = stream.GetBuffer();

Yukarıdaki kod ise sizin resminizi upload etmeden önce byte dizisine çevirmenizi sağlar.

await blockBlob.UploadFromByteArrayAsync(dizi, 0, dizi.Length);

Bu son kod ise resimden oluşan byte dizinizi azure blob storage üzerindeki konteynırınıza upload etmenizi sağlar.

Önemli: Windows Phone 8 ve Windows Phone 8.1 üzerinden Azure'a resim upload ederken direkt olarak bir Task(PhotoChoiserTask ya da CamereCaptureTask) üzerinden alacağınız stream'i upload edemiyorsunuz sürekli olarak resmin dosya yolunu reddediyor. Bunun sebebini bilmiyorum çözemedim ama bu yazıyı yazarken aklıma bişeyler gelmedi değil :)) dener tekrardan sizlere paylaşırım.

Windows Phone 8.1 üzerinden Upload işlemine gelelim şimdi :)

Yine buradada bir metod yazıp butonumuzun Click Eventinde çağıralım. Tabi burada yeni wp8.1 uygulaması oluşturmam gerekiyor :)

async void UploadPhotoBytes()
        {
            string accountName = "";
            string accountKey = "";

            try
            {
                var credentilas = new StorageCredentials(accountName, accountKey);
                CloudStorageAccount account = new CloudStorageAccount(credentilas, false);
                CloudBlobClient client = account.CreateCloudBlobClient();
                CloudBlobContainer container = client.GetContainerReference("t2s");


                BlobContainerPermissions containerPermissions = new BlobContainerPermissions() { PublicAccess = BlobContainerPublicAccessType.Blob };
                await container.SetPermissionsAsync(containerPermissions);

                CloudBlockBlob blockBlob = container.GetBlockBlobReference("resmime vereceğim isim.png");


                var folder = KnownFolders.CameraRoll;
                var file = await folder.GetFileAsync("thaldi.jpg");
                var data = await FileIO.ReadBufferAsync(file);
                byte[] dizii = data.ToArray();
             

                await blockBlob.UploadFromByteArrayAsync(dizii, 0, dizii.Length);

                var dialog = new MessageDialog("yüklendi");
                await dialog.ShowAsync();

            }
            catch (Exception ex)
            {
                var dialog = new MessageDialog("yüklenmedi\n" + ex.Message);
                await dialog.ShowAsync();
            }
        }

Burada farklı olan iki nokta var birincisi resmi solutiondan değil telefon içerisindeki yani uygulamayı çalıştıracapım telefon içerindeki bir resmi upload etmem ve seçmem ikincisi ise resmi byte dizisine çevirme işlemi.

 var folder = KnownFolders.CameraRoll;
 var file = await folder.GetFileAsync("thaldi.jpg");

Yukardaki kod benim telefonum içerisindeki varsayılan olarak oluşturulmuş dosyalara erişmemi ve içerisinde var olan bir resmi(thaldi.jpg) seçmemi sağlıyor.

var data = await FileIO.ReadBufferAsync(file);
byte[] dizii = data.ToArray();

Bu kod ise aldığım resmi byte dizisine çevirmemi sağlıyor. Diğer kısımlarda değişiklik yok.

     Peki bu değişikliklerin sebebi nedir diyecek olursak bazı kütüphaneler wp8 ve wp8.1 için ortak değiller WritableBitmap nesnesini burada referans olarak gösterebiliriz.


Umarım işinize yarar bir sonraki yazıda görüşmek üzere(hep böyle söyleyip aylar sonra yazıyorum :D). Sürçü lisan eylediysem affola.

İyi haftalar ve finaller diliyorum öğrenci kardeşlerim ;)



Share:

7 Nisan 2014 Pazartesi

App Studio Üzerinden İlk Uygulama

Selamlar değerli okuyucular,

Bu yazımda sizlere hiç kod yazmadan Windows Phone ve Windows 8 uygulama nasıl geliştirebilirsiniz bundan bahsetmek istiyorum.

Bunun için açık bir platform geliştirmişler ve adınada App Studio demişler :) süper olmasada güzel isim bence :) App Studio platformuna buradan giriyoruz. Adım adım yeni bir uygulama geliştirmek istiyorum sizlerle burada...

Step by Step :D
Hadi başlayalım öyleyse..

  1. Siteye gir :D ve ardından sağ üstteki "Start new project" butonuna tıkla. Tabi tıklamakla olmuyo bu işler :D hemen hotmail hesabınızla giriş yapmalısınız. 


2. Giriş yaptıktan hemen sonra aşağıdaki ekran açıklacaktır ve burada sizden bir uygulama  temesı seçmeniz istenecektir. Yani yap


buradan sonra hemen size bir önizleme ekranı açılacak ve temayı tanıtacak en alttaki "Create" diyorum ve uygulamamı oluşturuyorum. Bu arada bu ekran size uygulamanızın telefonda ve tablette nasıl görüneceğini de gösteriyor.

3. Bu adımda uygulamamızı artık tasarlayalım :) yani içeriğini belirleyeceğimiz nereden içerik sağlayacağımızı bu bölümde belirliyoruz. Ben sizin için bir Rss uygulaması yapacağımı söylemiştim ancak vazgeçtim ve hem Rss hemde Youtube uygulaması yapcam hadi hayırlısı :D ikisi bir arada olacak:)
Rss seçeneğini seçtiğimde aşağıdaki ekran açılacaktır..
"Confirm" butonuna tıkladığımda hemen soldaki sanal cihazda uygulamanın verileri çektiğin göreceksiz. Tabi bu adımları yaptıktan sonra sağ üstteki save butonunu kullanmayı unutmayın :) Aynı işlemi "Youtube" içinde yaparsanız sevinirim :)

4. Şimdi gelelim tema olayına ve sanırım aşağıda herşeyi anlattım :)


5. "Tiles" bölümüne geleim. Bu bölümde uygulamanızın iconunu ve Splash&Lock Screen resimlerini belirlemenizi ya da varsayılan olarak kalıp kalmayacağınızı belirlemeniz gerekiyor.



6. "Publish info" bölümünde ise uygulamamızın dili, açıklaması ve bazı güvenlik bilgilerini belirlememiz-değiştirmemiz gerekecek.

7. "Finish" butonuna basıyorum ve uygulamamın tablette ve telefonda nasıl görüneceğini bana bir önizleme olarak sunuyor. Sağ altta "Generate" butonuna basıyorum ve bana soruyor Windows Phone 8 mi yoksa Windows 8 mi diye bende hemen yapıştırıyorum cevabı WP olsun diye siz ikisinide deneyebilirsiniz :) 

Generate yani oluşturma(dünyaya getirme :D) işlemi yaklaşık 15-20 sn kadar sürebiliyor. Harika bişey lan bu diyenler vardır :D evet bu kadar kısa. Ardından size hemem bir mail geliyor uygulamanız hazırdır diye ve sitenin hemen aşağısında bi hareketlilik balayıp bir menü açılıyor burada uygulamanızı indirebileceğiniz bir QR kod ve kaynak kodlar için bir link var :) En önemliside uygulamanızı yayınlayabileceğiniz paketide oluşturuyor ;)

ve sonunda elimizde nur topu gibi bir windows phone uygulamamız var :D bu arada yukarıda yazdığım şeylerde daha sonradan tutarsızlıklar olmuşsa boşverin geçin gidin yazın bana bakarız :)

ve telefondan bir ekran görüntüsü :)



bu kadar basit ve kolay bazı şeyler işte :) kolay gelsin bir sonraki yazımda görüşmek üzere artık kaç yıl sonra yazarsam :D esen kalın :)


son olarak bir çerkes atasözü derki "Candan önce Onur gelir!" ;)
Share:

14 Eylül 2013 Cumartesi

Windows Phone 8' e Nasıl Başlanır?


Selamlar..

Windows Phone 8'e başlayabilmek için öncelikle kullandığınız işletim sisteminin Windows 8 olması gerekiyor.

  1. Windows 8 kur (aşırı derecede tavsiye ederim harika bişey :) )
  2. Visual Studio 2012 kurun yada sadece Windows Phone 8 yazabilmeniz için Visual Studio for Wp8 sürünümüde kurabilirsiniz.(indirme işlemleri buradan dreamspark aracılığı ile yapabilirsiniz)
  3. Buradan SDK 8.0  indirin ve kurun. Kendisi otomatik olarak herşeyi yapacaktır sizin ekstra yapamınız gerek birşey yok :)
  4. Son olarak wp8 dünyasına hoş geldiniz keyfini çıkarın ;)


Share: