2009-03-11 16 views
0

İki düğmeli basit bir iphone uygulaması yapmaya çalışıyorum: Başlat ve Durdur. Başladığınızda, telefonun mikrofon sesini dinlemeye başlar ve etiketin mikrofonda ne kadar sesli konuştuğunu gösterir. Durduğunuzda, dinlemeyi durdurur.İzleme işlevleri değeri

SCListener adlı harika bir sınıf buldum, ancak nasıl uygulanacağından emin değilim. Şu anda ben aşağıdaki kodla Bu gayet iyi çalışıyor

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

bağladım bir düğme var, ama sadece bir kez hacmini alır. Ben böyle bir şey yapmaya çalıştık:

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

Ama peakPower bir yöntem değildir değişken olduğundan Bunun üzerine bir gözlemci koyamazsınız. Kullanıcının bir düğmeye basmasına ve sürekli güncellemesine sahip olmasına izin veren bir uygulamayı kurmak için SCListener gibi bir sınıfı kullanmaya nasıl giderim?

sayesinde JP

cevap

0

KVO çalışmıyor nedeni olduğu gerçeği ile ilgisi yoktur "değişken değildir." KVO, değişken değil, anahtarını gösterir. Altta yatan değişkeni olmayan bir özelliği gözlemlemek tamamen mümkündür. Bu durumda işe yaramayacak olmasının nedeni SCListener'ın KVO bildirimleri göndermemesidir.

En basit çözüm: İstediğiniz bir çözünürlüğe karar verin ve SCListener'ınızı bu hızda bir zamanlayıcıyla anket yapın.

0

Chuck

basit çözüm şunları söyledi: İstediğiniz çözünürlükte karar verin ve Kabul bu oran

bir zamanlayıcı poll senin SCListener var. Daha karmaşık çözüm: reading Apple's docs'dan sonra SCListener KVO'yu uyumlu hale getirin ve sonuçları topluluğa katkıda bulunun. Kodunuzu daha temiz hale getirecek, KVO'nun SCListener ile diğer insanların sorunlarını nasıl çözdüğünü ve çözeceğini öğretecektir.

Monitor iPhone mic iPhone Mic volume