选择音频设备输出swift(如Waze)

时间:2017-11-07 19:28:47

标签: ios iphone swift audio

我正在网上挖掘,试图找到一些线索来实现这一目标,但没有成功。

我试图向用户显示像Waze这样的弹出窗口允许用户选择音频输出设备,音量等。

它似乎是一些API,因为它在iOS11上完全显示为声音小部件。

enter image description here

任何帮助表示感谢。

3 个答案:

答案 0 :(得分:1)

对于像我这样苦苦挣扎的人,这里有一个潜在的解决方案。

我不知道是否有更好的解决方案。如果是,请分享。

我需要一个自定义按钮来制作完全相同的MPVolumeView路线按钮。所以我可以实现屏蔽原始按钮的相同效果和功能。

import UIKit
import MediaPlayer

class SelectAudioDeviceViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let avView = myView(frame: CGRect(x: 0, y: 0, width: 150, height: 50))
        let button = UIButton(frame: CGRect(x: 50, y: 150, width: 150, height: 50))
        avView.showsRouteButton = true
        avView.showsVolumeSlider = false
        avView.setRouteButtonImage(nil, for: .normal)
        button.backgroundColor = UIColor.gray


        button.setTitle("BLABLA", for: .normal)

        button.addSubview(avView)
        self.view.addSubview(button)
    }
}

class myView: MPVolumeView {
    override func routeButtonRect(forBounds bounds: CGRect) -> CGRect {
        let newBounds = CGRect(x: 0, y: 0, width: 150, height: 50)
        return newBounds
    }
}

希望有所帮助

答案 1 :(得分:0)

另一个答案是AVRoutePickerView。有关更多信息,请参见documentation here。这也与您问题中的屏幕截图匹配。

答案 2 :(得分:0)

SWIFT5

使用iOS的AVRoutePickerView13>

import UIKit
import AVFoundation
import AVKit

let view = UIView(frame: UIScreen.main.bounds)

class ViewController: UIViewController {
    
    var AirPlayButton : AVRoutePickerView!
    
    override func loadView() {
        
        let view = UIView(frame: UIScreen.main.bounds)
        view.backgroundColor = .white
        
        AirPlayButton = AVRoutePickerView(frame: CGRect(x: 50, y: 50, width: 100, height: 100))
        view.addSubview(AirPlayButton)
        
        self.view = view
        
        let AirPlayButton = AVRoutePickerView(frame: CGRect(x: 50, y: 50, width: 100, height: 100))
        view.addSubview(AirPlayButton)
    }
    
}