2009-01-20 74 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 ......」什麼。