gpt4 book ai didi

Swift - 在靠近信标时播放声音

转载 作者:行者123 更新时间:2023-11-30 10:18:54 24 4
gpt4 key购买 nike

我买了一些信标,并按照一些教程开始使用它们。我现在遇到一个小问题,使用以下代码我可以成功更改 iPhone 的背景颜色,但声音(3 分钟的 MP3)在几秒钟后循环播放。

如何修改我的代码才能继续?

func locationManager(manager: CLLocationManager!, didRangeBeacons beacons: [AnyObject]!, inRegion region: CLBeaconRegion!) {

let knownBeacon = beacons.filter{ $0.proximity != CLProximity.Unknown }
if knownBeacon.count > 0 {
let nearestBeacon = knownBeacon[0] as CLBeacon
self.view.backgroundColor = self.colors[nearestBeacon.minor.integerValue]

if nearestBeacon.minor.integerValue == 15879 {
audioPlayer = AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: path!), fileTypeHint: "mp3", error: nil)
if let sound = audioPlayer {
sound.prepareToPlay()
sound.play()
}
}
}
}

最佳答案

只要您附近有信标,您的循环就会运行。可能还有其他方法可以做到这一点,但我能想到的是使用简单的 NSTimer。

在项目顶部的类下添加一个 bool 值

var beaconEnabled : Bool = true

将您的代码更改为类似这样的内容。注意 play() 函数后面的“beaconEnabled = true”和 NSTimer。将 300 秒更改为您需要的任何时间。

func locationManager(manager: CLLocationManager!, didRangeBeacons beacons: [AnyObject]!, inRegion region: CLBeaconRegion!) {

if beaconEnabled {

let knownBeacon = beacons.filter{ $0.proximity != CLProximity.Unknown }
if knownBeacon.count > 0 {
let nearestBeacon = knownBeacon[0] as CLBeacon
self.view.backgroundColor = self.colors[nearestBeacon.minor.integerValue]

if nearestBeacon.minor.integerValue == 15879 {
audioPlayer = AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: path!), fileTypeHint: "mp3", error: nil)
if let sound = audioPlayer {
sound.prepareToPlay()
sound.play()
beaconEnabled = false
NSTimer.scheduledTimerWithTimeInterval(300.0, target: self, selector: Selector("enableBeacon"), userInfo: nil, repeats: false)
}
}
}
}
}

然后添加此功能以再次启用您的信标

func enableBeacon () {
beaconEnabled = true
}

这将等待 300 秒,然后才能再次播放声音。

关于Swift - 在靠近信标时播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28443368/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com