iOS调整音量+音量变化通知
虽然iOS设备有调节音量的按钮,但是有时需要在应用内调整音量,这时需要MPMusicPlayerController来完成音量的调节。此外有时需要监听音量按钮调节的音量值变化,比如反映到某一个进度条上就需要监听音量变化通知。本文实现这两个需求。
调整音量
-(IBAction)volumeScrub:(id)sender{
UISlider *slider=sender;
MPMusicPlayerController *mpc = [MPMusicPlayerController applicationMusicPlayer];
mpc.volume = slider.value; //0.0~1.0
NSLog(@”volume value %f”,mpc.volume);
}
这里利用UISlider的滑动来传递变化值(0~1),然后利用MPMusicPlayerController的volume属性来调整音量。
音量变化监听
转载:http://www.xiaoyaoli.com/?p=932//监听音量的变化
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(volumeChanged:)
name:@”AVSystemController_SystemVolumeDidChangeNotification”
object:nil];
- (void)volumeChanged:(NSNotification *)notification
{
float volume =
[[[notification userInfo]
objectForKey:@”AVSystemController_AudioVolumeNotificationParameter”]
floatValue];
volumeSlider.value=volume;
}
在iOS设备中音量分为耳机音量和手机音量,二者相互独立:但是不管耳机还是 手机都是调用一种方法改变音量, 在设备上有耳机的时候改变耳机音量,没有耳机的时候改变手机音量。
在github中有一个开源项目:SystemVolumeNativeExtension . (点击获取链接)
在解压后找到 SystemVolumeNativeExtension/IOSVolumeLib/IOSVolumeLib/IOSVolumeLib.m 这个文件.
不用看太多,只需要关注:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
float
getVolumeLevel()
{
MPVolumeView *slide = [MPVolumeView
new
];
UISlider *volumeViewSlider;
for
(UIView *view in [slide subviews])
{
if
([[[view
class
] description] isEqualToString:@
"MPVolumeSlider"
])
{
volumeViewSlider = (UISlider *) view;
}
}
float
val = [volumeViewSlider value];
[slide release];
return
val;
}
|
&
1
2
3
4
5
6
7
8
9
|
FREObject setVolume(FREContext ctx,
void
* funcData, uint32_t argc, FREObject argv[])
{
double
newVolume;
FREGetObjectAsDouble(argv[
0
], &newVolume);
[[MPMusicPlayerController applicationMusicPlayer] setVolume: newVolume];
return
NULL;
}
|
如个你觉得这也有些繁琐: 那你直接使用:
1
|
[[MPMusicPlayerController applicationMusicPlayer] setVolume: newVolume];
|
简单说就是用这个即可设置耳机音量。
转载:http://www.2cto.com/kf/201401/272351.html