Hoşgeldin. Soru sormak veya cevaplamak için hemen üye ol.

Müzik veya Video oynatırken avaudiosession kullanımı

0 oy
67 kez görüntülendi
2, Temmuz, 2015 ios development kategorisinde burhanaksendir tarafından soruldu
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
3, Temmuz, 2015 yasin tarafından cevaplandı
3, Temmuz, 2015 burhanaksendir tarafından seçilmiş
 
En İyi Cevap

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

3, Temmuz, 2015 burhanaksendir tarafından yorumlandı
5, Temmuz, 2015 burhanaksendir 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.
4, Temmuz, 2015 burhanaksendir tarafından yorumlandı
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!
    }
6, Temmuz, 2015 yasin tarafından yorumlandı
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.
6, Temmuz, 2015 burhanaksendir tarafından yorumlandı
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 ?
6, Temmuz, 2015 yasin tarafından yorumlandı
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.
6, Temmuz, 2015 burhanaksendir tarafından yorumlandı
Teşekkür ederim bilgilendirdiğiniz için. Sorunsuz olanı seçelim o zaman :)
6, Temmuz, 2015 burhanaksendir tarafından yorumlandı
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 ?
6, Temmuz, 2015 yasin tarafından yorumlandı
şu an müsait değilim ancak yarın bakabilirim.
6, Temmuz, 2015 burhanaksendir tarafından yorumlandı
Tamam. Teşekkür ederim.
6, Temmuz, 2015 burhanaksendir tarafından yorumlandı
7, Temmuz, 2015 burhanaksendir 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 ?
...