iPhone仅为应用程序设置播放声音的音量

iPhone仅为应用程序设置播放声音的音量,iphone,audio,audiosession,mpvolumeview,Iphone,Audio,Audiosession,Mpvolumeview,我现在想知道如何 a) Play a sound next to iPod/Other music sources b) beeing able to control the volume of that played sound (only) c) **important** both combined!! d) all of it also on background/mt 我可以使用a)的AudioSession和b)的MPVolumeView进行Seperate 现在我读到,我不能为音

我现在想知道如何

a) Play a sound next to iPod/Other music sources
b) beeing able to control the volume of that played sound (only)
c) **important** both combined!!
d) all of it also on background/mt
我可以使用a)的AudioSession和b)的MPVolumeView进行Seperate

现在我读到,我不能为音频会话设置音量,因为它们的音量基于系统音量,这在我的基础上是不好的。在音量控制播放的同时停止iPod音乐更糟糕

例如,我注意到runmeter(不想做广告,举个例子)有一个滑块,它控制应用程序的音量,而不管系统音量和/或iPod音量是多少

因此,我几乎可以将手机静音,将ipod置于中间位置,并将应用程序的音量最大化,工作正常

有没有办法/提示如何在不被苹果抛弃的情况下完成这件事

有什么建议吗

谢谢


编辑:感谢badgrr解决了这个问题,我的最终解决方案是,通过使用CocosDenshin:

appDelegate,应用程序标识符背景:

[[CDAudioManager sharedManager] setMode:kAMM_MediaPlayback];
[[CDAudioManager sharedManager] setResignBehavior:kAMRBDoNothing autoHandle:NO];
appDelegate,applicationWillEnterForeground:-只是为了确定一下

[[CDAudioManager sharedManager] setResignBehavior:kAMRBDoNothing autoHandle:NO];
播放时,我还需要知道声音文件何时完成,以便播放下一个,因为我不想在simult的混合中构建句子。话。就像说“你好”然后说“世界”:

在初始化我的Soundplayer时:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:&err];
[[CDAudioManager sharedManager] setMode:kAMM_MediaPlayback];
soundEngine = [[CDAudioManager sharedManager] audioSourceForChannel:kASC_Right];
soundEngine.delegate = self; // ensure to implement <CDLongAudioSourceDelegate>  
在当前停止后播放下一个(我的音频队列是一个NSMutableDictionary)


希望它能帮助任何和我一样有麻烦的人

从评论转向回答,这样别人更容易阅读

看一看。它使用OpenAL进行声音处理,并且可以通过不同界面控制的背景声音播放声音。如果需要,可以使用它而不必使用Cocos2d

为了防止音效停止iPod library播放,您需要使用以下行指定自定义音频会话:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:NULL];

你能用OpenAL来制作你的声音吗?这将允许您单独控制音量。獾,谢谢您的提示!我试着查了一下,并没有清楚地注意到我是否可以在后台玩openAL?我在我的问题中添加了这个信息,我只是放弃了命名这个主要部分。看一看。它使用OpenAL的声音,并可以发挥他们的背景声音控制与不同的界面凯我会登上另一个尝试,也许我是快与它!谢谢你,獾!谢谢!獾,看来你有经验了。现在,由于我的时间不多了,(假期旅行,4小时后的航班),我需要完成这件事,实际上我无法在CDSoundEngine中找到告诉我不要暂停ipod的地方。它通过使用alloc/init、loadBuffer w/filepath和playSound来实现。找不到文档提示。有什么线索吗?是的,我在iPhone游戏中同时播放音效和背景音乐。背景音乐来自同一个应用程序,我想不是ipod?CocosDenshion+ipod需要自定义音频会话。将其放在应用程序开头附近:[[AVAudioSession sharedInstance]setCategory:AVAudioSessionCategoryAmbient error:NULL];好吧,这是可行的,但现在由于它的环境,它相当安静!有没有线索可以帮你摆脱这种愚蠢的行为?例如,systemSoundsession有一个混合属性。原因是,用户应该能够根据自己的意愿设置音量。不是苹果;)
- (void) cdAudioSourceDidFinishPlaying:(CDLongAudioSource *) audioSource
{
    if ([self.audioQueue count] > 0) 
    {
        [self.audioQueue removeObjectAtIndex:0];
    }

    if ( [self.audioQueue count] > 0 ) 
    {
        NSString *file = [self.audioQueue objectAtIndex:0];
        [self playSound:file];
    } 
    else 
    {
        //NSLog(@"SoundsManager::cdAudio.. Done, queue empty");
            [self resumeIPod];
    }
}
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:NULL];