切换系统声音 - 快速

Posted

技术标签:

【中文标题】切换系统声音 - 快速【英文标题】:Toggling a system sound - swift 【发布时间】:2017-12-26 14:19:32 【问题描述】:

我想让它可以点击一个按钮,这将开始重复一遍又一遍地播放系统声音(不重叠声音),直到再次点击按钮 - 所以本质上,该按钮将打开/关闭音频服务系统声音的重复播放。

如果有人知道如何做到这一点,我将不胜感激。

谢谢

【问题讨论】:

好像an XY problem。为什么要这样做? 我正在简化我正在做的一项任务,以使问题更容易理解。长期的原因是我想制作一个计时器,并让计时器在秒数达到 0 时运行,直到用户点击设备物理。按钮或屏幕上。 【参考方案1】:

为此,请使用无限重复的AVAudioplayer,然后在按下按钮时暂停/播放。 首先在任何函数的外部创建一个 audioPlayer 变量:

var audioPlayer : AVAudioPlayer!

然后在viewDidLoad里面初始化audioPlayer:

override func viewDidLoad() 
    super.viewDidLoad()

    guard let url = Bundle.main.path(forResource: "myOwnSound", ofType: "wav") else  //your own file name AND extension type of course
       print("file not found")
       return
    
    do 
        try AVAudiosession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
        try AVAudioSession.sharedInstance().setActive(true)
        try audioPlayer = AVAudioPlayer(contentsOf: URL(string: url)!)
        audioPlayer!.prepareToPlay()
        audioPlayer.numberOfLoops = -1
     catch let error as NSError 
        print("error while initialising sound: \(error)")
    

然后在链接到您的按钮的函数中,在我的例子中,我将该函数命名为 buttonPressed:

@IBAction func buttonPress(_ sender:AnyObject)
    if audioPlayer.isPlaying 
       audioPlayer.pause()
    
    else 
       audioPlayer.play()
    

【讨论】:

【参考方案2】:

您可以使用AVFoundationAVAudioPlayer 来管理音乐和 应用程序内部的声音

导入关注

import AVFoundation

创建 AVAudioPlayer 的属性来管理播放/停止,并在音乐按钮的范围内添加以下代码

 var player : AVAudioPlayer?

@IBAction func openListAction(_ sender: UIButton) 
       // moveToGame()
        if sender.isSelected 
            sender.isSelected = false
            player?.stop()
        
        else 
            sender.isSelected = true
            let bundle = Bundle.init(for: self.classForCoder)
            let path = bundle.path(forResource: "soundFileName", ofType : "soundFileExtension")! //.mp3, .caf etc
            let url = URL(fileURLWithPath : path)
            do 
                player = try AVAudioPlayer(contentsOf: url)
                player?.play()

             catch 
                print ("Error to load music")
            
        
    

【讨论】:

以上是关于切换系统声音 - 快速的主要内容,如果未能解决你的问题,请参考以下文章

三星手机,安卓系统,怎么关闭照相机声音?

升级到win10或者重装系统没有声音怎么办

电脑屏幕扩展后电脑没有声音

win10电脑声音有杂音怎么办

专业的声音 | 创建智能推荐系统 发挥信息撮合优势

华硕笔记本开机声音怎么换