使用UISlider更改音量

时间:2009-01-20 20:47:43

标签: cocoa-touch

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


我已尝试使用该帐单(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];

5 个答案:

答案 0 :(得分:15)

我刚刚找到了一个非常简单的方法。而不是编码,只需将其放在您的XIB中。

  1. 打开要放入滑块的XIB
  2. 在视图中添加UIView
  3. 将类标识从UIView更改为MPVolumeView
  4. 将backgroundColor更改为清除
  5. 瞧!

    PS:在装有iPhone OS 3.0的设备上测试过它。正如之前所说的lostInTransit,它将无法在模拟器上运行。

答案 1 :(得分:2)

Using a UISlider to change volume

^我尝试了lostintransit,但这并没有改变铃声音量。它出现在iPhone屏幕上,但不会改变任何东西。甚至使用提供的演示项目。

答案 2 :(得分:1)

我正在使用相同的技术,但是我注意到以下行为:

在iPod touch G2上: MPVolumeView滑块可以在app启动时完全响应摇杆开关。

在iPhone Gen 1和3G上: MPVolumeView滑块在通过AudioQueue API发生媒体播放之前不会开始更改音量,并且会在调用AudioSessionSetActive(false)时停止更改音量。更奇怪的是:如果你在播放过程中使用AudioQueue API时触摸iPhone上的摇杆开关,那么MPVolumeView滑块将在应用程序的剩余使用期内工作。

This code保持所有内容同步,并有助于确保摇杆开关和滑块保持同步,但它并没有消除我在iPhone上使用MPVolumeView时出现的问题。

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

我希望这有助于缩小您的问题范围。

我的下一个策略是开始使用kAudioSessionProperty_AudioRoute处理并尝试kAudioSessionProperty_AudioCategory的替代值以查看会发生什么。

旁注: 感谢所有关于创建和管理MPVolumeView的IB技术的人。我正在使用代码来创建和放置它,我一直忘记了可以在IB中设置UIView类型的技术。

附注2: 在使用MPVolumeView时,我发现如果将音频类别设置为kAudioSessionCategory_MediaPlayback以外的任何内容,当iPhone设置为静音模式时,MPVolumeView将显示文本“iPhone ...”。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

如果您想要更改iPhone音量,MPVolumeView是唯一的选择。试试这个链接上的例子。

http://www.stormyprods.com/blogger/2008/09/proper-usage-of-mpvolumeview-class.html