我已经构建了一个可以轻松播放大量声音的应用程序:

AudioServicesPlaySystemSound(someSoundID);

当我使用设备音量按钮增大或减小音量时,我实际改变的音量是手机的铃声音量。因此,如果您减少它并退出应用程序,那么您的手机将安静地响起......

是否有一种简单的方法来覆盖它并实际更改应用程序的音量?

有帮助吗?

解决方案

我找到了解决方案,我认为这是一个常见的问题。所以这就是你的应用程序如何拥有自己的音量,并且不会弄乱用户的铃声音量,即使你只是将声音作为系统声音播放。

你必须导入AVFoundation框架并在一个对象中保持加载,你的应用程序运行的整个时间(或视图或应用程序委托)你已初始化AVAudioPlayer,给它一个文件来播放并将其设置为“ prepareToPlay"它...

这是我在主视图中所做的(用于将其他视图作为子视图加载): 在头文件中:

#import <AVFoundation/AVFoundation.h>

@interface MainViewController : UIViewController {
    AVAudioPlayer *volumeOverridePlayer;
}

@property (nonatomic, retain) AVAudioPlayer *volumeOverridePlayer;

在实施文件中:

    @synthesize volumeOverridePlayer;

- (void)viewDidLoad
{
    [super viewDidLoad];

    volumeOverridePlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:[[NSBundle mainBundle] pathForResource:@"something" ofType:@"caf"]] error:nil];
    [volumeOverridePlayer prepareToPlay];
//...
}

让玩家准备播放您的文件并享受自己的音量控制,而无需通过它播放声音! 当然,请记得在dealloc中发布它。

其他提示

从Apple的文档中我可以看到,这里有两个问题。 1.应用程序和OS /硬件卷只能由硬件/用户控制。你正在播放系统声音。我相信系统声音是由操作系统控制的,所以你在这里运气不好,除非你正在播放实际的声音文件。如果你可以使用声音文件,那么看看此处

祝你好运!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top