我有一個計數器,每次點擊它時都會發出“滴答”的聲音。我在我的物理設備上嘗試了該應用程式,即使手機處于靜音模式,聲音也會播放。靜音模式打開時如何讓它停止播放聲音?
import AVFoundation
struct View1 : View {
@State var player : AVAudioPlayer?
var body: some View {
Button(action: {
playSound()
todoItem.count = 1
}) {
Image("CounterButton")
.resizable()
.scaledToFit()
.frame(width: 70, height: 70)
.foregroundColor(Color.white)
}
}
}
func playSound() {
guard let url = Bundle.main.url(forResource: "tick", withExtension: "mp3") else { return }
do {
try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default)
try AVAudioSession.sharedInstance().setActive(true)
/* The following line is required for the player to work on iOS 11. Change the file type accordingly*/
player = try AVAudioPlayer(contentsOf: url, fileTypeHint: AVFileType.mp3.rawValue)
guard let player = player else { return }
player.play()
} catch let error {
print(error.localizedDescription)
}
}
uj5u.com熱心網友回復:
try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default)
通過將類別設定為.playback,您特別要求不要采用靜音模式:
使用此類別時,您的應用程式音頻會在靜音開關設定為靜音或螢屏鎖定時繼續播放。(該開關在 iPhone 上稱為響鈴/靜音開關。)
你幾乎肯定想要.ambient:
當您使用此類別時,來自其他應用程式的音頻會與您的音頻混合。螢屏鎖定和靜音開關(在 iPhone 上,響鈴/靜音開關)使您的音頻靜音。
可能您需要默認值,.soloAmbient在這種情況下,您甚至不需要設定類別。
您的音頻通過螢屏鎖定和靜音開關(在 iPhone 上稱為響鈴/靜音開關)靜音。默認情況下,使用此類別意味著您的應用程式的音頻是不可混合的——激活您的會話將中斷任何其他同樣不可混合的音頻會話。要允許混合,請改用環境類別。
請注意,您通常不應在每次呼叫 時設定類別并激活會話playSound()。您通常應該設定一次類別(通常在程式啟動期間)。特別是如果您允許混音,您也可以只激活一次會話。無需反復激活。(事實上??,呼叫.play()已經為你激活了它,所以你真的不需要任何 AVAudioSession 代碼。)
您也可能不想繼續重新創建播放器。只需創建一次,您就可以使用它再次.play(atTime: 0)播放音頻。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/516011.html
