吹雪花demo,学习android传感器

吹雪花demo,学习android传感器,嘴巴对着手机底部吹一下就会出现飘着雪花效果。
算是学习android传感器效果。本例子主要是通过android.media.AudioRecord来录音实现效果
主要实现类如下:
public class RecordThread extends Thread {
private AudioRecord audioRecord;
private int bufferSize = 100;
// 设置音频采样率,44100是目前的标准,但是某些设备仍然支持22050,16000,11025
private static int SAMPLE_RATE_IN_HZ = 44100;
private Handler handler;
private int what;

private boolean stop = false;

// 到达该值之后 触发事件
private static int BLOW_BOUNDARY = 40;

public RecordThread(Handler handler, int what) {
super();
bufferSize = AudioRecord.getMinBufferSize(SAMPLE_RATE_IN_HZ,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT);
// 设置音频的录制的声道CHANNEL_IN_STEREO为双声道,CHANNEL_CONFIGURATION_MONO为单声道
// 音频数据格式:PCM 16位每个样本。保证设备支持。PCM 8位每个样本。不一定能得到设备支持。
audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC,
SAMPLE_RATE_IN_HZ, AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT, bufferSize);
this.handler = handler;
this.what = what;
}

public void stopRecord()
{
stop = true;
}
public boolean getRecordStatus()
{
return stop;
}

@Override
public void run() {
System.out.println("RUN");
stop = false;
try {
audioRecord.startRecording();
// 用于读取的 buffer
byte[] buffer = new byte[bufferSize];

int total = 0;
int number = 0;
while (!stop) {
number++;
sleep(8);
long currenttime = System.currentTimeMillis();
int r = audioRecord.read(buffer, 0, bufferSize) + 1;// 读取到的数据
int v = 0;
for (int i = 0; i < buffer.length; i++) {
v += Math.abs(buffer[i]);//取绝对值,因为可能为负
}
int value = Integer.valueOf(v / r);//算得当前所有值的平均值
System.out.println("value:" + value);
total = total + value;
long endtime = System.currentTimeMillis();
long time = endtime - currenttime;
//如果时间大于100毫秒并且次数多于5次
if (time >= 100 || number > 5) {
int tmp = total / number;
total = 0;
number = 0;
//声音的大小达到一定的值
if (tmp > BLOW_BOUNDARY) {
// 发送消息通知到界面 触发动画
// 利用传入的handler 给界面发送通知
handler.sendEmptyMessage(what);
number = 1;
time = 1;
}
}

}
audioRecord.stop();
audioRecord.release();
bufferSize = 100;

} catch (Exception e) {
e.printStackTrace();
}
}
}

运行效果:

相关代码

  • 吹雪花demo,学习android传感器

  • 高仿淘宝和聚美优品商城详情页实现

  • ViewPage滑动加载大图和点击关注效果

  • AVLoadingIndicatorView各种加载效果

  • MeiTuanRefreshListView高仿美团下拉刷新

  • 完整阅读软件客户端app

  • LearnHut_android 学习客户端源码

  • AutoHomeRefreshListView仿汽车之家下拉刷新

  • PercentageBar自定义动态柱形图

  • Hide-Music-Player 一个完整的音乐播放器


更多相关文章

  1. android知识小点:文字阴影效果
  2. Android实现透明的颜色效果(zz)
  3. Android隐藏状态栏和标题栏,相当于全屏效果
  4. Android中的Button自定义点击效果实例代码
  5. Android实现透明的颜色效果
  6. Android下图片或按钮等可拖动到任意位置的效果实现源码
  7. android界面无标题栏和全屏效果的实现方式
  8. RadioGroup+RadioButton嵌套实现多行单选效果
  9. android仿今日头条App、多种漂亮加载效果、选择器汇总、记事本Ap

随机推荐

  1. Android判断网络是否断开(WIFI 状态)--Conn
  2. Android中让Service被关闭后再重新启动
  3. Android 中Fragment使用
  4. android 检查GPS是否开启,GPS设置界面
  5. 设置android默认属性
  6. enable LOGD in android native code
  7. android使用正则表达式
  8. Android development Notes-3(Activity,
  9. android MTK 禁止第一次开机向导
  10. android 解决RecyclerView notifyDataSet