iOS: désapprobation de AudioSessionInitialize et AudioSessionSetProperty
Je suis très nouveau à Objective-C, et suis en train de mettre à jour un code qui correspond à environ 3 ans pour travailler avec iOS 7. Il y a deux ou les deux instances de AudioSessionSetProperty
et AudioSessionInitialize
figurant dans le code:
1:
- (void)applicationDidFinishLaunching:(UIApplication *)application {
AudioSessionInitialize(NULL,NULL,NULL,NULL);
[[SCListener sharedListener] listen];
timer = [NSTimer scheduledTimerWithTimeInterval: 0.5 target: self selector: @selector(tick:) userInfo:nil repeats: YES];
//Override point for customization after app launch
[window addSubview:viewController.view];
[window makeKeyAndVisible];
}
Et 2:
- (id)init {
if ([super init] == nil){
return nil;
}
AudioSessionInitialize(NULL,NULL,NULL,NULL);
Float64 rate=kSAMPLERATE;
UInt32 size = sizeof(rate);
AudioSessionSetProperty (kAudioSessionProperty_PreferredHardwareSampleRate, size, &rate);
return self;
}
Pour quelque raison que ce code fonctionne sur iOS7 dans le simulateur, mais pas un appareil équipé d'iOS7, et je soupçonne que ces désapprobations sont la cause. J'ai entrepris la lecture de la documentation et des questions connexes sur ce site, et il semble que j'ai besoin d'utiliser AVAudioSession
à la place. J'ai essayé de mettre à jour le code pour un long moment maintenant, et je ne suis pas sûr de savoir comment bien passer de l'un à AVAudioSession
. Personne ne sait comment ces deux méthodes ci-dessus ont besoin de chercher?
Note de côté: j'ai réussi à traquer un article qui décrit la transition:
https://github.com/software-mariodiana/AudioBufferPlayer/wiki/Replacing-C-functions-deprecated-in-iOS-7
Mais je n'arrive pas à appliquer le code ci-dessus.
Le code que j'essaie de mettre à jour est un petit fréquence de détection de l'application à partir de git:
https://github.com/jkells/sc_listener
Sinon, si quelqu'un pouvait m'indiquer un échantillon de démonstration app qui permet de détecter les fréquences sur les appareils iOS, ce serait génial.
source d'informationauteur John
Vous devez vous connecter pour publier un commentaire.
Comme vous l'avez observé, à peu près tous les vieux Core Audio AudioSession fonctions ont été dépréciée en faveur de AVAudioSession.
La AVAudioSession est un objet singleton qui sera initialisé lors de la première à l'appeler:
Il n'y a pas de
initialize
méthode. Mais vous souhaitez activer la session audio:En ce qui concerne le réglage du matériel de l'échantillon avec un taux de
AVAudioSession
veuillez vous référer à ma réponse ici:Comment puis-je obtenir de l'indigène (matériel pris en charge) audio taux d'échantillonnage afin d'éviter interne de l'échantillon taux de conversion?
Pour d'autres compare & les contrastes entre le Core Audio audioSession et AVFoundation de AVAudioSession voici quelques unes de mes autres réponses autour du même thème:
Comment puis-je Voie Audio de haut-Parleur sans l'aide de AudioSessionSetProperty?
utilisation microphone arrière de l'iphone 5
La lecture de l'audio par le biais de haut (appel téléphonique) haut-parleur
Comment le matériel de contrôle de gain d'entrée micro/niveau sur l'iPhone?
J'ai écrit un petit tutoriel qui explique comment mettre à jour vers la nouvelle AVAudioSession objets. Je l'ai posté sur GitHub: "Le remplacement de fonctions C obsolète dans iOS 7."