bru*_*h51 15 iphone volume device ios
我想在iOS(iphone)上更改设备音量.
我知道我可以通过以下这些方式改变音乐库的音量:
//implement at first MediaPlayer framework
MPMusicPlayerController *musicPlayer = [MPMusicPlayerController iPodMusicPlayer];
musicPlayer.volume = 1;
Run Code Online (Sandbox Code Playgroud)
但这不是我的目标.
我想更改设备音量或者让我说一下铃声的音量.
我怎样才能做到这一点?只是更改DEVICE卷?
msr*_*jan 17
要回答brush51的问题:
我怎样才能做到这一点?只是更改DEVICE卷?
正如0x7fffffff建议:
您无法以编程方式更改设备卷,但MPVolumeView(音量滑块)可用于更改设备音量,但仅通过用户交互.
所以,Apple建议使用MPVolumeView,所以我想出了这个:
添加volumeSlider属性:
@property (nonatomic, strong) UISlider *volumeSlider;
Run Code Online (Sandbox Code Playgroud)
初始化MPVolumeView并添加到视图的某个位置(可以隐藏,不带帧,或因为showsRouteButton = NO和而为空showsVolumeSlider = NO):
MPVolumeView *volumeView = [MPVolumeView new];
volumeView.showsRouteButton = NO;
volumeView.showsVolumeSlider = NO;
[self.view addSubview:volumeView];
Run Code Online (Sandbox Code Playgroud)
查找并保存参考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;
}
}];
Run Code Online (Sandbox Code Playgroud)
添加目标操作UIControlEventValueChanged:
[self.volumeSlider addTarget:self action:@selector(handleVolumeChanged:) forControlEvents:UIControlEventValueChanged];
Run Code Online (Sandbox Code Playgroud)
然后检测音量变化(即通过硬件音量控制):
- (void)handleVolumeChanged:(id)sender
{
NSLog(@"%s - %f", __PRETTY_FUNCTION__, self.volumeSlider.value);
}
Run Code Online (Sandbox Code Playgroud)
还有其他方法,您可以通过以下方式设置音量:
self.volumeSlider.value = < some value between 0.0f and 1.0f >;
Run Code Online (Sandbox Code Playgroud)
希望这会有所帮助(并且Apple不会从MPVolumeView中删除MPVolumeSlider).
这就是我所做的:
func setSystemVolume(volume: Float) {
let volumeView = MPVolumeView()
for view in volumeView.subviews {
if (NSStringFromClass(view.classForCoder) == "MPVolumeSlider") {
let slider = view as! UISlider
slider.setValue(volume, animated: false)
}
}
}
Run Code Online (Sandbox Code Playgroud)
由于属性volume在MPMusicPlayerControlleriOS 7 中已弃用.这是您可以执行此操作的唯一方法.
您必须使用applicationMusicPlayer而不是iPodMusicPlayer来设置系统音量:
#import <MediaPlayer/MediaPlayer.h>
musicPlayer = [MPMusicPlayerController applicationMusicPlayer];
musicPlayer.volume = 1; // max volume
musicPlayer.volume = 0; // min volume (mute)
musicPlayer.volume = 0.0625; // 1 bar on the overlay volume display
Run Code Online (Sandbox Code Playgroud)
这个(Swift)解决方案对我很有帮助:http: //weimenglee.blogspot.com/2015/07/ios-tip-programmatically-adjust-device.html
import MediaPlayer
let volumeView = MPVolumeView()
if let view = volumeView.subviews.first as? UISlider{
view.value = 0.1 //---0 t0 1.0---
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27915 次 |
| 最近记录: |