我在Apple Watch中触发了在后台播放文字转语音的间歇性(aargh!)问题。我已正确设置后台模式,AVSession类别和WatchKitExtensionRequest处理程序。 (见下文。)我之前有过这个工作,并且无法弄清楚改变了什么。 (可能是iOS 9有问题吗?"之前"其中包括iOS 8。)
问题是这样的:当应用程序从Watch获取请求且应用程序在后台或手机正在休眠(已锁定)时,语音有时立即播放,并且< em>其他时间在应用程序被带到前台之前不会播放。操作系统似乎有时排队音频,有时不排队。我无法在成功和失败案例之间找到任何共同点。我可以通过记录来验证在所有情况下对speakUtterance()的调用是。但它的行为有所不同,显然是随机的。唯一的线索是可能的情况是应用程序在后台运行的时间越长,立即说话的可能性就越小。
这让我把头发拉了出来。建议欢迎。
所需的背景模式:App使用AirPlay播放音频或流音频/视频
do {
try AVAudioSession.sharedInstance().setCategory(
AVAudioSessionCategoryPlayback,
withOptions:.DuckOthers
)
try AVAudioSession.sharedInstance().setActive(true)
} catch let error as NSError {
// etc...
}
var bgTaskId:UIBackgroundTaskIdentifier = 0
bgTaskId = application.beginBackgroundTaskWithName(
"Prose WKE handler",
expirationHandler: {
application.endBackgroundTask(bgTaskId)
}
)
//... Post notification to call Text-to-Speech
application.endBackgroundTask(bgTaskId)
答案 0 :(得分:3)
这里有一个解决方法:播放第二段声音(我使用了半秒的静音),使用AVAudioPlayer,在调用speakUtterance()之后,这似乎&#34; jog管道&# 34 ;.