2012-10-30 46 views
12

sto incontrando il seguente problema: AirPlay non diventa disponibile ogni volta che ho impostato categoria play-and-record alla sessione audio nella mia domanda:AVAudioSessionCategoryPlayAndRecord rende AirPlay invisibile

[[AVAudioSession sharedInstance] 
     setCategory: AVAudioSessionCategoryPlayAndRecord 
     error: &setCategoryError]; 

Questa chiamata rende l'AirPlay scompaiono e reindirizza l'audio all'altoparlante immediatamente.

Il problema può essere facilmente riprodotto per es. sul progetto di esempio avTouch dalla documentazione Xcode sostituendo la categoria AVAudioSessionCategoryPlayback con AVAudioSessionCategoryPlayAndRecord: nell'esempio originale, il selettore AirPlay è visibile e consente di modificare la sorgente di output, mentre con la categoria AVAudioSessionCategoryPlayAndRecord scompare il selettore.

Esiste un modo corretto per passare alla categoria AVAudioSessionCategoryPlayAndRecord in modo che AirPlay sia ancora disponibile?

(una domanda come questa è stata already asked, ma non ha ottenuto alcuna risposta.)

+0

Probabilmente potresti dover provare con alcune API private. Controlla se questo aiuta in ogni caso. http://spin.atomicobject.com/2012/04/23/ios-mirroring-and-programmatic-airplay-selection/ Si parla di alcuni apis privati. – iDev

+1

@ ACB: grazie! Ho esaminato l'articolo menzionato, ma come dici tu, utilizzano API private, che non posso utilizzare, poiché il progetto per cui lavoro è distribuito tramite App Store. – Anastasia

+0

@ Anastasia Hai una soluzione? Sto affrontando lo stesso problema con te. Grazie – Jacky

risposta

-1

Bene, AirPlay e la categoria PlayAndRecord sono solo incompatibili. Ecco cosa ho imparato dai forum Apple.

Perché è necessario l'ingresso audio sul dispositivo quando l'uscita audio avviene da qualche altra parte?

+1

L'applicazione riproduce un flusso video (probabilmente emettendo il suono tramite AirPlay) e registra il flusso stesso allo stesso tempo. Ha senso? – Anastasia

+0

Il punto è che l'audio funziona come previsto per le cuffie collegate, quindi era normale che le cuffie collegate ad AirPlay funzionassero allo stesso modo. – Anastasia

+0

-1: ci sono tanti motivi per cui potresti volerlo. Un mio cliente desidera utilizzare il mio software di monitoraggio audio per eseguire un controllo della risposta della stanza riproducendo l'audio durante l'airplay e quindi monitorando ciò che l'iPhone registra (in modalità di misurazione). Così fastidioso che Apple lo blocchi completamente. – Goz

0

Penso che dovresti aggiungere il codice sotto sopra AVAudioSession. Spero che funzioni.

NSError *setCategoryError = nil; 
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error: &setCategoryError]; 

if (setCategoryError) { 
    // Handle error 
} 
1

Quale dispositivo AirPlay stai tentando di utilizzare? Ha un microfono?

In caso contrario, iOS non lo presenterà come opzione quando si utilizza la categoria PlayAndRecord, poiché tale dispositivo non può riprodurre record e. Si mostrerebbe quando si usa la categoria Play però.

Inoltre, se il dispositivo che si sta utilizzando è un dispositivo Bluetooth, è stato impostato AVAudioSessionCategoryOptionAllowBluetooth su YES?