2010-08-11 18 views
12

Yardımınıza ihtiyacım var. Uygulamamdaki ses düzeyini değiştirmek için nasıl devam etmeliyim. Bir ses kaydırıcısı kullanmak istemiyorum. Bunun yerine, ses seviyesini azaltmak için saat yönünde döndürmek için saat yönünde döndürdüğüm bir ses düğmesi olan bir UIImageView'ım var. Rotasyon sadece bir animasyon ve zaten bu kısmı yaptım.Bir iPhone'da ses kaydırıcı olmadan ses seviyesini değiştirme

Ses düzeyini artırma/azaltma konusunda yardımınıza ve tavsiyenize ihtiyacım var. Teşekkürler

cevap

12

Muhtemelen kaydırıcı görünümünü güncellemek başka bir şey yapmayacağım çünkü bir MPVolumeView üzerinde setValue arayarak dikkatli değil, gerçek cihazın ses seviyesi olacaktır. Bunun yerine, özel API olan ve uygulamanızı reddedecek olan _commitVolumeChange numaralı telefonu aramak zorunda kalacaksınız.

Birimin nasıl kontrol edileceğine ilişkin kısa bir cevap: Gerçekten, hacmini kontrol etmeye çalıştığınız şeye bağlıdır.

kontrolün tür bir "uygulaması çerçevesinde kontroller her ses" o zaman MPVolumeView kullanabilirsiniz istiyorum ama olamaz değişim programlı değer buysa. Bu durumda, yalnızca kaydırma çubuğunu bir dokunuşla hareket ettirerek veya cihazın yan tarafındaki ses düğmelerini kullanarak değiştirebilirsiniz. Yapılacak en iyi şey, nesnelerinizden herhangi birinin seslerini çalmadan önce okuyabileceği ses düzeyini depolayan genel bir nesne oluşturmaktır.

Eğer bir AVAudioPlayer nesnesiyse, nesneyi oluşturursunuz ve [theAudioPlayerObject setVolume: someFloat];'u kullanarak someFloat değeri 0,0 ve 1,0 arasında bir değerdir.

SystemSound nesnesindeyse, birimi denetleyemezsiniz.

o .. Dediğim gibi bir AudioQueue Eğer AudioQueueSetParameter

yoluyla değiştirmek istiyorum var Sesi oynuyor nasıl tüm bağlıdır edin.

AudioStreamer ekle:

Güncelleme comment

For that particular example dayanarak, böyle düzeyini ayarlamak olacaktır.h dosyası

- (void)setVolume:(float)Level; 

- (void)setVolume:(float)Level 
{ 

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

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

} 

bu .m gider (ses düğmesi nerede olacak için görünüm denetleyicisi ekle AudioStreamer.m dosyasına ekle Dosya .. Ben sadece bu UIButtons gerçek bir çift olarak yaptım, kendi yapmak zorunda) ve belirli bir değer için hacmi değiştirmek için bir IBAction kurdu (bir şamandıra olarak 0.0 ile 1.0 arasında geçiş yapabilirsiniz)

- (IBAction)volumeUp:(id)sender 
{ 

    [streamer setVolume:1.0]; 

} 

- (IBAction)volumeDown:(id)sender 
{ 

    [streamer setVolume:0.0]; 

} 
+0

Uygulamamın hacmini kontrol etmek istiyorum. Bir mp3 kaynağının nasıl akacağı hakkında mat gallagher sınıflarını kullanarak bir uygulama yapmaya çalışıyorum http://cocoawithlove.com/2008/09/streaming-and-playing-live-mp3-stream.html – awlcs

+1

Güncellenmiş yanıtıma bakın – iwasrobbed

+0

Teşekkür ederim çok fazla rob, ben deneyeceğim: D Ben iphone programlama için oldukça yeni: D teşekkürler: D – awlcs

4

En az Rotasyon (R1) ve maksimum Rotasyon (R2) kullanın. Sonra bir kaydırıcının yaptığı gibi% 0 almak için rotation/(R2 - R1) yapın.

DÜZENLEME:
eklemek, hacim değişikliği işlemek için aşağıdakilerden:

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

Sonra, hacim değiştiğinde (dealloc yılında systemVolumeSlider serbest bırakmak için emin olun), setValue kullanmak ayarlamak için Değeri. Ayrıca, kullanıcı cihazdaki ses +/- düğmelerine bastığında ne olacağına da dikkat etmeniz gerekir.

+1

Ayrıca, tam bir cevap için ses seviyesini nasıl değiştireceğini de söylemek isteyebilirsiniz :) – iwasrobbed

+0

teşekkürler jrtc & iWasRobbed: D jrtc: lol sorum,%, sonra, sonra ne var, burada sıkışıp kaldı ettik xD – awlcs

+0

Evet elbette - Sorunu gözden geçirdim ve cevapladığımı düşündüm, ama tam olarak değil! Cevap güncellendi;) – jrtc27

16

Ben Apple'ın kodunda bir hata olarak bu görüntüleyebilir ve Hata Raporları ile ve bizzat onlara hem o rapor, ancak onun bir özelliği ısrar beri siz de bundan fayda olabilir.

[[MPMusicPlayerController applicationMusicPlayer] setVolume:newVolume]; 

Eğer ses oturumu kurduk sonra bu fikrin geçerli olacak, ya bir ses oynayarak ya da aktif gibi ayarlayarak:

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

uygulamanın ses seviyesini değiştirmek için şu kodu kullanın

MediaPlayer.framework ve AVFoundation.framework'a ihtiyaç duyacağınız ve sesin 0,0 ile 1,0 arasında olacağını unutmayın.

+0

Basit ve anlaşılır ~~ :) Çok teşekkürler. MPMusicPlayerController kullanmasam bile (ör. MPMoviePlayerController kullanarak) kullanabilirim. AVAudioSession nedeniyle. :) – alones

+0

'setVolume:' iOS 7.0'da kullanımdan kaldırıldı – ahonnecke