我使用以下代码(其工作)将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我知道它的私人框架和应用程序将不会被批准。 :)
答案 0 :(得分:1)
您遇到的唯一问题是NSInteger
。用浮点数来设置音量,比如
float newVolumeLevel=0.8;
其他一切都是一样的,没有变化。
HTH。
快乐编码