Swift'te AVPlayer ve Entegrasyonu


Görsel Referansı


Herkese selamlar. Ben Yuşa, WeWALK'ta iOS Developer olarak çalışıyorum. Bu mobide, Swift'te AVPlayer'ı kullanarak bir ses dosyasını nasıl yöneteceğimizi öğreneceğiz. AVPlayer, hem lokal hem de remote bir ses dosyasının oynatılmasını sağlar. Bu mobide oynatma, duraklatma ve devam ettirme gibi çeşitli eylemleri adım adım açıklayacağım. Bir ses dosyasını işlemek için projelerinizden herhangi birine aynı yöntemleri uygulayabilirsiniz. Öyleyse, AVPlayer ile neler yapabileceğimize bakalım.


AVPlayer'ı Oluşturma

Görsel Referansı


Bir ses dosyasını yönetmek için öncelikle AVFoundation adlı framework'u import etmeliyiz.

import AVFoundation

Ardından, AVPlayer'ın bir örneğini oluşturabiliriz. Öyleyse, basitçe oluşturalım.

/// This variable provides to create an instance of the _AVPlayer_.
private var audioPlayer: AVPlayer?

Daha sonra, bir ses dosyası eklemek için AVPlayerItem'in bir örneğini de oluşturmamız gerekir. string adlı URL parametresi için, yönetmek istediğimiz herhangi bir URL'yi eklemeliyiz.

/// This constant provides to create an instance of the _AVPlayerItem_.
let playerItem = AVPlayerItem(url: URL(string: url)!)

self.audioPlayer = AVPlayer(playerItem: playerItem) // Add the item to manage.

Artık ses dosyası için ilgili işlemleri yapabiliriz.



Ses Dosyasını Oynatma

Görsel Referansı


Ses dosyasını, aşağıda gördüğünüz yalnızca bir satır kodla oynatabiliriz.

self.audioPlayer?.play() // Play the .mp3 audio file.


Ses Dosyasını Duraklatma

Görsel Referansı


Tıpkı ses dosyasını oynatmak için yaptığımız gibi, aşağıda gördüğünüz yalnızca bir satır kodla duraklatabiliriz.

self.audioPlayer?.pause() // Pause the .mp3 audio file.


Ses Dosyasını Devam Ettirme

Görsel Referansı


Ses dosyasını devam ettirmek için, önce onu nereden devam ettirmemiz gerektiğine karar vermeliyiz. Demek istediğim, oynatma süresinden bahsediyorum. O zaman her şey güzel gidecek.


Ses dosyasını durdurmuştuk. Şimdi kaldığımız yerden devam edelim. leftOffPlaybackTime adlı Double türünde bir değişken tanıttım. Bu değişken, hangi saniyede kaldığımızın değerini tutacaktır. CMTime'ın saniye olarak adlandırılan ilk parametresi için leftOffPlaybackTime'ı ekledim.


Bundan sonra ses dosyasını devam ettirmek için .play() komutunu çalıştıracağım.

self.audioPlayer?.seek(to: CMTime(seconds: leftOffPlaybackTime, preferredTimescale: audioPlayer?.currentTime().timescale)) // Resume the audio file where we left off.

self.audioPlayer?.play() // Continue to play the .mp3 audio file where we left off.


Ses Dosyasının Tamamlandığını Anlama

Görsel Referansı


Ses dosyasının tamamlandığını anlamak için, NotificationCenter'ın AVPlayerItemDidPlayToEndTime bildirimini kullanabiliriz.

NotificationCenter.default.addObserver(self, selector: #selector(playerDidFinishPlaying), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: audioPlayer?.currentItem) // Notify when the playback is complete.

Bundan sonra, ses dosyasının tamamlandığını bildirmek için bir fonksiyon oluşturmalıyız. Fonksiyonun ismini playerDidFinishPlaying'i olarak ekledim. Elbette, siz istediğiniz gibi adlandırabilirsiniz. Ancak, fonksiyon adının NotificationCenter'daki #selector ile uyumlu olması gerektiğini unutmayın.

/// This function provides to notify when the playback is complete.
/// - Parameter note: This parameter is an instance of the _NSNotification_.
@objc func playerDidFinishPlaying(note: NSNotification) {
   // print("The audio file is complete!")
}


Özet

Görsel Referansı


Özetle; bir ses dosyasının nasıl oynatılacağını, duraklatılacağını ve devam ettirileceğini öğrendik. Ayrıca bir ses dosyasının tamamlandığında nasıl işleneceğini de. Bu mobi, AVPlayer'ın nasıl kullanılacağına dair sade ve temel bir içeriktir, ancak işinizi göreceğinden eminim.


Hepinizin sağlıklı bir gün geçirmesini dilerim!


#ios #swift #avplayer #audio #audiofile

0 yorum

Son Paylaşımlar

Hepsini Gör

Komünite

Platform

Mobiler.dev Anasayfa
  • Twitter
  • Instagram
  • development_düzenlendi_düzenlendi
  • Youtube
  • slack-icon-black_edited_edited_edited
  • Gri LinkedIn Simge
imageedit_2_9667998092.png
JetBrains Hakkında Detaylı Bilgi Alın

© 2021 by mobiler.dev

Kurumsal Yazar Hesapları

adesso.png
mobilerdevLogo.jpg
Yazarlık Başvurusu Hakkında Bilgi Alın, Başvuru Yapın.
Topluluk Yazarlarını Tanıyın