【问题标题】:How to get the amplitude when blowing into MIC on android device如何在android设备上吹入MIC时获得幅度
【发布时间】:2011-06-26 01:13:41
【问题描述】:

android设备对MIC吹气时如何获取振幅。

MediaRecorder recorder = new MediaRecorder();
   recorder.setAudioSource(MediaRecorder.AudioSource.MIC);

   Timer timer = new Timer();
   timer.scheduleAtFixedRate(new RecorderTask(recorder), 0, 1000);

private class RecorderTask extends TimerTask {
private MediaRecorder recorder;

public RecorderTask(MediaRecorder recorder) {
    this.recorder = recorder;
}

public void run() {
    Log.v("", "amplitude is" + recorder.getMaxAmplitude());
}
}

我收到一个错误:

ERROR/AndroidRuntime(20927): Caused by: java.lang.RuntimeException: setAudioSource failed.
ERROR/AndroidRuntime(20927): at android.media.MediaRecorder.setAudioSource(Native Method)

【问题讨论】:

    标签: android


    【解决方案1】:

    你必须初始化记录器,以及设置几个方法。查看MediaRecorder 的文档以了解如何执行此操作。这个方法我用过,效果很好。

    【讨论】:

      【解决方案2】:
      public boolean isBlowing()
          {
              boolean recorder=true;
      
              int minSize = AudioRecord.getMinBufferSize(8000,AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT);
              AudioRecord ar = new AudioRecord(MediaRecorder.AudioSource.MIC, 8000,AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT,minSize);
      
      
              short[] buffer = new short[minSize];
      
              ar.startRecording();
              while(recorder)
              {
      
                  ar.read(buffer, 0, minSize);
                  for (short s : buffer) 
                  {
                      if (Math.abs(s) > 27000)   //DETECT VOLUME (IF I BLOW IN THE MIC)
                      {
                          blow_value=Math.abs(s);
                          System.out.println("Blow Value="+blow_value);
                          ar.stop();
                          recorder=false;
      
                          return true;
      
                      }
      
                  }
              }
              return false;
      
          }
      

      【讨论】:

      • 它检测到的所有声音的值都大于27000。我们如何检测它的打击声。
      【解决方案3】:

      您需要对清单文件设置权限

       <uses-permission android:name="android.permission.RECORD_AUDIO" />
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-14
        • 2016-03-05
        • 1970-01-01
        • 1970-01-01
        • 2016-12-08
        相关资源
        最近更新 更多