We developed a game in Unity5.1.2, having a game for audio song recording with background track playing, when microphone starts recording using Microphone.Start() function, audio volume level of background track playing in the game is too low for iphone devices (tested in iphone 5s) and working fine with ipads.
Included the following fixes for it
importing UnitySpeakerFix unity package and called iPhoneSpeaker.ForceToSpeaker ()
Checked/Unchecked Prepare iOS for recording option in build settings.
Those fixes doesn’t helped out. Could anyone help me to sort this out.
EDIT:
The plugin uses some deprecated method calls and so here’s some changes to make use of AVAudioSession to get the same result (force audio to the speaker). These changes go in the iPhoneSpeaker.m file:
#import "iPhoneSpeaker.h"
#import <AVFoundation/AVFoundation.h>
void _forceToSpeaker() {
// want audio to go to headset if it's connected
if (_headsetConnected()) {
return;
}
AVAudioSession *session = [AVAudioSession sharedInstance];
NSError *error = nil;
BOOL success = [session overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:&error];
if (!success) {
NSLog(@"Error forcing audio to speaker: %@", error);
}
else {
NSLog(@"Forcing audio to speaker");
}
}
bool _headsetConnected() {
AVAudioSessionRouteDescription* route = [[AVAudioSession sharedInstance] currentRoute];
for (AVAudioSessionPortDescription* desc in [route outputs]) {
if ([[desc portType] isEqualToString:AVAudioSessionPortHeadphones])
return true;
}
return false;
}