7

Sto provando ad avviare uno kAudioSessionCategory_RecordAudio dopo che la mia app è stata riattivata in background ma non in prima linea (come durante una modifica significativa della posizione, ho visto altre app nello store fare così so che è possibile). Tuttavia ogni volta che provo ad avviare la sessione audio in questo modoCome si avvia una sessione audio di registrazione iOS in background?

CheckError(AudioQueueStart(queue, NULL), "AudioQueueStart failed");

ottengo questo errore:

Error: AudioQueueStart failed (-12985)

così ho letto su questo, ma unico suggerimento è l'impostazione della sessione audio ad attivo AudioSessionSetActive(YES) ma anche questo non riesce con un errore '!cat'. Apparentemente puoi provare ad alternare lo stato attivo della sessione audio ma questo non ha funzionato per me.

Ho impostato il flag della modalità background audio e avvio di una sessione audio mentre la mia app è in primo piano, quindi il passaggio a un'altra app funziona (mostra la barra rossa che indica che sta registrando). È appena iniziato la sessione audio mentre l'app non è all'avanguardia è il problema.

Qualcuno ha un progetto di esempio Potrei guardare dimostrando l'avvio di una sessione audio di registrazione in background?

Nota: Sto cercando una soluzione che utilizzi le code audio in quanto ho bisogno dell'audio nei buffer, non di un file.

risposta

4

Si scopre che il codice di esempio SpeakHere di Apple con alcune modifiche inizierà a registrare l'audio in background se si aggiunge il flag multitasking audio a info.plist e si aggiungono le opportune API di modifica della posizione significative. Potresti cercare https://github.com/benvium/SpeakHere per una versione aggiornata di SpeakHere poiché Apple non l'ha aggiornata da un po '.

+0

qual è esattamente il flag audio multitasking? Spiega per favore – Nil

-1

Attualmente, iOS non consente l'avvio di una sessione audio o di una registrazione audio in background. Un'app deve avviare l'audio in primo piano, ma può semplicemente eliminare tutti i dati audio registrati fino a quando necessario, che potrebbero essere in background quando si utilizzano le modalità di background e la sessione audio appropriate.

+2

In che modo un'app come la navigazione GPS funziona in una situazione in cui non sta attualmente pronunciando una direzione, un utente passa all'app di musica e riproduce la musica finché l'app di navigazione GPS non pronuncia una nuova direzione. altoparlante di nuovo. Suppongo che se puoi avviare la riproduzione mentre la tua app è in background puoi iniziare a registrare. – audioBackgrounder

+0

@ hotpaw2, l'applicazione live di "sleep talk recorder" funziona perfettamente e supporta la registrazione di un'intera giornata in background. Quindi dovrebbe esserci un modo che permetta di essere registrato in background per l'intera giornata. ecco il link dell'app live: https://itunes.apple.com/en/app/sleep-talk-recorder/id391767653?mt=8 – Jacky

+0

Forse quelle app abilitano la loro sessione audio quando sono in primo piano e prima di andare in secondo piano tutto il giorno. – hotpaw2