2012-02-14 15 views
8

मैं एक .caf फ़ाइल चलाने के लिए AVAudioPlayer का उपयोग करता हूं। मेरी समस्या यह है: यह मेरे उद्देश्य के लिए पर्याप्त जोर से नहीं है। चूंकि आईफोन की रिंगर ध्वनि बहुत जोर से है, इसलिए मैं सोच रहा था कि मैं इस वॉल्यूम को कैसे संग्रहीत कर सकता हूं। मैंने पहले ही .caf फ़ाइल में हेरफेर करने की कोशिश की लेकिन बिना किसी वास्तविक सफलता के। कोई विचार?आईओएस अधिकतम मात्रा स्तर?

कोड मैं अब तक का उपयोग करें:

AVAudioPlayer *newPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL: url error: nil]; 
self.appSoundPlayer = newPlayer; 
[newPlayer release]; 
[appSoundPlayer prepareToPlay]; 
[appSoundPlayer setVolume: 0.8]; 
[appSoundPlayer setDelegate: self]; 
    [appSoundPlayer play]; 

संपादित करें:

[appSoundPlayer setVolume: 1.0]; 

Thx मार्टिन

उत्तर

13

तुम हमेशा वास्तविक अधिकतम जैसे करने के लिए मात्रा निर्धारित कर सकते हैं:

[appSoundPlayer setVolume: 1.0]; 

इसके अलावा, आपको शायद फ़ाइल को ही संपादित करना होगा।

+0

Thx पीटर, दाएं, 1.0 .. कॉपी और पेस्ट त्रुटि। लेकिन यह अभी भी बहुत शांत है; ( – MartinHappyCoding

8

मार्टिन, क्या आपने सुनिश्चित किया है कि सिस्टम वॉल्यूम अधिकतम है? यदि नहीं, तो आप MPMusicPlayerController का उपयोग अधिकतम मात्रा में सिस्टम वॉल्यूम को चालू करने के लिए करना चाहते हैं, न कि केवल avaudioplayer अधिकतम। आप इसे अपनी ध्वनि क्लिप की लंबाई के लिए चालू कर सकते हैं और उसके बाद उसे मूल वॉल्यूम पर सेट कर सकते हैं जिसे उपयोगकर्ता ने सेट किया था।

// Import headers. Link to "MediaPlayer Framework" 
#import <MediaPlayer/MediaPlayer.h> 

//set up audio session 
AVAudioSession *audioSession = [AVAudioSession sharedInstance]; 
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:NULL]; 

UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker; 
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride); 

NSURL *soundUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"HsTR_soundEFX_2-1" ofType:@"mp3"]]; 
audioAlert= [[AVAudioPlayer alloc] initWithContentsOfURL:soundUrl error:nil]; 
audioAlert.delegate = self; 
[audioAlert prepareToPlay];//audioAlert is an AVAudioPLayer declared in header 

//and whereever you want to play the sound, call the lines below 
float currentVolume=[MPMusicPlayerController applicationMusicPlayer].volume; //grab current User volume 
[[MPMusicPlayerController applicationMusicPlayer] setVolume:1.0];//set system vol to max 
[audioAlert play]; 
[NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(setVolumeBackToNormal)userInfo:nil repeats:NO]; 

//and the setVolumeBackToNormal function calls this line below 
[[MPMusicPlayerController applicationMusicPlayer]setVolume:currentVolume];//returns volume to original setting 
+1

अरे, मीडियाप्लेयर फ्रेमवर्क से लिंक करना न भूलें। – Yeung

+0

धन्यवाद! उपयोगी टिप्पणी यह ​​हो सकती है कि 'एमपीएम्यूजिकप्लेयर कंट्रोलर' की 'वॉल्यूम' संपत्ति आईओएस 7.0 के रूप में बहिष्कृत है जैसा कि यहां बताया गया है [https] : //developer.apple.com/library/ios/documentation/MediaPlayer/Reference/MPMusicPlayerController_ClassReference/#//apple_ref/occ/instp/MPMusicPlayerController/volume)। – Alex

संबंधित मुद्दे