Ses Dosyası Çalmanın Kolay Yolu

Uygulama içinden kolayca ses dosyası nasıl oynatılıyor merak ediyor musunuz?

 

Ön Bilgi

Uygulamanızı geliştirirken zaman zaman bir şeylerin eksikliğini hissedeceksiniz:

  • Sayfalar swipe gesture ile kaysa güzel olur sanki
  • Bi notification gönderme olayı mı yapsak?
  • Tablolar animasyonlu gelsin ya

İşte bunlardan biri de muhakkak ses çalmak oluyor.

Gönder butonuna basınca “viyuvvv” etsin, yanlış bişeyler olduğunda “taktak” etsin di mi? 😋

Araştırdığım kadarıyla ses çalmanın birçok yolu var. Stackoverflow da herkes farklı cevaplar vermiş, syntax sürekli değişmiş, nedense kolay bir çözüm üreten olmamış 😬

Ama siz şanslı okuyucularım swift 4 ile Ses Dosyası Çalmanın Kolay Yolu‘nu ana dilimizde öğrenmek üzeresiniz 😎

Play.gif

 

Örnek uygulamamızda birkaç tane buton yaratacağız. Her tuşa bastığımızda farklı bir ses çıkacak.

Bu uygulamayı zamanında Udemy’den aldığım bir kurstan öğrenmiştim. Çinli bayan bir hocası vardı ona selam olsun 😘

 

Ses Dosyası Çalmanın Kolay Yolu: Örnek Uygulama

 

Hadi başlayalım 🔥🔥🔥

 

UI Dizaynı

SingleView bir proje yaratalım, örnek uygulamalarda ilk işim arkaplan rengi vermektir 😁

Screen Shot 2018-09-20 at 1.40.16 AM.png

 

Ekrana 3 tane buton sürükleyelim, alt alta dursunlar.

Screen Shot 2018-09-20 at 2.19.32 AM.png

Butonların hepsini seçelim ve StackView içine alalım.

lmXZ1mjMvi.gif

 

StackView seçiliyken butonlar arasına 3 birim boşluk bırakalım ve “Distribution: Fill Equally” seçmeyi unutmayalım, eşit olsunlar.

Screen Shot 2018-09-20 at 2.25.32 AM.png

 

StackView seçiliyken auto-layout verelim ve ekranın ortasına yerleştirelim.

Screen Shot 2018-09-20 at 2.24.08 AM.png

Screen Shot 2018-09-20 at 2.26.16 AM.png

 

Şu an görüntü şöyle olmalı:

Screen Shot 2018-09-20 at 2.27.54 AM.png

 

Şimdi butonların ismini 1,2,3 olarak değiştirelim, her biri için arkaplan rengi verelim.

Screen Shot 2018-09-20 at 2.31.18 AM.png

 

Etiketler

Her buton için farklı ses çalacağımız için ve buton sayısı fazla olduğu için tag kullanmak mantıklı olacaktır.

Tag aynı türde objeler için birbirinden ayırt etmek için kullanılır. Tek tek değişken ismi vermek yerine 0-1-2 diye index verdiğimizi düşünebilirsiniz.

Buton seçiliyken Attributes Inspector dan taglere sırasıyla 0-1-2 diyelim.

Screen Shot 2018-09-20 at 3.41.50 AM.png

Screen Shot 2018-09-20 at 3.42.03 AM

Screen Shot 2018-09-20 at 3.42.14 AM.png

 

Screen Shot 2018-09-20 at 3.45.29 AM.png

Şimdi Assistant Editor ile ViewController ı yan tarafta açalım ve buttonPressed adında bir IBAction yaratalım.

Diğer butonları da bu metoda sürükleyelim

Birazdan güzel şeyler olacak 🤓

 

Metodun bağlantısı üzerine geldiğimizde 3 butonun da highlighted pozisyonuna gelmesi lazım.

Screen Shot 2018-09-20 at 3.48.47 AM.png

 

Şu tagler güzel çalışıyor mu bi test edelim, sonra devam ederiz.

Eşeği sağlam kazığa bağlayalım di mi 🐴

