Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
设置iOS MPMusicLayerController相对于AvaudioLayer的音量_Ios_Avaudioplayer_Volume_Mpmusicplayercontroller - Fatal编程技术网

设置iOS MPMusicLayerController相对于AvaudioLayer的音量

设置iOS MPMusicLayerController相对于AvaudioLayer的音量,ios,avaudioplayer,volume,mpmusicplayercontroller,Ios,Avaudioplayer,Volume,Mpmusicplayercontroller,我有一个应用程序,使用MPMusicLayerController播放背景音乐,使用AVAudioPlayer播放前景声音。我想控制相对音量,使MPMusicLayerController更低,但设置音量会改变整个系统的音量,就像使用手机侧面的按钮一样。有没有办法在不降低系统音量的情况下降低MPMusicLayerController的音量 MPMusicPlayerController *musicPlayer = [MPMusicPlayerController applicationMus

我有一个应用程序,使用MPMusicLayerController播放背景音乐,使用AVAudioPlayer播放前景声音。我想控制相对音量,使MPMusicLayerController更低,但设置音量会改变整个系统的音量,就像使用手机侧面的按钮一样。有没有办法在不降低系统音量的情况下降低MPMusicLayerController的音量

MPMusicPlayerController *musicPlayer = [MPMusicPlayerController applicationMusicPlayer];
musicPlayer.volume = 0.1; // at this point the overall system volune has been set to 0.1
[musicPlayer setQueueWithItemCollection:collection];
[musicPlayer play];

AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&err];
[player prepareToPlay];
[player setVolume: 1.0]; // I want this to be twice as loud as MPMusicPlayerController
[player play];
您需要学习如何“躲避”MPMusicPLayer。在播放AVAudioPlayer之前和之后,尝试调用下面的方法

基本上,在之前和之后分别是[self-setAudioSessionWithDucking:YES]和[self-setAudioSessionWithDucking:NO]

- (void)setAudioSessionWithDucking:(BOOL)isDucking
{
     AudioSessionSetActive(NO);

    UInt32 overrideCategoryDefaultToSpeaker = 1;
    AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryDefaultToSpeaker, sizeof (overrideCategoryDefaultToSpeaker), &overrideCategoryDefaultToSpeaker);

    UInt32 overrideCategoryMixWithOthers = 1;
    AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof (overrideCategoryMixWithOthers), &overrideCategoryMixWithOthers);

    UInt32 value = isDucking;
    AudioSessionSetProperty(kAudioSessionProperty_OtherMixableAudioShouldDuck, sizeof(value), &value);

    AudioSessionSetActive(YES);
}
您需要学习如何“躲避”MPMusicPLayer。在播放AVAudioPlayer之前和之后,尝试调用下面的方法

基本上,在之前和之后分别是[self-setAudioSessionWithDucking:YES]和[self-setAudioSessionWithDucking:NO]

- (void)setAudioSessionWithDucking:(BOOL)isDucking
{
     AudioSessionSetActive(NO);

    UInt32 overrideCategoryDefaultToSpeaker = 1;
    AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryDefaultToSpeaker, sizeof (overrideCategoryDefaultToSpeaker), &overrideCategoryDefaultToSpeaker);

    UInt32 overrideCategoryMixWithOthers = 1;
    AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof (overrideCategoryMixWithOthers), &overrideCategoryMixWithOthers);

    UInt32 value = isDucking;
    AudioSessionSetProperty(kAudioSessionProperty_OtherMixableAudioShouldDuck, sizeof(value), &value);

    AudioSessionSetActive(YES);
}

为了澄清,我希望系统音量保持在用户使用手机侧面的音量按钮设置的任何音量。然后我想设置MPMusicLayerController和AVAudioPlayer的播放音量,使AVAudioPlayer的声音更大。为了澄清这一点,我想让系统音量保持在用户使用手机侧面的音量按钮设置的任何音量。然后我想设置MPMusicLayerController和AVAudioPlayer的播放音量,使AVAudioPlayer的声音更大。谢谢。我有一阵子没看这个问题了。谢谢。我有一阵子没看这个问题了。