Ticket #1697 (closed task: fixed)
Add support for iOS SDK 7 & iOS 7
|Reported by:||ming||Owned by:||bennylp|
|Backport to 1.x milestone:||Backported:||no|
Description (last modified by nanang) (diff)
This ticket will add support with regard to changes in iOS SDK 7 and iOS 7, such as:
- Deprecated C-interface Audio Session API.
PJSIP now uses AVAudioSession to set audio session category and activate/deactivate audio session. Application will need to do its own audio session management to handle input/output route and notifications (interruption, media server reset, etc). Please refer to Apple's official doc on Audio Session Programming Guide.
- Audio volume control with VoiceProcessingIO Audio Unit
It is reported that when using VoiceProcessingIO audio unit on iOS 7, there are a few issues:
- Problem with Bluetooth routing after interruption. With a Bluetooth source, Bluetooth can be set while on a call and gets audio correctly. If the call is ended, the next incoming call rings correctly in Bluetooth, but when the call is answered (with no route changes), it gets rerouted to the earpiece and the Bluetooth audio is dropped. One of the solution as mentioned here is to add an audio session property listener to the audio route change property and override allow bluetooth in the listener callback.
- Unable to mute the volume using the side volume button (the minimum volume is one bar). This didn't happen before iOS 7.
- Unable to synchronize with the control center volume slide bar. Since control center is a new feature in iOS 7 we cannot compare it with pre-iOS 7.
- After the teardown of the audio unit, AVAudioPlayer will play at a reduced volume if the category is set to PlayAndRecord with category option DefaultToSpeaker. (Update: According to Apple's reply, this is due to the gain controller feature employed in VPIO, which still applies even after its uninitialization. There is no API or workaround to change the gain controller but it is reported that the issue is being investigated as to whether the gain controller affect the playback volume too drastically.)
Currently there is no resolution other than disabling EC.A reported workaround is by setting audio session category to non-playback mode (such as by setting it to record only, [[AVAudioSession sharedInstance] setCategory:AVAudioSessionRecord error:nil];) before the audio unit is destroyed (i.e. upon call disconnection).
- Description modified (diff)
- Summary changed from Add support for iOS SDK 7 to Add support for iOS SDK 7 & iOS 7