2016-02-27 1 views
1

Je développe une application iOS audio/vidéo et de messagerie texte rapide en utilisant AVAudioSession.AVAudioSession: Certains appareils Bluetooth ne fonctionnent pas correctement sur mon application

Chaque fois que je choisis d'utiliser certains périphériques Bluetooth, le son lu sur l'appareil n'est pas le flux audio de l'application. Ils ne jouent que le son du système envoyé par la bibliothèque de discussion de texte chaque fois que des messages sont envoyés/reçus à la place. Cela n'arrive pas sur tous les appareils Bluetooth, sur certains d'entre eux tout fonctionne bien. Sur Builtin Mic et Speaker, l'application fonctionne bien aussi.

Voici les méthodes les plus importantes de ma classe pour gérer l'appareil:

class MyAudioSession 
{ 
    private var mAudioSession: AVAudioSession; 

    init!() 
    { 
     self.mAudioSession = AVAudioSession.sharedInstance(); 

     do { 
      try self.mAudioSession.setActive(false); 

      try self.mAudioSession.setCategory(AVAudioSessionCategoryPlayAndRecord, withOptions: .AllowBluetooth); 
      try self.mAudioSession.setMode(AVAudioSessionModeVideoChat); 
      try self.mAudioSession.setActive(true); 
     } 
     catch { 
      return nil; 
     } 
    } 

    func switchToDevice(device: AVAudioSessionPortDescription!) -> Bool 
    { 
     var ret = false; 

     if (device != nil) { 
      do { 
       try self.mAudioSession.setPreferredInput(device); 

       ret = true; 
      } 
      catch { 
       self.logSwitch(device, error: error); 
      } 
     } 

     return ret; 
    } 
} 

Je voudrais comprendre pourquoi mon application ne fonctionne pas bien sur seulement certains appareils Bluetooth. Ces mêmes appareils fonctionnent correctement sur les autres applications de mon Cel.

J'ai fait un autre test: j'ai changé tout cela pour MPVolumeView, et exactement le même problème s'est produit, donc le problème semble être sur le lecteur audio.

Quelqu'un pourrait-il me suggérer de résoudre ce problème?

Thx.

+1

Jorg, as-tu eu de la chance avec ça? Nous éprouvons le même problème. Certaines applications fonctionnent avec certains appareils, mais pas notre AVAudioSession. Je suis en train de noter que c'est un AVAudioSessionPortBluetoothA2DP mais pas de dés pour y jouer. Encore une fois, fonctionne sur la plupart des appareils BT, mais pas quelques-uns. – djneely

Répondre

3

Jorg, Bien que ce ne soit peut-être pas la meilleure réponse, j'ai été en mesure de surmonter les problèmes de Bluetooth étranges. Mon problème semble être semblable à la vôtre que j'utilisais aussi:

AVAudioSessionCategoryPlayAndRecord 

Cela a été à l'origine des problèmes pour moi sur certains appareils Bluetooth (pas tous, mais certains).

Ce que je blesse faire a été mise la catégorie à:

AVAudioSessionCategoryPlayback 

Alors chaque fois que je devais enregistrer je changer la catégorie vers:

AVAudioSessionCategoryRecord 

Puis retour à la lecture après avoir terminé mon enregistrement.

C'était le seul moyen à ce moment-là d'obtenir un résultat cohérent en basculant entre les différentes sorties (haut-parleur, casque, Bluetooth).

Espérons que ça aide. Deviner c'est un bug dans le "AVAudioSessionCategoryPlayAndRecord"

+1

Merci pour la réponse, je vais tester votre solution. Malheureusement, cela ne résoudra pas mon problème une fois que je développerai une application de vidéoconférence, donc l'appareil devrait être gardé sur PlayAndRecord la plupart du temps. Au-delà, les appareils Bluetooth qui ne fonctionnent pas correctement sur mon application fonctionnent parfaitement sur d'autres applications comme WhatsApp. –

+0

Pas de problème. Désolé, je ne vais pas travailler pour vous. Si vous êtes en mesure de résoudre votre problème s'il vous plaît laissez-moi savoir que la solution serait très appréciée. Merci. – djneely