android吹一吹,腾讯微博吹一吹效果Android实现代码

该博客详细介绍了如何在Android平台上使用AudioRecord类进行声音录制,并通过计算声音强度来实现特定事件的触发。博客内容包括初始化AudioRecord,设置采样率,读取缓冲区数据,以及实时分析声音信号等步骤,旨在实现声音感应功能。
摘要由CSDN通过智能技术生成

packagecom.bshark.letmessage.server;importandroid.media.AudioFormat;importandroid.media.AudioRecord;importandroid.media.MediaRecorder;importandroid.os.Bundle;importandroid.os.Message;importcom.bshark.letmessage.ui.BlowActivity.MyHandler;importcom.bshark.letmessage.util.Parameter;public class RecordThread extendsThread {privateAudioRecord ar;private int bs = 100;private static int SAMPLE_RATE_IN_HZ = 8000;privateMessage msg;private int number = 1;private int tal = 1;privateMyHandler handler;private longcurrenttime;private longendtime;private long time = 1;//到达该值之后 触发事件

private static int BLOW_ACTIVI=2620;publicRecordThread(MyHandler myHandler) {super();

bs=AudioRecord.getMinBufferSize(SAMPLE_RATE_IN_HZ,

AudioFormat.CHANNEL_CONFIGURATION_MONO,

AudioFormat.ENCodinG_PCM_16BIT);

ar= newAudioRecord(MediaRecorder.AudioSource.MIC, SAMPLE_RATE_IN_HZ,

AudioFormat.CHANNEL_CONFIGURATION_MONO,

AudioFormat.ENCODING_PCM_16BIT, bs);

handler=myHandler;

}

@Overridepublic voidrun() {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 *buffer;

}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 给界面发送通知// number = 1;

tal= 1;

time= 1;

}

}

}

ar.stop();

ar.release();

bs=100;

}catch(Exception e) {

e.printStackTrace();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值