我正在尝试通过SwiftUI的代码控制Apple Watch本身的音量。
我正在使用播放流音频AVPlayer
。
是否有API来设置手表的音量或使用Digital Crown来控制音量而无需
volume
上设置属性AVPlayer
。这只是设置相对于系统音量的音量。因此,如果系统静音,则不会增加音量。WKInterfaceVolumeControl
。这项工作可以完成,但是无法调整大小,并且在小屏幕上占用了大量空间。我最终解决的方法是:
WKInterfaceVolumeControl
以在SwiftUI中使用它struct VolumeView: WKInterfaceObjectRepresentable {
typealias WKInterfaceObjectType = WKInterfaceVolumeControl
func makeWKInterfaceObject(context: Self.Context) -> WKInterfaceVolumeControl {
let view = WKInterfaceVolumeControl(origin: .local)
Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { [weak view] timer in
if let view = view {
view.focus()
} else {
timer.invalidate()
}
}
DispatchQueue.main.async {
view.focus()
}
return view
}
func updateWKInterfaceObject(_ wkInterfaceObject: WKInterfaceVolumeControl, context: WKInterfaceObjectRepresentableContext<VolumeView>) {
}
}
VolumeView
到视图层次结构opacity = 0
。 .background(VolumeView().opacity(0))
volumeObserver = AVAudioSession.sharedInstance().observe(\.outputVolume) { session, _ in
print("Output volume: \(session.outputVolume)")
self.volume = Double(session.outputVolume)
}
这样您就可以更新其他视图,但是请记住,尤其是在较旧的版本中,更新并不总是(立即)进行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句