使用avsystemcontroller恢复铃声音量IOS不起作用

时间:2014-07-14 07:44:14

标签: ios avsystemcontroller

我使用以下代码(其工作)将iphone铃声音量设置为零。我的问题是我想恢复和使用相同的代码只是改变音量水平不起作用。请建议一个合适的方法来做到这一点。

NSBundle *bundle = [NSBundle bundleWithPath:@"/System/Library/PrivateFrameworks/Celestial.framework"];
BOOL success = [bundle load];
Class avSystemControllerClass = NSClassFromString(@"AVSystemController");
id avSystemControllerInstance = [avSystemControllerClass performSelector:@selector(sharedAVSystemController)];
NSString *soundCategory = @"Ringtone";


NSInteger *newVolumeLevel = 0;


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];

我试图将newvolumelevel设置为5 8 10,但它无效。

P.S我知道它的私人框架和应用程序将不会被批准。 :)

1 个答案:

答案 0 :(得分:1)

您遇到的唯一问题是NSInteger。用浮点数来设置音量,比如

float newVolumeLevel=0.8;

其他一切都是一样的,没有变化。

HTH。

快乐编码