我需要您的幫助。我應該如何着手改變我的應用程序的音量。我不想使用音量滑塊。相反,我有一個UIImageView,它是一個音量旋鈕,其中我順時針旋轉增加,反時針旋轉以減小音量。輪換隻是一個動畫,我已經完成了這部分。更改iPhone上沒有音量滑塊的音量
我需要您的幫助和建議如何增加/減少音量。謝謝
我需要您的幫助。我應該如何着手改變我的應用程序的音量。我不想使用音量滑塊。相反,我有一個UIImageView,它是一個音量旋鈕,其中我順時針旋轉增加,反時針旋轉以減小音量。輪換隻是一個動畫,我已經完成了這部分。更改iPhone上沒有音量滑塊的音量
我需要您的幫助和建議如何增加/減少音量。謝謝
我會小心上MPVolumeView
調用setValue
,因爲它可能不會做其他比更新滑塊的外觀任何東西,但不是實際的設備音量。你將不得不打電話_commitVolumeChange
這是私人API,並可能會被拒絕你的應用程序。
如何控制音量的簡短答案:這取決於您試圖控制的音量。
如果你想要一種控制的「控制每一個應用程序中的聲音」,那麼你可以使用一個MPVolumeView
但你不能改變它的值編程。您只能通過觸摸移動滑塊或使用設備側面的音量按鈕來更改音量。最好的辦法是創建一個全局對象,用於存儲任何對象在播放聲音之前可以讀取的音量級別。
如果它是一個AVAudioPlayer
對象,您可以創建該對象並使用[theAudioPlayerObject setVolume: someFloat];
,其中someFloat
是一個介於0.0和1.0之間的值。
如果是SystemSound
對象,則無法控制音量。
如果它是一個AudioQueue
你通過AudioQueueSetParameter
就像我說的改變它..這一切都取決於如何你正在播放的聲音。基於評論
更新,你會這樣設置音量:
添加到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];
}
那麼,取最小旋轉(R1)和最大旋轉(R2)。然後做rotation/(R2 - R1)
以獲得像滑塊一樣的%。
編輯:
要提交的體積變化,添加以下內容:
MPVolumeView *systemVolumeSlider = [[MPVolumeView alloc] initWithFrame: self.view.bounds];
[systemVolumeSlider setHidden:YES];
[systemVolumeSlider setUserInteractionEnabled:NO];
[self.view addSubview:systemVolumeSlider];
(確保釋放systemVolumeSlider
在dealloc
)
然後,當體積變化,用setValue
設置它的價值。您還需要處理當用戶按下設備上的音量+/-按鈕時發生的情況。
你可能也想告訴他們如何改變音量的一個完整的答案:) – iwasrobbed 2010-08-11 13:58:07
感謝jrtc&iWasRobbed:d jrtc:笑我的問題是,具有%,此前,接下來會發生什麼,我卡在這裏的xD – awlcs 2010-08-11 14:22:02
是的當然 - 我瀏覽了你的問題,並認爲我已經回答了它,但並不完全!答案已經更新;) – jrtc27 2010-08-11 14:25:39
我認爲這是蘋果的代碼中的錯誤,並已與它問題報告和親自上報他們兩個,但由於他們堅持它的一個功能,您不妨從中受益。
使用下面的代碼更改應用程序的音量:
[[MPMusicPlayerController applicationMusicPlayer] setVolume:newVolume];
你建立你的音頻會話後,這隻會工作,無論是通過播放聲音或通過設置將其激活這樣:
[[AVAudioSession sharedInstance] setActive:YES error:NULL];
請注意,因爲您需要MediaPlayer.framework和AVFoundation.framework並且音量介於0.0和1.0之間。
我想控制我的應用程序的音量。我正在試着製作一個應用程序,使用關於如何流式傳輸mp3源的亞光加勒比課程http://cocoawithlove.com/2008/09/streaming-and-playing-live-mp3-stream.html – awlcs 2010-08-11 16:31:11
請參閱我的更新回答 – iwasrobbed 2010-08-11 17:19:45
非常感謝你搶劫,我會嘗試:D我對iphone編程頗爲陌生:D感謝:D – awlcs 2010-08-11 22:33:13