我使用AVAudioPlayer框架和我選擇當我進入的區域(我使用的是Core Location框架,當我使用didEnterRegion
函數調用這個函數)來播放一首歌曲。用AVAudioPlayer重播音樂多重?
...
var audioPlayer = AudioPlayer()
...
func playMusic(regionIdentifier: String!){
//Get Documents Directory
let documentsDirectory = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString
//Get region label with music file
var musicFile = db.selectRegion(regionIdentifier)
//If music file exists, play specified music file.
if(musicFile != ""){
var error:NSError?
var musicFilePath = documentsDirectory + "/" + musicFile
audioPlayer = AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: musicFilePath), error:&error)
audioPlayer.prepareToPlay()
audioPlayer.play()
}
else{
NSLog("File is not in Database.")
}
}
我第一次進入區域時,音頻播放器會播放音樂片段。但是,當我想重播一首我以前已經播放過的歌曲(我正在訪問一個我之前已經訪問過的地區)時,我的歌曲不會重播。我知道功能didEnterRegion
被調用的正確,我試圖在第二次播放歌曲時發現AVAudioPlayer
中有錯誤,但似乎沒有產生任何錯誤。任何想法爲什麼我的歌不會再演第二次?謝謝!我也看過AVAudioPlayer won't play existing file a second time並試圖將NSURL轉換爲NSData類型,但我仍然收到相同的結果。
編輯:我甚至試圖打印出來,如果play()
函數返回true,它確實返回true。
不幸的是,似乎不工作。我在播放audioPlayer的正下方添加了該代碼,但似乎無法解決此問題。 – user1871869 2015-02-24 10:06:11