2009-03-11 8 views
0

私は2つのボタンを持つ簡単なiPhoneアプリを作ろうとしています:開始と停止。スタートを押すと、電話のマイク音量を聞き取り、マイクに向かってどのくらい大きな音を出しているかをラベルに表示します。停止したら、聞き終わりです。関数の値を表示

私はSCListenerという素晴らしいクラスを見つけましたが、実装する方法はわかりません。今、私は次のコード

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

にフックアップボタンを持っているこれは完璧に動作しますが、一度だけのボリュームを取得します。私のような何かをしようとしました:

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

をしかしpeakPowerがメソッド変数ではないので、私はそれにオブザーバーを置くことはできません。 SCListenerのようなクラスを使用して、ユーザーがボタンを押して、のラベルを常にに更新できるようにするには、どうすればよいですか?

おかげで、 JP

答えて

0

KVOが動作しない理由、それはだという事実とは何の関係もありません「変数ではないの。」 KVOはキーを見るが、変数ではない。基になる変数のないプロパティを完全に見ることは可能です。このケースではうまくいかないのは、SCListenerがKVO通知を発行しないためです。

最も簡単な解決策:必要な解像度を決めて、そのレートでタイマーにSCListenerをポーリングさせる。

0

チャックが

最も簡単な解決策を言った:そのレートであなたが望む解像度を決定し、タイマーポーリングあなたSCListenerを持って

は、合意されました。 より複雑なsolutoin:reading Apple's docsの後にSCListener KVOを準拠させ、その結果をコミュニティに戻します。コードクリーナーを作成し、KVOの仕組みを教え、SCListenerで他の人の問題を解決します。

Monitor iPhone mic iPhone Mic volume

関連する問題