2014-01-16 56 views
2

我想减少iPhone的铃声音量以编程方式使用AVSystemController,我才知道这是可能的AVSystemController,但我知道,这是一个私有方法。如果我使用它,将苹果拒绝的应用程序或请建议我的另一种方式在iPhone应用程序

+0

你找到了一个解决方案?我面临着类似的问题。 – ScarletWitch

回答

0

使用任何类型的私有方法的有苹果拒绝您的应用程序的变化。由于公开iOS SDk不允许您更改铃声音量,因此您的应用无法使用此功能。

-2

试试这个代码

float value = 0.5;//this should be between 0.0 to 1.0 

[[MPMusicPlayerController applicationMusicPlayer] setVolume: value]; 
+0

设置音乐/音频音量不是铃声。 – rckoenes

-1

您可以使用AVAudioPlayer和MPVolumeView用于管理valume也请参考以下链接:How to implement a volume key shutter for iPhone?

+0

问题是关于手机铃声音量而不是音频播放音量。 – rckoenes

+0

你检查了我提供的链接吗? –

+0

是的,我做过了,这是一个关于黑客检测加音量按钮的按下。但是这个问题是关于编程改变铃声音量,而不是音频播放音量。 – rckoenes

0

可能是,苹果会拒绝它。这里,将告诉你如何做到这一点的链接[link2

更新:

[[MPMusicPlayerController applicationMusicPlayer] setVolume:setvalue]; 

检查这些linklink也。 您无法以编程方式更改铃声音量。

+0

备用链接说它是为应用音乐播放器,但我想减少铃声音量 – KishoreThindaak

+0

@ user2634244看看这个家伙用来增加/减少音量的问题。他的问题是你的答案。 –

+0

@ user2634244据我所知,在做完r&d之后我们知道你不能改变铃声音量programmaticaly,但是你可以通过程序设置它。请检查我更新的答案。 –

3
- (void) setSystemVolumeLevelTo:(float)newVolumeLevel 
{ 
    Class avSystemControllerClass = NSClassFromString(@"AVSystemController"); 
    id avSystemControllerInstance = [avSystemControllerClass performSelector:@selector(sharedAVSystemController)]; 

    NSString *soundCategory = @"Ringtone"; 

    NSInvocation *volumeInvocation = [NSInvocation invocationWithMethodSignature: 
            [avSystemControllerClass instanceMethodSignatureForSelector: 
            @selector(setVolumeTo:forCategory:)]]; 
    [volumeInvocation setTarget:avSystemControllerInstance]; 
    [volumeInvocation setSelector:@selector(setVolumeTo:forCategory:)]; 
    [volumeInvocation setArgument:&newVolumeLevel atIndex:2]; 
    [volumeInvocation setArgument:&soundCategory atIndex:3]; 
    [volumeInvocation invoke]; 
} 
+0

非常感谢! –