audio: restart audio stream

Restart audio after receiving callback from CallKit.

Change-Id: Ie417735db719108f2c6da687fc010b516f130b30
diff --git a/Ring/Ring/Bridging/AudioAdapter.h b/Ring/Ring/Bridging/AudioAdapter.h
index d81d46f..8d39269 100644
--- a/Ring/Ring/Bridging/AudioAdapter.h
+++ b/Ring/Ring/Bridging/AudioAdapter.h
@@ -25,6 +25,7 @@
 - (void)setAudioOutputDevice:(NSInteger)index;
 - (void)setAudioInputDevice:(NSInteger)index;
 - (void)setAudioRingtoneDevice:(NSInteger)index;
+- (void)startAudio;
 
 @end
 
diff --git a/Ring/Ring/Bridging/AudioAdapter.mm b/Ring/Ring/Bridging/AudioAdapter.mm
index efba608..e09edae 100644
--- a/Ring/Ring/Bridging/AudioAdapter.mm
+++ b/Ring/Ring/Bridging/AudioAdapter.mm
@@ -35,5 +35,8 @@
 - (void)setAudioRingtoneDevice:(NSInteger)index {
     DRing::setAudioRingtoneDevice((int32_t)index);
 }
+- (void)startAudio {
+    DRing::startAudio();
+}
 
 @end
diff --git a/Ring/Ring/Calls/CallViewModel.swift b/Ring/Ring/Calls/CallViewModel.swift
index 4a3ff06..5404a9f 100644
--- a/Ring/Ring/Calls/CallViewModel.swift
+++ b/Ring/Ring/Calls/CallViewModel.swift
@@ -343,11 +343,7 @@
             .filter({ serviceEvent in
                 serviceEvent.eventType == .audioActivated
             }).subscribe(onNext: { [unowned self] _ in
-                if !self.audioService.isHeadsetConnected.value {
-                    self.switchSpeaker()
-                    self.isAudioOnly ?
-                        self.audioService.overrideToReceiver() : self.audioService.overrideToSpeaker()
-                }
+                self.audioService.startAudio()
             }).disposed(by: self.disposeBag)
     }
 
@@ -383,12 +379,9 @@
     }
 
     func answerCall() -> Completable {
-        guard #available(iOS 10.0, *) else {
-            if !self.audioService.isHeadsetConnected.value {
-                isAudioOnly ?
-                    self.audioService.overrideToReceiver() : self.audioService.overrideToSpeaker()
-            }
-            return self.callService.accept(call: call)
+        if !self.audioService.isHeadsetConnected.value {
+            isAudioOnly ?
+                self.audioService.overrideToReceiver() : self.audioService.overrideToSpeaker()
         }
         return self.callService.accept(call: call)
     }
diff --git a/Ring/Ring/Services/AudioService.swift b/Ring/Ring/Services/AudioService.swift
index 7cf7058..a246f53 100644
--- a/Ring/Ring/Services/AudioService.swift
+++ b/Ring/Ring/Services/AudioService.swift
@@ -64,6 +64,9 @@
         } catch {
             log.error("\(error)")
         }
+        if #available(iOS 10.0, *) {
+            return
+        }
         setToRing()
     }
 
@@ -159,4 +162,8 @@
     func setAudioRingtoneDevice(port: OutputPortType) {
         self.audioAdapter.setAudioRingtoneDevice(port.rawValue)
     }
+
+    func startAudio() {
+        self.audioAdapter.startAudio()
+    }
 }