Problema di inizializzazione aperta, solo iPod (?)
Domanda
Sto avendo un problema con l'apertura che sembra solo accadere con hardware per iPod, e la cosa strana è che era Funzionando bene, e ora non lo è.
Sto impostando la sessione audio:
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayAndRecord error: nil];
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute,
sizeof(UInt32), &audioRouteOverride);
AudioSessionSetActive(YES);
E inizializza apertura:
device = alcOpenDevice(NULL);
if (!device) {
NSLog(@"Could not open default OpenAL device.");
return NO;
}
context = alcCreateContext(device, 0);
if (!context) {
NSLog(@"Failed to create OpenAL context for default device.");
return NO;
}
BOOL success = alcMakeContextCurrent(context); // fails here
if (!success) {
NSLog(@"Failed to set current OpenAL context.");
return NO;
L'output è:
AudioStreamBasicDescription: 2 ch, 44100 Hz, 'lpcm' (0x00000C2C) 8.24-bit little-endian signed integer, deinterleaved
2010-10-27 10:51:09.261 FinchTestProject[239:307] Failed to set current OpenAL context.
Quindi la funzione AlcMakeContextCurrent sta restituendo false, e non sono sicuro del perché. L'audio non è davvero la mia esperienza e non riesco a trovare molte informazioni su questo, quindi qualsiasi aiuto che voi ragazzi possa darmi sarebbe apprezzato.
Grazie!
EDIT: ho scoperto che se invertono l'ordine di inizializzazione, cioè se inizialisca aperta e poi l'audiosessione, funziona ... anche se questo è l'ordine in cui avevo prima e non funzionava, quindi qualcosa di divertente sta sicuramente succedendo; Inoltre, non funziona ancora con le versioni precedenti di iOS
Soluzione
L'ordine inverso dell'inizializzazione sembra funzionare OK, apertura e audiosessione
Altri suggerimenti
Solo un'ipotesi selvaggia:
L'iPod touch di 1a generazione no avere un oratore. Quindi forse non puoi prevalere sul percorso audio per un oratore inesistente.
Modificare: OH, e solo l'iPod touch (di 4a generazione) ha un microfono integrato. Tutte le altre generazioni richiedono che le cuffie (con microfono) siano collegate per la registrazione. Forse è per questo che ha smesso di funzionare all'improvviso, le cuffie sono state rimosse.