48 lines
1.1 KiB
Swift
48 lines
1.1 KiB
Swift
|
|
//
|
|
// AudioPlayerView.swift
|
|
// WatchRunner Watch App
|
|
//
|
|
// Created by LittleSheep on 2025/10/29.
|
|
//
|
|
|
|
import SwiftUI
|
|
import AVFoundation
|
|
|
|
struct AudioPlayerView: View {
|
|
let audioUrl: URL
|
|
@State private var player: AVPlayer?
|
|
@State private var isPlaying: Bool = false
|
|
|
|
var body: some View {
|
|
VStack {
|
|
if player != nil {
|
|
Button(action: togglePlayPause) {
|
|
Image(systemName: isPlaying ? "pause.circle.fill" : "play.circle.fill")
|
|
.font(.largeTitle)
|
|
}
|
|
.buttonStyle(.plain)
|
|
} else {
|
|
Text("Loading audio...")
|
|
}
|
|
}
|
|
.onAppear {
|
|
player = AVPlayer(url: audioUrl)
|
|
}
|
|
.onDisappear {
|
|
player?.pause()
|
|
player = nil
|
|
}
|
|
}
|
|
|
|
private func togglePlayPause() {
|
|
guard let player = player else { return }
|
|
if isPlaying {
|
|
player.pause()
|
|
} else {
|
|
player.play()
|
|
}
|
|
isPlaying.toggle()
|
|
}
|
|
}
|