2016-08-22 9 views
5

Utworzyłem grę (Swift 2.0, iOS9), w której muzyka w tle jest odtwarzana w sposób ciągły, a różne inne dźwięki są odtwarzane na podstawie interakcji użytkownika.Czy istnieje sposób na odtwarzanie dźwięku w jednym uchu słuchawkowym w wersji 2.0 przy użyciu AVFoundation?

Ale teraz chciałbym odtworzyć określony dźwięk tylko w prawym lub lewym uchu, jeśli odtwarzacz używa słuchawek. Czy jest to możliwe przy użyciu AVFoundation?

Każda pomoc lub porada są mile widziane.

Odpowiedz

6

W ten sposób można odtwarzać dźwięk w lewo lub w prawo.

import UIKit 
import AVFoundation 

class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
     testSound() 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    var audioPlayer = AVAudioPlayer() 
    let alertSound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("CheckoutScannerBeep", ofType: "mp3")!) // If sound not in an assest 
    //let alertSound = NSDataAsset(name: "CheckoutScannerBeep") // If sound is in an Asset 
    func testSound(){ 
     do { 
      //  audioPlayer = try AVAudioPlayer(data: (alertSound!.data), fileTypeHint: AVFileTypeMPEGLayer3) //If in asset 
      audioPlayer = try AVAudioPlayer(contentsOfURL: alertSound) //If not in asset 
      audioPlayer.pan = -1.0 //left headphone 
      //audioPlayer.pan = 1.0 // right headphone 
      audioPlayer.prepareToPlay() // make sure to add this line so audio will play 
      audioPlayer.play() 
     } catch { 
      print("error") 
     } 

    } 

} 
+0

Tak, to działało. Dziękuję bardzo .. – Suhas

+0

Chciałbym móc to powtórzyć dwa razy. Wszystkie komentarze były bardzo przydatne i sprawiły, że kod był czytelny. Bardzo dobra odpowiedź, jeszcze raz dziękuję. również, czy mógłbyś wskazać potrzebę instrukcji audioPlayer.prepareToPlay() – Suhas

1

Można sprawdzić, czy dźwięk jest odtwarzany przez słuchawki zanim grać ten dźwięk z tej funkcji

func headsetPluggedIn() -> Bool { 
    let route = AVAudioSession.sharedInstance().currentRoute 
    return (route.outputs).filter({ $0.portType == AVAudioSessionPortHeadphones }).count > 0 
} 

można zmienić dźwięk do lewego lub prawego ucha z patelni własności AVAudioPlayer wygląda tak

myAudioPlayer.pan = 1 

ustawić go na lewym uchu -1 lub 1 dla prawego ucha

+0

To było bardzo pomocne. Nie myślałem o sprawdzaniu słuchawek przed odtworzeniem dźwięku. Ale punkt, który podjąłeś, ma dużo sensu ... – Suhas

Powiązane problemy