我使用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