package shake.mft;import android.media.AudioFormat;import android.media.AudioRecord;import android.media.MediaRecorder;import android.util.Log; public class RecordThread extends Thread {private static final String TAG = "PhoneStatReceiver";    private AudioRecord ar;    private int bs;    private static int SAMPLE_RATE_IN_HZ = 8000;    private boolean isRun = false;     public RecordThread() {        super();        bs = AudioRecord.getMinBufferSize(SAMPLE_RATE_IN_HZ,                AudioFormat.CHANNEL_CONFIGURATION_MONO,                AudioFormat.ENCODING_PCM_16BIT);        ar = new AudioRecord(MediaRecorder.AudioSource.MIC, SAMPLE_RATE_IN_HZ,                AudioFormat.CHANNEL_CONFIGURATION_MONO,                AudioFormat.ENCODING_PCM_16BIT, bs);    }     public void run() {        super.run();        ar.startRecording();                // 用于读取的 buffer        byte[] buffer = new byte[bs];        isRun = true;        while (isRun) {            int r = ar.read(buffer, 0, bs);            int v = 0;                        // 将 buffer 内容取出,进行平方和运算            for (int i = 0; i < buffer.length; i++) {                // 这里没有做运算的优化,为了更加清晰的展示代码                v += buffer[i] * buffer[i];            }            // 平方和除以数据总长度,得到音量大小。可以获取白噪声值,然后对实际采样进行标准化。            // 如果想利用这个数值进行操作,建议用 sendMessage 将其抛出,在 Handler 里进行处理。            Log.d("spl", String.valueOf(v / (float) r));        }        ar.stop();    }     public void pause() {                // 在调用本线程的 Activity 的 onPause 里调用,以便 Activity 暂停时释放麦克风        isRun = false;        android.os.Process.killProcess(android.os.Process.myPid());        Log.d(TAG, "recordThread.pause");    }     public void start() {                // 在调用本线程的 Activity 的 onResume 里调用,以便 Activity 恢复后继续获取麦克风输入音量        if (!isRun) {            super.start();        }    }}

然后是操作他

RecordThread rtd = new RecordThread();

rtd.start()

//

rtd.pause();

更多相关文章

  1. 调用android自带的截图工具进行截图
  2. Android(安卓)调用其他应用-QQ音乐
  3. Android中对图像进行Base64编码
  4. 调用Android(安卓)installer 安装和卸载程序
  5. Android(安卓)3D 旋转的三角形(三)
  6. android:软件的安装和卸载源代码
  7. Android调用MediaScanner进行扫描
  8. android binder c++层-客户端(c++) 调用 服务端(c++) 例子
  9. Android中ListView最简单的用法

随机推荐

  1. Android各种访问权限Permission详解
  2. Android中在GridView网格视图上实现item
  3. ArcGIS API for Android(安卓)案例教程 2
  4. android zygote之启动过程分析
  5. android 三种定位方式
  6. android ftp 客户端编写(ftp4j)
  7. Appium - Android(安卓)对照 iOS
  8. android:layout_weight属性详解
  9. Android系统的架构
  10. Android中adb push和adb install的使用区