Ich möchte die Lautstärke der Stimme in Android überprüfen

Ich entwickle eine Anwendung, wo ich die Lautstärke der Stimme erkennen muss. Bedeutet einige auf Schreien auf dem Handy und es wird die Lautstärke auf dem Bildschirm zeigen.

Lassen Sie mich wissen, jede geeignete API für diese. Welche API kann ich in Android verwenden.

  • Vermeidung von Orientierungsänderungen in der Xamarin Android Applikation
  • Wie zu verstecken Spinner Dropdown Android
  • Phonegap Media API (Android) - Medien sind nicht definiert
  • Decodierung H264 Streaming mit Android Low-Level-API
  • Android Google Analytics Integrationsfehler
  • Wie macht man Grenze für Kreis abgeschnittenes Bild in Gleiten
  • Danke im Voraus.

    Pravin

  • Google App Engine Cloud Endpunkte userId ist null
  • Wie kann ich Objekt zu JSON serialisieren?
  • Android-Volley, wie der Unit-Test in Listener passiert ist
  • Wie konvertiert man Byte-Array in Bitmap
  • Kann nicht beenden () Methode von Toast lösen
  • Asynchrone Programmierung Best Practices
  • One Solution collect form web for “Ich möchte die Lautstärke der Stimme in Android überprüfen”

    Schau auf http://developer.android.com/reference/android/media/AudioRecord.html

    Wenn Sie den Puffer lesen, werden die Bytewerte die Amplitude darstellen. Je höher der Byte-Wert, desto lauter der Klang.

    Hier ist eine verkleinerte Version von etwas, was ich in einer App verwendete ich schrieb eine Weile zurück:

    Fügen Sie dies zu Ihrem mainifest.xml hinzu
    <uses-permission android:name="android.permission.RECORD_AUDIO" />

    Soundlevel.xml

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ToggleButton android:id="@+id/togglebutton_record" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="ToggleButton" /> <ProgressBar android:id="@+id/progressbar_level" style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> 

    SoundLevel.java

     import android.app.Activity; import android.media.AudioFormat; import android.media.AudioRecord; import android.media.MediaRecorder; import android.os.Bundle; import android.os.Handler; import android.os.SystemClock; import android.widget.CompoundButton; import android.widget.ProgressBar; import android.widget.ToggleButton; public class SoundLevel extends Activity { private static final int sampleRate = 11025; private static final int bufferSizeFactor = 10; private AudioRecord audio; private int bufferSize; private ProgressBar level; private Handler handler = new Handler(); private int lastLevel = 0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.soundlevel); level = (ProgressBar) findViewById(R.id.progressbar_level); level.setMax(32676); ToggleButton record = (ToggleButton) findViewById(R.id.togglebutton_record); record.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // TODO Auto-generated method stub if (isChecked) { bufferSize = AudioRecord.getMinBufferSize(sampleRate, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT) * bufferSizeFactor; audio = new AudioRecord(MediaRecorder.AudioSource.MIC, sampleRate, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize); audio.startRecording(); Thread thread = new Thread(new Runnable() { public void run() { readAudioBuffer(); } }); thread.setPriority(Thread.currentThread().getThreadGroup().getMaxPriority()); thread.start(); handler.removeCallbacks(update); handler.postDelayed(update, 25); } else if (audio != null) { audio.stop(); audio.release(); audio = null; handler.removeCallbacks(update); } } }); } private void readAudioBuffer() { try { short[] buffer = new short[bufferSize]; int bufferReadResult; do { bufferReadResult = audio.read(buffer, 0, bufferSize); for (int i = 0; i < bufferReadResult; i++){ if (buffer[i] > lastLevel) { lastLevel = buffer[i]; } } } while (bufferReadResult > 0 && audio.getRecordingState() == AudioRecord.RECORDSTATE_RECORDING); if (audio != null) { audio.release(); audio = null; handler.removeCallbacks(update); } } catch (Exception e) { e.printStackTrace(); } } private Runnable update = new Runnable() { public void run() { SoundLevel.this.level.setProgress(lastLevel); lastLevel *= .5; handler.postAtTime(this, SystemClock.uptimeMillis() + 500); } }; } 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.