android吹一吹功能的实现,主要是通过监听麦克风频率变化来实现的,源码下载地址:  主要是通过一个线程去监听麦克风的变化来确定吹一吹的功能

接下来看下主要代码:RecordThread.java

package com.li;import android.media.AudioFormat;import android.media.AudioRecord;import android.media.MediaRecorder;import android.os.Message; //import com.bshark.letmessage.ui.BlowActivity.MyHandler;//import com.bshark.letmessage.util.Parameter;import com.li.BlowActivity.MyHandler; public class RecordThread extends Thread {        private AudioRecord ar;        private int bs = 100;        private static int SAMPLE_RATE_IN_HZ = 8000;        private Message msg;        private int number = 1;        private int tal = 1;        private MyHandler handler;        private long currenttime;        private long endtime;        private long time = 1;                //到达该值之后 触发事件        private static int BLOW_ACTIVI=3000;         public RecordThread(MyHandler myHandler) {                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);                handler = myHandler;        }         @Override        public void run() {                try {                        ar.startRecording();                        Parameter.isblow = true;                        // 用于读取的 buffer                        byte[] buffer = new byte[bs];                        while (Parameter.isblow) {                                number++;                                sleep(8);                                currenttime = System.currentTimeMillis();                                int r = ar.read(buffer, 0, bs) + 1;                                int v = 0;                                for (int i = 0; i < buffer.length; i++) {                                        v += (buffer[i] * buffer[i]);                                }                                int value = Integer.valueOf(v / (int) r);                                tal = tal + value;                                endtime = System.currentTimeMillis();                                time = time + (endtime - currenttime);                                                 if (time >= 500 || number > 5) {                                         int total = tal / number;                                        if (total > BLOW_ACTIVI) {                                                //发送消息通知到界面 触发动画                                                                                                 //利用传入的handler 给界面发送通知                                        BlowActivity.i+=1;                                        handler.sendEmptyMessage(0); //改变i的值后,发送一个空message到主线程                                                 //                                                number = 1;                                                tal = 1;                                                time = 1;                                        }                                }                         }                        ar.stop();                        ar.release();                        bs=100;                                                         } catch (Exception e) {                        e.printStackTrace();                }        }}

源码下载地址:

更多相关文章

  1. android打开系统设置或信息界面
  2. Android 解决界面底部弹出dialog被虚拟按键遮挡一部分的问题
  3. Android Eclipse 源码工程调试
  4. Android 录音获取麦克风实时音量
  5. android启动activity文本框不打开输入法界面
  6. CyanogenMod源码下载和编译(Android ROM定制基础篇)
  7. smack 源码分析- PacketReader (android上实现长连接)
  8. 基于源码分析 Android View 绘制机制
  9. Camera源码分析(android2.2)

随机推荐

  1. Android消息传递机制
  2. Android编译环境编译Native C的模块
  3. Android 布局 之 TableLayout,RelativeLay
  4. AsyncTask类的用法
  5. Android Styles & Themes
  6. 第一篇:Android Studio 打包及引用 AAR(可
  7. TableLayout(表格布局)
  8. Android Layout布局文件里的android:layo
  9. Android输出Log相关应用技巧剖析
  10. Android学习笔记(一)概述