アプリにフォーカスがない状態でバックグラウンドオーディオを許可します。私は現在、それを可能にしなければならない、このコードを、持っている:Swiftでバックグラウンドオーディオを使用できないようにする
do {
try AKSettings.setSession(category: .playback, with: .mixWithOthers)
} catch {
print("error")
}
AKSettings.playbackWhileMuted = true
私も能力の設定で有効になって「ピクチャーオーディオ、エアプレイと絵」を設定しています。しかし、自分のデバイスのホームボタンを押すと、オーディオは再生されません。私は間違って何をしていますか?私はAudioKitを使用して音を出すことが重要です。
私はAudioPlayer.swiftという名前のAudioKitコンポーネントをすべて格納するためにシングルトンを使用しています。ここで私は私のAudioPlayer.swiftシングルトンファイル内に持っているものです。
class AudioPlayer: NSObject {
var currentFrequency = String()
var soundIsPlaying = false
var leftOscillator = AKOscillator()
var rightOscillator = AKOscillator()
var rain = try! AKAudioFile()
var rainPlayer: AKAudioPlayer!
var envelope = AKAmplitudeEnvelope()
override init() {
super.init()
do {
try AKSettings.setSession(category: .playback, with: .mixWithOthers)
} catch {
print("error")
}
AKSettings.playbackWhileMuted = true
AudioKit.output = envelope
AudioKit.start()
}
func setupFrequency(left: AKOscillator, right: AKOscillator, frequency: String) {
currentFrequency = frequency
leftOscillator = left
rightOscillator = right
let leftPanner = AKPanner(leftOscillator)
leftPanner.pan = -1
let rightPanner = AKPanner(rightOscillator)
rightPanner.pan = 1
//Set up rain and rainPlayer
do {
rain = try AKAudioFile(readFileName: "rain.wav")
rainPlayer = try AKAudioPlayer(file: rain, looping: true, deferBuffering: false, completionHandler: nil)
} catch { print(error) }
let mixer = AKMixer(leftPanner, rightPanner, rainPlayer)
//Put mixer in sound envelope
envelope = AKAmplitudeEnvelope(mixer)
envelope.attackDuration = 2.0
envelope.decayDuration = 0
envelope.sustainLevel = 1
envelope.releaseDuration = 0.2
//Start AudioKit stuff
AudioKit.output = envelope
AudioKit.start()
leftOscillator.start()
rightOscillator.start()
rainPlayer.start()
envelope.start()
soundIsPlaying = true
}
}
をそしてここでそれを一定の周波数を送信するためにAudioKitシングルトンを参照して私のサウンドエフェクトビューコントローラの1の例である(私はについて持っていますこれらのビューコントローラのダース、独自の周波数設定で、それぞれ):
class CalmView: UIViewController {
let leftOscillator = AKOscillator()
let rightOscillator = AKOscillator()
override func viewDidLoad() {
super.viewDidLoad()
leftOscillator.amplitude = 0.3
leftOscillator.frequency = 220
rightOscillator.amplitude = 0.3
rightOscillator.frequency = 230
}
@IBAction func playSound(_ sender: Any) {
if shared.soundIsPlaying == false {
AudioKit.stop()
shared.setupFrequency(left: leftOscillator, right: rightOscillator, frequency: "Calm")
} else if shared.soundIsPlaying == true && shared.currentFrequency != "Calm" {
AudioKit.stop()
shared.leftOscillator.stop()
shared.rightOscillator.stop()
shared.rainPlayer.stop()
shared.envelope.stop()
shared.setupFrequency(left: leftOscillator, right: rightOscillator, frequency: "Calm")
} else {
shared.soundIsPlaying = false
shared.envelope.stop()
}
}
}
私はViewController.swiftファイルにAudioPlayerシングルトンをインスタンス化。
十分なコードを持っているとあまりにも多くの間に細かい線があります。あなたが尋ねた質問は以下に答えられました。あなたは物事が正しく設定されているようです。 AudioKitの例であるSongProcessorをテストして、それが正しい振る舞いをしているかどうかを確認してから、コードを比較してください。ショートカットや簡単な解決方法はありません。 –