iOS 7 : MPMusicPlayerController volume deprecated. 现在如何改变设备音量?

标签 ios ios7 volume mpmusicplayercontroller

MPMusicPlayerController setVolume 是 deprecated since iOS 7

有没有其他方法可以改变系统音乐的音量?最好没有用户交互。 它的重要功能:为 AppStore 中的任何闹钟自动增加音量。

最佳答案

准确回答你的问题: 是的,还有其他无需用户交互即可更改系统音量的方法。

直到最近,我一直认为只有使用 private API 才能以编程方式使用 MPVolumeView 更改音量。但我刚刚证实,改变 volumeSlider 的值和伪造 slider 的 touchUP 事件是有效的:

MPVolumeView* volumeView = [[MPVolumeView alloc] init];

//find the volumeSlider
UISlider* volumeViewSlider = nil;
for (UIView *view in [volumeView subviews]){
    if ([view.class.description isEqualToString:@"MPVolumeSlider"]){
        volumeViewSlider = (UISlider*)view;
        break;
    }
}

[volumeViewSlider setValue:1.0f animated:YES];
[volumeViewSlider sendActionsForControlEvents:UIControlEventTouchUpInside];

(当 slider 接收到touchUP事件时,它会调用自身的_commitVolumeChange方法,这将改变系统音量)

关于iOS 7 : MPMusicPlayerController volume deprecated. 现在如何改变设备音量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19218729/

相关文章:

ios - 打开新的 View Controller

uikit - UIAlertView 崩溃 iOS7 - 断言失败

没有卷运行的docker,容器系统文件存储在哪里?

javascript - native IOS 应用程序从网络浏览器 javascript 接收数据

iphone - 使用滑动导航 View

ios7 - 低功耗蓝牙 (IOS) - 后台广告和自定义广告数据

objective-c - 在不调用 presentViewController(或 dismissViewController)的情况下呈现 View Controller

linux - 如何在 Linux 上安装后隐藏设备/卷

linux - 无法使用 Linux 在 docker 中挂载现有文件夹

ios - 即使对于有效的 indexPath,在 reloadRowsAtIndexPaths 之后并不总是调用 cellForRowAtIndexPath