ios7调整iPodMusicPlayer音量

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

据苹果介绍,在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); 

苹果build议使用MPVolumeView ,所以我想出了这个:

添加volumeSlider属性:

 @property (nonatomic, strong) UISlider *volumeSlider; 

初始化MPVolumeView并添加到您的视图的某个地方(可以隐藏,没有框架或空的,因为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 >; 

希望这有助于(并且苹果不会从MPVolumeView中删除MPVolumeSlider)。

尝试这个

 [[MPMusicPlayerController applicationMusicPlayer] setVolume:(use a value between 0.0 and 1.0)] 

如果您想提供音量控制,请尝试此操作

  MPVolumeView *myVolumeView = [[MPVolumeView alloc] initWithFrame: CGRectMake(70, 300, 200, 40)]; [myVolumeView setShowsVolumeSlider:YES]; [myVolumeView setShowsRouteButton:YES]; [myVolumeView sizeToFit]; [myVolumeView setBackgroundColor:[UIColor cyanColor]]; CGAffineTransform trans = CGAffineTransformMakeRotation(M_PI * 0.5); myVolumeView.transform = trans; [moviePlayerContlr.view addSubview: myVolumeView]; 

备用:

 UISlider * aSlider; aSlider = [[UISlider alloc] initWithFrame:CGRectMake(70, 200, 100, 40)]; [aSlider setMaximumValue:0]; [aSlider setMaximumValue:1]; [aSlider addTarget:self action:@selector(aSliderAction:) forControlEvents:UIControlEventValueChanged]; [moviePlayerContlr.view addSubview:aSlider]; UIImage *stetchTrack = [[UIImage imageNamed:@"faderTrack.png"] stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0]; [aSlider setThumbImage: [UIImage imageNamed:@"faderKey.png"] forState:UIControlStateNormal]; [aSlider setMinimumTrackImage:stetchTrack forState:UIControlStateNormal]; [aSlider setMaximumTrackImage:stetchTrack forState:UIControlStateNormal]; CGAffineTransform tran = CGAffineTransformMakeRotation(M_PI * -0.5); aSlider.transform = trans; - (void)aSliderAction:(id)sender { NSLog(@"%d",(int)[aSlider value]);; [[MPMusicPlayerController applicationMusicPlayer] setVolume:aSlider.value]; } 

使用iPodMusicPlayer也会影响实际的iPod音量设置。 如果你想避免这一点,使用这个

 #import <MediaPlayer/MediaPlayer.h> // ... MPMusicPlayerController *musicPlayer = [MPMusicPlayerController applicationMusicPlayer]; musicPlayer.volume = slider.value; //float value for volume 

或尝试与:

 MPMusicPlayerController *musicPlayer = = [MPMusicPlayerController iPodMusicPlayer]; musicPlayer.volume = slider.value; //float value for volume