播放音频时,设备处于静音模式 - IOS迅速

问题描述 投票:22回答:6

我使用的Xcode 7.1,迅速创建应用程序。我想播放音频。一切顺利。现在我的问题,我想听到的声音时处于静音模式或静音的设备。我该怎么做?

我使用下面的代码来播放音频

currentAudio!.stop()
            currentAudio = try? AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("sample_audio", ofType: "mp3")!));

            currentAudio!.currentTime = 0

            currentAudio!.play();
ios swift audio
6个回答
69
投票

调用AVPlayer的播放()方法之前,就把这行。

在目标C

[[AVAudioSession sharedInstance]
            setCategory: AVAudioSessionCategoryPlayback
                  error: nil];

在斯威夫特

do {
    try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
 }
 catch {
    // report for an error
 }

斯威夫特5

do {
      try AVAudioSession.sharedInstance().setCategory(.playback)
   } catch(let error) {
       print(error.localizedDescription)
   }

6
投票

迅速3.0和的Xcode> 8

播放声音在视频时设备是林格模式,静音模式

 do {
        try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
        //print("AVAudioSession Category Playback OK")
        do {
            try AVAudioSession.sharedInstance().setActive(true)
            //print("AVAudioSession is Active")
        } catch _ as NSError {
            //print(error.localizedDescription)
        }
    } catch _ as NSError {
        //print(error.localizedDescription)
    }

4
投票

斯威夫特4

播放视频前使用此线

try? AVAudioSession.sharedInstance().setCategory(.playback, mode: .default, options: [])

4
投票

您可以使用AppDelegate类。

为使声音(音频或视频)时装置处于静音模式使用AVAudioSessionCategoryPlayback

func applicationDidBecomeActive(_ application: UIApplication) {

    do {
        try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
    } catch {
        print("AVAudioSessionCategoryPlayback not work")
    }
}

对于禁用声音当设备处于静音模式(例如,当我们接电话)使用AVAudioSessionCategorySoloAmbient

func applicationWillResignActive(_ application: UIApplication) {

    do {
        try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategorySoloAmbient)
    } catch {
        print("AVAudioSessionCategorySoloAmbient not work")
    }
}

2
投票

雨燕4.2

   do {
        try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default, options: [])
    } catch let error {
        print("Error in AVAudio Session\(error.localizedDescription)")
    }

0
投票

你可以通过这一点,它会帮助你

当您使用以下音频会话类,声音不会在iOS静音:AVAudioSessionCategoryPlayback,AVAudioSessionCategoryRecord,AVAudioSessionCategoryPlayAndRecord

func playSound (Sound: String, Type: String) {

        //Prepare the sound file name & extension
        var alertSound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(Sound, ofType: Type)!)

        //Preparation to play
        AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil)
        AVAudioSession.sharedInstance().setActive(true, error: nil)

        //Play audio

        var error: NSError?
        audioPlayer = AVAudioPlayer(contentsOfURL: alertSound, error: &error)
        audioPlayer.prepareToPlay()
        audioPlayer.play()
        }

0
投票
import AVKit

并添加到您的AppDelegate的applicationDidBecomeActive

func applicationDidBecomeActive(_ application: UIApplication) {
        // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
        do {
            try AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category.playback)
            print("AVAudioSession Category Playback OK")
            do {
                try AVAudioSession.sharedInstance().setActive(true)
                print("AVAudioSession is Active")
            } catch {
                print(error.localizedDescription)
            }
        } catch {
            print(error.localizedDescription)
        }
    }

0
投票

斯威夫特5.0.1

try AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category.playback)
© www.soinside.com 2019 - 2024. All rights reserved.