2009-01-20 75 views
7

使用UISlider更改应用程序中iPhone的音量的最佳方式是什么?使用UISlider更改音量


我使用的是比尔(Using a UISlider to change volume

但没有出现在屏幕上使用的代码尝试:

MPVolumeView *volumeView = [[[MPVolumeView alloc] initWithFrame: 
           CGRectMake(0, 0, 215, 22)] autorelease]; 
volumeView.center = CGPointMake(150,375); 
[volumeView sizeToFit]; 
[self.view addSubview:volumeView]; 

回答

2

Using a UISlider to change volume

^我试过lostintransit,然而,这并不改变铃声音量。它出现在iPhone屏幕上,但不会改变任何东西。即使使用提供的演示项目。

+0

你在模拟器上试试吗?它不会在SIM卡上运行。在实际的手机上试试你的代码。我在我的一个应用程序中使用它,它工作得很好。 – lostInTransit 2009-01-22 05:01:22

+0

我在真正的iPhone上试了一下。 – Domness 2009-01-24 13:27:45

0

使用的MPVolumeView显示一个滑块允许用户修改系统音量。

15

我刚刚找到一个非常简单的方法。不要编码,只要把它放在你的XIB中。

  1. 要放置到滑块到
  2. 添加一个UIView到您的视图中打开XIB
  3. 更改从UIView的阶级身份MPVolumeView
  4. 变化的backgroundColor清除

瞧! PS:在装有iPhone OS 3.0的设备上进行测试。正如之前所说的lostInTransit,它不会在模拟器上工作。

1

我使用同样的技术,但我注意到以下行为:

在iPod触摸G2: 的MPVolumeView滑块工程,充分响应来自应用程序的启动时间摇臂开关。

在iPhone Gen 1和3G上: MPVolumeView滑块不会开始更改音量,直到通过AudioQueue API进行媒体播放,并且将在调用AudioSessionSetActive(false)时停止更改音量。更奇怪的是:如果您在播放过程中使用AudioQueue API时敲击iPhone上的摇杆开关,那么MPVolumeView滑块将在应用程序的整个使用期限内继续工作。

This code使所有内容保持同步,并且倾向于帮助确保摇杆开关和滑块保持同步,但它不能消除我在iPhone上使用MPVolumeView时遇到的问题。

我在这里的所有经验都是在iPhone OS 3.0和iPhone 3.0 SDK下。

我希望这有助于缩小你的问题。

我的下一个策略是开始用kAudioSessionProperty_AudioRoute做些事情,并尝试kAudioSessionProperty_AudioCategory的替代值来查看会发生什么。

附注: 感谢大家使用IB技术来创建和管理MPVolumeView。我使用代码来创建和放置它,并且我一直忘记了可以在IB中设置UIView类型的技巧。

边注2: 在与MPVolumeView工作,我发现,如果你设置音频类别比其他kAudioSessionCategory_MediaPlayback当iPhone设定为静音模式MPVolumeView将显示文本“iPhone ......”什么。