2010-08-11 74 views
12

我需要您的幫助。我應該如何着手改變我的應用程序的音量。我不想使用音量滑塊。相反,我有一個UIImageView,它是一個音量旋鈕,其中我順時針旋轉增加,反時針旋轉以減小音量。輪換隻是一個動畫,我已經完成了這部分。更改iPhone上沒有音量滑塊的音量

我需要您的幫助和建議如何增加/減少音量。謝謝

回答

12

我會小心上MPVolumeView調用setValue,因爲它可能不會做其他比更新滑塊的外觀任何東西,但不是實際的設備音量。你將不得不打電話_commitVolumeChange這是私人API,並可能會被拒絕你的應用程序。

如何控制音量的簡短答案:這取決於您試圖控制的音量。

如果你想要一種控制的「控制每一個應用程序中的聲音」,那麼你可以使用一個MPVolumeView但你不能改變它的值編程。您只能通過觸摸移動滑塊或使用設備側面的音量按鈕來更改音量。最好的辦法是創建一個全局對象,用於存儲任何對象在播放聲音之前可以讀取的音量級別。

如果它是一個AVAudioPlayer對象,您可以創建該對象並使用[theAudioPlayerObject setVolume: someFloat];,其中someFloat是一個介於0.0和1.0之間的值。

如果是SystemSound對象,則無法控制音量。

如果它是一個AudioQueue你通過AudioQueueSetParameter

就像我說的改變它..這一切都取決於如何正在播放的聲音。基於評論

For that particular example

更新,你會這樣設置音量:

添加到AudioStreamer。h文件

- (void)setVolume:(float)Level; 

添加到AudioStreamer.m文件

- (void)setVolume:(float)Level 
{ 

    OSStatus errorMsg = AudioQueueSetParameter(audioQueue, kAudioQueueParam_Volume, Level); 

    if (errorMsg) { 
     NSLog(@"AudioQueueSetParameter returned %d when setting the volume.", errorMsg); 
    } 

} 

添加到對於其中音量旋鈕將視圖控制器(這正好在.M文件..我只是做了這個作爲一對夫婦UIButtons真正快速,你將不得不做你自己的),並建立一個IBAction來改變一個給定值的音量(你可以通過0.0到1.0作爲一個浮點數)

- (IBAction)volumeUp:(id)sender 
{ 

    [streamer setVolume:1.0]; 

} 

- (IBAction)volumeDown:(id)sender 
{ 

    [streamer setVolume:0.0]; 

} 
+0

我想控制我的應用程序的音量。我正在試着製作一個應用程序,使用關於如何流式傳輸mp3源的亞光加勒比課程http://cocoawithlove.com/2008/09/streaming-and-playing-live-mp3-stream.html – awlcs 2010-08-11 16:31:11

+1

請參閱我的更新回答 – iwasrobbed 2010-08-11 17:19:45

+0

非常感謝你搶劫,我會嘗試:D我對iphone編程頗爲陌生:D感謝:D – awlcs 2010-08-11 22:33:13

4

那麼,取最小旋轉(R1)和最大旋轉(R2)。然後做rotation/(R2 - R1)以獲得像滑塊一樣的%。

編輯:
要提交的體積變化,添加以下內容:

MPVolumeView *systemVolumeSlider = [[MPVolumeView alloc] initWithFrame: self.view.bounds]; 
[systemVolumeSlider setHidden:YES]; 
[systemVolumeSlider setUserInteractionEnabled:NO]; 
[self.view addSubview:systemVolumeSlider]; 

(確保釋放systemVolumeSliderdealloc

然後,當體積變化,用setValue設置它的價值。您還需要處理當用戶按下設備上的音量+/-按鈕時發生的情況。

+1

你可能也想告訴他們如何改變音量的一個完整的答案:) – iwasrobbed 2010-08-11 13:58:07

+0

感謝jrtc&iWasRobbed:d jrtc:笑我的問題是,具有%,此前,接下來會發生什麼,我卡在這裏的xD – awlcs 2010-08-11 14:22:02

+0

是的當然 - 我瀏覽了你的問題,並認爲我已經回答了它,但並不完全!答案已經更新;) – jrtc27 2010-08-11 14:25:39

16

我認爲這是蘋果的代碼中的錯誤,並已與它問題報告和親自上報他們兩個,但由於他們堅持它的一個功能,您不妨從中受益。

使用下面的代碼更改應用程序的音量:

[[MPMusicPlayerController applicationMusicPlayer] setVolume:newVolume]; 

你建立你的音頻會話後,這隻會工作,無論是通過播放聲音或通過設置將其激活這樣:

[[AVAudioSession sharedInstance] setActive:YES error:NULL]; 

請注意,因爲您需要MediaPlayer.framework和AVFoundation.framework並且音量介於0.0和1.0之間。

+0

簡單明瞭~~ :)非常感謝。即使我不使用MPMusicPlayerController(例如使用MPMoviePlayerController),我也可以使用它。由於AVAudioSession。 :) – alones 2010-09-22 17:10:07

+0

'setVolume:'在iOS 7.0中已棄用 – ahonnecke 2014-03-17 03:03:13