ios7 调节 iPodMusicPlayer 音量

标签 ios iphone objective-c

我正在为 ios7 编写一个应用程序,它需要控制内置音乐播放器的音量或一般的主音量级别。我尝试过使用 MediaPlayer.framework 但不确定这是否正确。我想知道解决这个问题的最佳方法是什么。谢谢!

最佳答案

根据 Apple 的说法,在 iOS7 中设置 MPMusicPlayerControllervolume 已被弃用:

// The current volume of playing music, in the range of 0.0 to 1.0.
// This property is deprecated -- use MPVolumeView for volume control instead.
@property(nonatomic) float volume NS_DEPRECATED_IOS(3_0, 7_0);

Apple 建议使用 MPVolumeView,所以我想出了这个:

添加volumeSlider属性:

@property (nonatomic, strong) UISlider *volumeSlider;

初始化MPVolumeView并在 View 中添加某处(可以隐藏,没有框架,或者因为showsRouteButton = NOshowsVolumeSlider = NO而为空>):

MPVolumeView *volumeView = [MPVolumeView new];
volumeView.showsRouteButton = NO;
volumeView.showsVolumeSlider = NO;
[self.view addSubview:volumeView];

查找并保存对 UISlider 的引用:

__weak __typeof(self)weakSelf = self;
[[volumeView subviews] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    if ([obj isKindOfClass:[UISlider class]]) {
        __strong __typeof(weakSelf)strongSelf = weakSelf;
        strongSelf.volumeSlider = obj;
        *stop = YES;
    }
}];

UIControlEventValueChanged 添加目标操作:

[self.volumeSlider addTarget:self action:@selector(handleVolumeChanged:) forControlEvents:UIControlEventValueChanged];

然后检测音量变化(即通过硬件音量控制):

- (void)handleVolumeChanged:(id)sender
{
    NSLog(@"%s - %f", __PRETTY_FUNCTION__, self.volumeSlider.value);
}

或者其他方式,您可以通过以下方式设置音量:

self.volumeSlider.value = < some value between 0.0f and 1.0f >;

希望这会有所帮助(并且 Apple 不会从 MPVolumeView 中删除 MPVolumeSlider)。

关于ios7 调节 iPodMusicPlayer 音量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22112056/

相关文章:

ios - 当应用程序进入后台或模拟器锁定时,UILocalNotification 不起作用

c# - GPUImage 和 Monotouch 绑定(bind)或替代方案

ios - 使用swift在ios上分享 Assets 库视频

iphone - 无法在 AFNetworking 客户端 IOS 5/6 中维护 session

iphone - Swift Apple Pay 崩溃; PKPaymentAuthorizationViewController = 无

ios - 为什么设备越狱后 NSFileProtectionKey 不具有属性?

ios - 我可以以编程方式在 Assets 目录之间切换吗?

objective-c - 获取位置权限对话框的结果

ios - 无法绘制旋转图像

ios - iOS 系统类中的 Xcode 6.2 解析问题