2015-12-20 6 views
5

मैं इस तरह लगता है खेल रहा हूँ:आईओएस नियंत्रण ध्वनि परिमाण

#import <AudioToolbox/AudioToolbox.h> 
#import <AVFoundation/AVFoundation.h> 
.. 
.. 
SystemSoundID soundID; 
NSString *path = [[NSBundle mainBundle] 
    pathForResource:@"ClickSound" ofType:@"wav"];  

AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path],&soundID); 
AudioServicesPlaySystemSound (soundID); 

यह, यह 'रिंगर' से मात्रा है लेने के लिए लगता है लेकिन यह 'वॉल्यूम' को नियंत्रित जब मैं भौतिक वॉल्यूम बटन का उपयोग करें (तो मैं वॉल्यूम 'म्यूट' कर सकते हैं - लेकिन मैं अभी भी ध्वनि सुनता हूं)।

मैं सही मात्रा को नियंत्रित करना चाहता हूं और मैं इसे म्यूट करने के दौरान नहीं खेलना चाहता हूं (बीटीडब्लू - जब मैं म्यूट टॉगल का उपयोग करता हूं, और मुझे ध्वनि नहीं सुनाई देती है)।

मैं इसे कैसे ठीक कर सकता हूं?

उत्तर

2

ऑडियो सर्विसेजक्रेट सिस्टम सिस्टम केवल रिंगर वॉल्यूम पर लागू होता है।

आप इसके लिए AVAudioPlayer का उपयोग कर सकते हैं।

AVAudioPlayer *buttonClick=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath: [[NSBundle mainBundle] pathForResource:[[NSString alloc] initWithFormat:@"buttonClick"] ofType:@"mp3"]] error:NULL]; 
[buttonClick prepareToPlay]; 
[buttonClick play]; 
0

कोड में वॉल्यूम को नियंत्रित करने का कोई तरीका नहीं है। उपयोगकर्ता को वॉल्यूम बदलने के लिए आप यूआई नियंत्रण प्रदान कर सकते हैं।

ऑडियो श्रेणियों द्वारा प्रबंधित किया जाता है, और हार्डवेयर सेटिंग का सम्मान करने के संबंध में व्यवहार अलग-अलग होता है।

Ambient श्रेणी म्यूट स्विच का सम्मान करेगी; अन्य नहीं करेंगे।

कोई श्रेणी आपको म्यूट स्विच की स्थिति निर्धारित करने की अनुमति देती है।

+0

मैं शारीरिक नियंत्रकों द्वारा ध्वनि को नियंत्रित करना चाहते हैं, वे 'वॉल्यूम' लेकिन मेरे खेल की आवाज हमेशा एक ही है पर नियंत्रण: यहां कुछ नमूना कोड है। दूसरे शब्दों में - मैं 'वॉल्यूम' को ऑडियो सर्विसेजप्लेसिस्टमसाउंड() फ़ंक्शन को नियंत्रित करने के लिए चाहता हूं, न कि 'रिंगर'। @Avi – Dizzy

+0

आप क्या चाहते हैं और आप क्या प्राप्त करते हैं विभिन्न चीजें हैं। यह एक भयानक उपयोगकर्ता अनुभव होगा यदि कोई बेवकूफ ऐप किसी भी तरह से वॉल्यूम सेट कर सकता है, संभवतः अलग-अलग नियंत्रणों के साथ जो मुझे पता लगाना है – gnasher729

0

शायद आप वॉल्यूम बटन के कॉल नीचे दिए गए कोड का उपयोग कर पीठ के लिए रजिस्टर चाहिए,

- (BOOL)application:(UIApplication *)application 
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [[NSNotificationCenter defaultCenter] 
    addObserver:self 
    selector:@selector(volumeChanged:) 
    name:@"AVSystemController_SystemVolumeDidChangeNotification" 
    object:nil]; 
} 

- (void)volumeChanged:(NSNotification *)notification 
{ 
    float volume = 
    [[[notification userInfo] 
     objectForKey:@"AVSystemController_AudioVolumeNotificationParameter"] 
    floatValue]; 
} 

आशा है कि यह मदद करता है होगा। हैप्पी कोडिंग :)

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