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中的线程模型
  3. android 的线程模型和AsyncTask
  4. Android中的多线程之handler
  5. 《第一行代码--Android》读书笔记之多线程与服务
  6. Android异步机制一:使用Thread+Handler实现非UI线程更新UI界面
  7. Android主线程消息循环
  8. android 多任务多线程断点下载
  9. [Android]Thread线程入门3--多线程

随机推荐

  1. Android(安卓)Looper中的MessageQueue消
  2. android 自动打包
  3. View requires API level 14 (current mi
  4. 【Android】Sensor框架HAL层解读
  5. WindowManagerService添加View流程
  6. android的socket开发注意事项
  7. android学习笔记二
  8. 老罗Android视频开发教程(百度地图实战开
  9. Android帮助文档(第二部分)开发工具
  10. Android(安卓)时间、日期处理 DateUtils