Я пытаюсь показать индикатор объема в своем приложении, но сначала мне нужно отслеживать текущий объем системы.
Я использую наблюдатель, и хотя оператор печати показывает правильное значение, пользовательский интерфейс никогда не делает.
import SwiftUI
import MediaPlayer
struct ContentView: View {
@State var vol: Float = 1.0
// Audio session object
private let session = AVAudioSession.sharedInstance()
// Observer
private var progressObserver: NSKeyValueObservation!
init() {
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category.ambient)
try session.setActive(true, options: .notifyOthersOnDeactivation)
self.vol = 1.0
} catch {
print("cannot activate session")
}
progressObserver = session.observe(\.outputVolume) { [self] (session, value) in
print(session.outputVolume)
self.vol = session.outputVolume
}
}
var body: some View {
Text(String(self.vol))
}
}
// исправлено (установить категорию для окружающей среды) (обновлено в приведенном выше коде) Кроме того, каждый раз, когда приложение запускается, оно останавливает все воспроизводимые в данный момент musi c.