2017-06-15 8 views
2

thisのようなコードを実装しました。ログにノイズ警告が出ますが、外部にどのようなノイズが発生しているかにかかわらず、常に32639または-32640と表示されます。Androidのマイクは、新しいデバイスで常に32639または-32640を返します

  • サムスンギャラクシーS3(API 19)
  • HTCワンM9(API 23)
  • サムスン:私は3台の電話機(根ざしているのなし)上でそれをテストしてみた

    short[] buffer = new short[minSize]; 
    boolean thresholdMet = false; 
    int threshold = sliderThreshold.getProgress(); 
    
    ar.read(buffer, 0, minSize); 
    
    //Iterate through each chunk of amplitude data 
    //Check if amplitude is greater than threshold 
    for (short s : buffer) { 
        if (Math.abs(s) > threshold) { 
         thresholdMet = true; 
         Log.w("NoiseThreshold", String.valueOf(s)); 
         break; 
        } 
    } 
    

    Galaxy S7(API 24)

S3では動作しますが、他のプロセッサでは動作しません。 HTCでSensor Senseを使用しようとしましたが、マイクセンサーでは機能しません。しかし、それは以前から使用されていましたが、グラフビューで5秒ごとに1つのサンプルを検出するようです。

奇妙なことに、奇妙なことに、誤動作している電話機での通話やビデオ録音でも、マイクロホンは正常に動作します。

+0

あなたがチェックしましたか? – rupps

+0

@ruppsはい、すべてのデバイスに許可が与えられています – FracturedRetina

+0

haha​​ ok ..まあまあの推測です。 – rupps

答えて

2

あなたはS3で動作すると言いました。これはAPI 19で、API> = 23のものでは動作しません。したがって、API 23で導入された実行時アクセス許可に問題がある可能性があります。

新しい動作(静的権限モデルを使用する「古いアプリケーション」)は、実行時アクセス許可が与えられていない場合はダミーデータを返します。

は、この答えをチェックアウト:マイクの許可が設定]> [アプリの権限に付与されている場合 Request permission for microphone on Android M

関連する問題