一直试图解决这个问题2天,我放弃了.我试图实现一个自定义的播放按钮(我必须背景是白色,按钮必须是黑色).我在interfacebuilder中添加了一个视图,并选择了mpVolumeView.然后我建立了连接并编写了以下代码;
viewDidLoad.. {
.....
[_volumeView setShowsVolumeSlider:NO];
for (UIButton *button in _volumeView.subviews) {
if ([button isKindOfClass:[UIButton class]]) {
[button setImage:[UIImage imageNamed:@"airplay_icon.png"] forState:UIControlStateNormal];
[button addObserver:self forKeyPath:@"alpha" options:NSKeyValueObservingOptionNew context:nil];
[button addTarget:self action:@selector(switchAirplayButton) forControlEvents:UIControlEventTouchUpInside];
[button sizeToFit];
}
}
[_volumeView sizeToFit];
}
-(void)switchAirplayButton {
for (UIButton *button in _volumeView.subviews) {
if ([button isKindOfClass:[UIButton class]]) {
NSLog(@"%d", _controlBar.player.airPlayVideoActive);
if(_controlBar.player.airPlayVideoActive) {
[button setImage:[UIImage imageNamed:@"airplay_icon_pressed.png"] forState:UIControlStateNormal];
} else [button setImage:[UIImage imageNamed:@"airplay_icon.png"] forState:UIControlStateNormal];
[button sizeToFit];
}
}
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
if ([object …Run Code Online (Sandbox Code Playgroud) 我正在使用MPVolumeView为avplayer airplay播放选择airplay设备.是否有任何可能的非私有API替代方案,所以我可以提供自己的UI控件来挑选airplay设备?
通过引用API,我的意思是,我只需要:
我知道AudioToolbox框架提供了一些额外的API来处理AudioSession,但我发现重新路由音频的唯一方法是AVAudioSession:
- (BOOL)overrideOutputAudioPort:(AVAudioSessionPortOverride)portOverride error:(NSError **)outError`
Run Code Online (Sandbox Code Playgroud)
只允许将音频重新路由到内置扬声器.也许还有其他方法如何在那里实现它?(我也只找到了如何检索AirplayDevice的名称作为currentAudioRoute的描述的方式 - 使用AVPlayer获取AirPlay设备的名称)