2009-03-11 13 views
0

J'essaie de faire une application iphone simple qui a deux boutons: Démarrer et arrêter. Lorsque vous frappez au démarrage, il commence à écouter le volume du microphone du téléphone et fait apparaître l'étiquette à quel point vous parlez dans le micro. Quand vous frappez stop, il arrête d'écouter.Voir la valeur des fonctions

J'ai trouvé une grande classe appelée SCListener, mais je ne sais pas comment l'implémenter. En ce moment j'ai un bouton relié au code suivant

-(IBAction)getVolume 
{ 
    SCListener *listener = [SCListener sharedListener]; 
    [listener listen]; 
    Float32 peakPower = [listener peakPower]; 
    NSString *theString = [NSString stringWithFormat:@"Level is: %1.2f", peakPower]; 
    [volumeLabel setText:theString]; 
} 

Cela fonctionne parfaitement bien, mais seulement une fois que le volume obtient. J'ai essayé de faire quelque chose comme:

[listener addObserver:self 
      forKeyPath:@"peakPower"    
       options:NSKeyValueObservingOptionOld 
       context:NULL]; 

Mais depuis peakpower est une méthode pas une variable que je ne peux pas mettre un observateur sur elle. Comment pourrais-je utiliser une classe comme SCListener pour configurer une application qui permet à l'utilisateur d'appuyer sur un bouton et d'avoir l'étiquette constamment mise à jour?

Merci, JP

Répondre

0

La raison KVO ne fonctionne pas n'a rien à voir avec le fait qu'il est « pas une variable. » KVO observe clés, pas de variables. Il est tout à fait possible d'observer une propriété sans variable sous-jacente. La raison pour laquelle cela ne fonctionnera pas dans ce cas est que SCListener n'émet pas de notifications KVO.

La solution la plus simple: Choisissez la résolution que vous voulez et demandez à un temporisateur d'interroger votre SCListener à ce débit.

0

Chuck dit

La solution la plus simple: Décider d'une résolution que vous voulez et un sondage de votre minuterie SCListener à ce taux

D'accord. Solutoin plus complexe: rend le SCListener conforme à la norme KVO après reading Apple's docs et rend les résultats à la communauté. Il rendra votre code plus propre, vous enseignera comment fonctionne KVO et résoudra les problèmes des autres avec SCListener.

Monitor iPhone mic iPhone Mic volume

Questions connexes