0
私のSwift 2.0アプリケーションでは、CoreLocationを使用して特定の場所から1km以内にいるかどうかを確認していますが、そうであればAVFoundationを使用してサウンドを再生します。didUpdateLocationsの更新が中止されました
問題は、私はdidUpdateLocations内のオーディオの再生を開始するとき、それはオーディオが停止した後も、更新を停止し、..です
ここに私のコードです:
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
//Method called every time the location is updated by CoreLocation
let userLocation = locations[0]
var i = 0
while i < coordinates.count {
//Looping through all different coordinates
let location = CLLocation(coordinate: coordinates[i], altitude: 0, horizontalAccuracy: kCLLocationAccuracyBest, verticalAccuracy: kCLLocationAccuracyBest, timestamp: NSDate())
if userLocation.distanceFromLocation(location) < 1001 {
//If the user is within 1000m of area[i]
if player.rate == 0.0 {
//Checks for the player already playing something else
if let url = NSBundle.mainBundle().URLForResource(titles[i], withExtension: "mp3") {
player.removeAllItems()
player.insertItem(AVPlayerItem(URL: url), afterItem: nil)
player.play()
i = 10 //We had an area that was closer and the player is finished, so we stop the loop
}
}
} else {
//This location was further than 1000 meters, so we up the count and check the next coordinate
i += 1
}
}
}
didUpdateLocationsだけの更新を停止しているのでユーザーが別のエリアに入ると、オーディオを再生できません。あなたの助けが高く評価されています!それはあなたのwhileループのように見える
おかげ
player.rate!= 0.0、または「if let url」条件がfalseの場合はどうなりますか? – DevKyle
@DevKyle何も起こらないはずです。プレーヤーのレートが0.0(つまり何も再生していない)で、URLが有効な場合のみ、オーディオを再生する必要があります。私が奇妙に感じるのは、オーディオの再生が始まると、CoreLocationがまったく動作しなくなるようです。 –
'requestLocation() 'メソッドで現在地を取得していますか?これにより、コアロケーションがデバイスロケーションを取得し、デバイスロケーションの更新を停止します。 – Adolfo