AppleWatch用のオーディオアプリを作成しようとしています。しかし、問題は、手を下に置くと、オーディオの再生が停止することです。バックグラウンドモードもオンにしました。誰かがこれを手伝ってくれませんか?私はこの部分で立ち往生しています。これが私がオーディオを再生するために使用したコードです。
func play(url : URL) {
do {
if #available(watchOSApplicationExtension 4.0, *) {
WKExtension.shared().isFrontmostTimeoutExtended = true
} else {
// Fallback on earlier versions
}
self.player = try AVAudioPlayer(contentsOf: url)
player!.prepareToPlay()
player?.delegate = self
player?.play()
print("-----------------")
print("Playing Audio")
print("*****************\nCurrent Time \(String(describing: self.player?.currentTime))")
} catch let error as NSError {
self.player = nil
print(error.localizedDescription)
} catch {
print("*************************")
print("AVAudioPlayer init failed")
}
}
ここで、カテゴリ設定Audio Data
からではなく、カテゴリ設定にAudio URL
追加された状態policy: .longForm
で支払いを試みていることを確認してください。アップルのドキュメントによると、この2つの設定は、バックグラウンドモードでのオーディオ再生に必要です。
// Set up the session. let session = AVAudioSession.sharedInstance()
do {
try session.setCategory(AVAudioSession.Category.playback,
mode: .default,
policy: .longForm,
options: []) } catch let error {
fatalError("*** Unable to set up the audio session: \(error.localizedDescription) ***") }
// Set up the player. let player: AVAudioPlayer do {
player = try AVAudioPlayer(data: audioData) } catch let error {
print("*** Unable to set up the audio player: \(error.localizedDescription) ***")
// Handle the error here.
return }
// Activate and request the route. session.activate(options: []) { (success, error) in
guard error == nil else {
print("*** An error occurred: \(error!.localizedDescription) ***")
// Handle the error here.
return
}
// Play the audio file.
player.play()
}
私はこのコードと、ウォッチスピーカーではなくウォッチアプリケーションでBluetooth接続のみで動作することをテストしました。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加