Hoşgeldin. Soru sormak veya cevaplamak için hemen üye ol.
0 oy
1.0k kez görüntülendi
ios development kategorisinde tarafından
Uygulamamda basitçe AVPlayer ve MPMovieplayer  ile ses ve video dosyalarını oynatıyorum.  Ancak yaşadığım bazı sorunlar var. Şöyle ki:

 

1. Eğer arama gelirse veya alarm çalarsa vs benim player'ın çaldığı yerde hemen pause moduna geçmesini ve bu telefon görüşmesi bitince veya cihazla ilgili alarm vs sona erdiğinde bunları dinleyip kaldığı yerden ses dosyasını/ video dosyasını  oynatmasını nasıl sağlayacağım?  Bir örnek vererek yardımcı olmanızı rica ediyorum.

 

2. Yine ses dosyamı oynatırken, kullanıcının cihazı sessiz moda alması durumunda player'ın sesini kesmesi gerekli bunun için de nasıl bir dinleme olayı oluşturmalıyım ?

 

Bu konularla ilgili genel olarak bir örnekle bu sorunların üstesinden nasıl gelebileceğim konusunda yardımcı olabilir misiniz ?

1 cevap

+1 oy
tarafından
tarafından seçilmiş
 
En İyi Cevap

şurada bir şeyler hazırladım örnek olması açısından, inceleyebilirsin.
https://github.com/ytur/handleAudioSessions

tarafından
tarafından düzenlendi
Çok teşekkür ederim. Bu işi ustasından öğrenme şansı yakaladığım için ayrıca mutluyum. Eksik olmayın.  

 Çalmak istediğimiz mp3 eğer internet üzerindeyse, o zaman bu kod yapısı üzerinde nereleri değiştirmemiz gerekiyor? Şu şekilde  denedim  doğru mu acaba ?

let url: String = "http://www.halleonard.com/common/audio/48007624.mp3"
            if let audioFileURL:NSURL = NSURL(string: url) {
                let audioData: NSData = NSData(contentsOfURL: audioFileURL)!
                self.player = AVAudioPlayer(data: audioData, error: nil)


Tekrar çok teşekkürler.
tarafından
Aşağıdaki fonksiyonu saat:dakika:saniye olarak düzenledim. Doğru mu ?

func durationFormatter(durationInSecond:NSTimeInterval) -> String {
        let secondInInt:Int = Int(durationInSecond)
        let seconds:Int = secondInInt % 60;
        let minutes:Int = (secondInInt / 60) % 60
        let hours = (secondInInt / 3600)
        let time: String?
        if hours > 0 {
            time = String(format: "%d:%d:%02d", hours, minutes, seconds)
        }else{
            time = String(format: "%d:%02d", minutes, seconds)
        }
        return time!
    }
tarafından
+1
durattionFormatter fonksiyonu doğru gibi gözüküyor bir test edin çalışıyorsa sıkıntı yok.

internet üzerinden bir içerik oynatacaksınız bana kalırsa bir httprequest'le doyanızı user defaults içerisinde bir temp klasöre çekin ve ondan sonra oynatılmasını sağlayın. Bu arada indirilmekte olan dosyanın indirilme durumunu gösteren bir progress bar'da bu iş için daha iyi olabilir. aksi takdirde dosyanın indirilme durumuna göre interface donabilir ve bu kullanıcı deneyimi açısından iyi bir şey değil.
tarafından
Teşekkür ederim. Swift ile httprequest işlemleri için yanılmıyorsam daha önceleri de mesajlarınızda AFNetworking'i önermiştiniz. Ama bu  obj-c gördüğüm kadarıyla. Ya da Alamofire mı kullanayım sizce ?
tarafından
+1
bridging header'la objective-c class'larını swift'e import edebilirsiniz.
AFNetworking uzun süredir bir çok geliştirici tarafından tercih edilen ve sorunları giderilmiş bir framework, alamofire'ı yapanlar da afNetworking'in geliştiricileri. fakat en son baktığımda bir kaç uyum problemi vardı ios8 öncesi sürümlerle en son durumu nedir incelemedim. Karar sizin.
tarafından
Teşekkür ederim bilgilendirdiğiniz için. Sorunsuz olanı seçelim o zaman :)
tarafından
Alamofire'ı indirdim. Sonra da şurada anlatıldığı gibi ayarladım:
http://www.raywenderlich.com/85080/beginning-alamofire-tutorial

Sonra uygulamamda import Alamofire
ve ardından istediğim yerde Alamofire... yazınca hiç tanımadı. Sanki yüklü değil gibi. Ama internetten kopyalayınca hazır kodlarını çalıştı:

let request = Alamofire.request(.GET, "http://httpbin.org/ip")

println(request)

XCode 6.4 ile denedim. Acaba sizin deneme şansınız var mı ? Bana mı özgün bu hata genel olarak mı böyle ?
tarafından
şu an müsait değilim ancak yarın bakabilirim.
tarafından
Tamam. Teşekkür ederim.
tarafından
tarafından düzenlendi
3. parti kütüphaneler kullanmadan kendim basitçe bir httprequest oluşturamaz mıyım acaba, hem de daha iyi kavramış olurum ?
...