Ekrana şu değerleri basalım, eğer tag:

  • 0 sa “İskender”,
  • 1 ise “Kokoreç”,
  • 2 ise “Köfte”

 

 

Projeyi build edip çalıştıralım ve butonları test edelim.

 

Tag ler çalışıyormuş. Şimdi if statementleri silelim, fonksiyon boş kalsın. Birazdan ses oynatmak için dolduracağız.

 

Audio Player

Sıra geldi müzikler ile işlem yapmaya.

Örnek projemizin bulunduğu dizinde örnek 3 tane farklı ses dosyası var. Bunları indirelim.

Cv5ECqZENB.gif

 

Daha sonra projede boş bir grup yaratalım.

Eğer “New Group without folder” seçeneğini seçerseniz klasör mantıksal olur. Yani projede klasör gibi gözükür fakat fiziksel olarak gidip de yeni klasör yaratmaz.

Bizim de istediğimiz zaten bu. Yoksa müzik dosyaları için bir de dizin belirtmemiz gerekecekti.

Şimdi beep0, beep1 ve beep2 ses dosyalarını oluşturduğumuz bu Sound Files mantıksal klasörü içine sürükleyelim.

 

 

Daha sonra ViewController’a dönüp AVFoundation kütüphanesini import edelim.

 

 

ve AVAudioPlayer cinsinde bir değişken yaratalım

AVFoundation müzik dosyalarını oynatmamızı sağlayan bir built-in kütüphanedir. Müzik çalabilmemiz için bu kütüphanenin delegate ine de ihtiyacımız var.

Hatırlarsanız best-practise olarak Delegate ile ne zaman işimiz olsa bunları extension modülü içinde yazıyorduk.

Aslında kullanacağımız 1 tane fonksiyon ama biz yine de temiz kod yazmaya gayret edelim.

 

Modülde ne yazdık?

Burada yazdığımız playSound metodu şöyle çalışıyor:

  • Parametre olarak bir integer değer alıyoruz. Biz buraya butonun tag index ini veriyoruz.
  • Müzik dosyasının yerini belirtiyoruz. “beep” den sonra gelen kısım önemli çünkü buraya müziğin tag index ini yazacağız. Dolayısıyla tag index ile müziğin numerik kısmı birbiriyle uyuşmalı.
  • Yarattığımız audioPlayer içine müziği koymaya çalışıyoruz .
  • Eğer koyabiliyorsa sesi oynatıyor, koyamıyorsa hatayı konsola yazıyor.

 

Son olarak buttonPressed aksiyonunu dolduralım, bu aksiyonda playSound metodunu çağıracağız.

 

Önce hangi butonun tıklandığı bilgisini alıyoruz. chosenSound tıklanan butonun tagIndex ini tutmuş oluyor.

Daha sonra bu tagIndex i playSound metodu içinde parametre olarak veriyoruz.

 

Sonuç

Tüm işlem bu kadardı.

Şimdi projeyi çalıştırma zamanı 🔥🔥🔥

Screen Shot 2018-09-20 at 4.40.07 AM.png

 

Resim veya GIF ile sesin çaldığını kanıtlayamıyorum ama çalıştığına emin olabilirsiniz 😂

Artık ses dosyası çalmak istediğiniz zaman derste gördüğümüz bu yolu kullanabilirsiniz. Hem bu sırada taglerin ne işe yaradığını da aradan çıkarmış olduk 🙂

 

Projenin kaynak koduna Github hesabımızdan erişebilirsiniz.

 

Siz ses dosyası çalmak için ne yapıyorsunuz? Yorum kısmında tartışalım.

 

İyi kodlamalar 🔨

2
Kimler Neler Demiş?

avatar
2 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
2 Comment authors
Caner UçarAli Can Recent comment authors
  Subscribe  
En Yeniler Eskiler Beğenilenler
Bildir
Ali Can
Ziyaretçi
Ali Can

vay be derse bak 🙂

Caner Uçar
Ziyaretçi
Caner Uçar

Değerli bilgiler. M u a z z a m