有没有办法订阅音量按钮按事件?
最近被Apple拒绝之后
不要使用它.Apple现在使用一些补丁,如果它使用任何私有API,它会立即拒绝你的应用程序 - 虽然应该注意到App Store上的一些应用程序已经使用它并且仍然存在!
现在唯一的方法是让AVAudioPlayer准备播放但不播放([player prepareToPlay]).这似乎是根据摇杆按钮调整应用程序的音量.
目前还没有其他公布的方式可以解决这个问题.
请阅读上面的说明
是的,使用MPVolumeView
MPVolumeView *volume = [[[MPVolumeView alloc] initWithFrame:CGRectMake(18.0, 340.0, 284.0, 23.0)] autorelease]; [[self view] addSubview:volume]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(volumeChanged:) name:@"AVSystemController_SystemVolumeDidChangeNotification" object:nil]; for (UIView *view in [volume subviews]){ if ([[[view class] description] isEqualToString:@"MPVolumeSlider"]) { volumeViewSlider = view; //volumeViewSlider is a UIView * object } } [volumeViewSlider _updateVolumeFromAVSystemController]; -(IBAction)volumeChanged:(id)sender{ [volumeViewSlider _updateVolumeFromAVSystemController]; }
这将为您提供一个滑块(与ipod中使用的滑块相同),其值将根据手机的音量进行更改
您将收到编译时警告,视图可能无法响应_updateVolumeFromAVSystemControl,但只是忽略它.
如果您只是想收到通知,我认为它是这样的:
如果我错了,请纠正我,但我不相信这会使用任何内部API.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(volumeChanged:) name:@"AVSystemController_SystemVolumeDidChangeNotification" object:nil];
此活动的详细信息如下:http://www.cocoadev.com/index.pl?AVSystemController
这里的其他回复似乎是基于这个黑客:http://blog.stormyprods.com/2008/09/proper-usage-of-mpvolumeview-class.html这是一个现在修复的bug的解决方法.
但我很确定如果你想做的只是获取通知,而不是设置系统音量,你可以像任何其他事件一样使用通知中心!
请注意:由于Apple在相机中添加了音量增大操作,因此当a 可见时,不会发布此通知UIImagePickerController
.