передавать аудиоданные из iPhone встроенного mi c на подключенную bluetooth-гарнитуру (HFP) Swift - PullRequest
0 голосов
/ 05 августа 2020

Требуется что-то похожее на это приложение

https://apps.apple.com/us/app/chatable-clear-conversation/id1494968908

Я пытаюсь передать звук со встроенного микрофона iPhone на bluetooth-гарнитуру, подключенную к тому же самому iPhone, в настоящее время я пытаюсь удачи, используя AVAudioEngine. Ниже приведен код, который я реализовал до сих пор

 let audioEngine = AVAudioEngine()

    func setupAudioEngine(){
        // Configure the audio session for the app.
        let audioSession = AVAudioSession.sharedInstance()
        do{
            try audioSession.setCategory(.record, mode: .spokenAudio, options: .mixWithOthers)}catch{}
        do{try audioSession.setActive(true, options: .notifyOthersOnDeactivation)}catch{}
        let inputNode = audioEngine.inputNode
        let recordingFormat = inputNode.outputFormat(forBus: 0)
        inputNode.installTap(onBus: 0, bufferSize: 1024, format: recordingFormat) { (buffer: AVAudioPCMBuffer, when: AVAudioTime) in
            
            let data = self.audioBufferToNSData(PCMBuffer: buffer)
          print(data.bytes)              
  *** PLAY THE AUDIO DATA SYNCHRONOUSLY HERE ***
        }

        audioEngine.prepare()
         do{
            try audioEngine.start()
         }catch{}

    }

func audioBufferToNSData(PCMBuffer: AVAudioPCMBuffer) -> NSData {
    let channelCount = 1  // given PCMBuffer channel count is 1
    let channels = UnsafeBufferPointer(start: PCMBuffer.floatChannelData, count: channelCount)
    let data = NSData(bytes: channels[0], length:Int(PCMBuffer.frameLength * PCMBuffer.format.streamDescription.pointee.mBytesPerFrame))

    return data
}

Я понятия не имею, можно ли достичь требуемого сценария с помощью вышеуказанных методов или нет, вот я получение аудиоданных, которые я сейчас пытаюсь воспроизвести.

ЕСЛИ описанный выше метод является правильным способом, мне сложно воспроизводить аудиоданные. И если есть какой-то другой способ добиться того же, любая помощь была бы замечательной .. !!!

...