2010-03-06 83 views
4

我正在编写一个应用程序,它使用AVAudioPlayers来播放声音,我需要声音以绝对MAX音量播放。是的,您可以设置AVAudioPlayer的相对音量,但如果用户将设备音量调低,则声音仍将静音播放。在iPhone上设置设备音量

我知道Apple说设备的音量不能被覆盖,但闹钟应用程序在某种程度上能够做到这一点 - 所以一定有办法。

我认为,这可以使用音频队列使用调用来完成:

AudioQueueSetParameter(aq, kAudioQueueParam_Volume, 1.0); 

但我的代码需要使用AVAudioPlayer播放的声音,所以我不认为这种做法将是有帮助。

还有一种方法可以使用MPVolumeView的未公开功能来完成此操作,但显然有人已经拒绝使用此方法的应用程序。

还有其他想法吗?

回答

0

我碰到这样的:

MPVolumeView *volumeView1 = [[MPVolumeView alloc] initWithFrame:CGRectMake(4, 316, sk.size.width, sk.size.height)]; 
[volumeView1 sizeToFit]; 
[self.view addSubview:volumeView1]; 
[volumeView1 release]; 

我不能完全肯定是否会工作,但我相信它应该。看来你可能需要修改的高度和宽度

+0

谢谢,但这只会提供一个滑块控件,允许用户调整设备音量。我只需要在没有任何用户参与的情况下将其最大化。我猜想作为后备我可以提供滑块和一些文字说“请把这个滑到最右边” - 但那真的很俗气。 – Bradley4040 2010-03-06 16:29:34

+0

为什么你不让他们自己设置音量,这将改善用户体验 – 2010-03-06 17:06:13

+0

我正在写一个闹钟应用程序,它们都最大限度地减少了设备音量。如果你不这样做,肯定会得到像“这个应用程序很糟糕:警报没有关闭,我错过了我的测试!”的评论。他们的音量一直下降的事实并未进入等式。 – Bradley4040 2010-03-06 17:34:25

6

The comment from the anonymous for this site

float volume; 
[[MPMusicPlayerController applicationMusicPlayer] setVolume:volume]; 

不实际工作。

+0

这确实起作用,但它似乎与大多数应用程序的工作方式不同。至少在iOS6上,它会弹出系统音量提醒对话框,这个对话框并不可怕,但并不理想 – Jameo 2013-09-09 21:22:08