您好,登錄后才能下訂單哦!
吹雪花demo,學(xué)習(xí)android傳感器,嘴巴對(duì)著手機(jī)底部吹一下就會(huì)出現(xiàn)飄著雪花效果。
算是學(xué)習(xí)android傳感器效果。本例子主要是通過android.media.AudioRecord來錄音實(shí)現(xiàn)效果
主要實(shí)現(xiàn)類如下:
public class RecordThread extends Thread {
private AudioRecord audioRecord;
private int bufferSize = 100;
// 設(shè)置音頻采樣率,44100是目前的標(biāo)準(zhǔn),但是某些設(shè)備仍然支持22050,16000,11025
private static int SAMPLE_RATE_IN_HZ = 44100;
private Handler handler;
private int what;
private boolean stop = false;
// 到達(dá)該值之后 觸發(fā)事件
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);
// 設(shè)置音頻的錄制的聲道CHANNEL_IN_STEREO為雙聲道,CHANNEL_CONFIGURATION_MONO為單聲道
// 音頻數(shù)據(jù)格式:PCM 16位每個(gè)樣本。保證設(shè)備支持。PCM 8位每個(gè)樣本。不一定能得到設(shè)備支持。
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;// 讀取到的數(shù)據(jù)
int v = 0;
for (int i = 0; i < buffer.length; i++) {
v += Math.abs(buffer[i]);//取絕對(duì)值,因?yàn)榭赡転樨?fù)
}
int value = Integer.valueOf(v / r);//算得當(dāng)前所有值的平均值
System.out.println("value:" + value);
total = total + value;
long endtime = System.currentTimeMillis();
long time = endtime - currenttime;
//如果時(shí)間大于100毫秒并且次數(shù)多于5次
if (time >= 100 || number > 5) {
int tmp = total / number;
total = 0;
number = 0;
//聲音的大小達(dá)到一定的值
if (tmp > BLOW_BOUNDARY) {
// 發(fā)送消息通知到界面 觸發(fā)動(dòng)畫
// 利用傳入的handler 給界面發(fā)送通知
handler.sendEmptyMessage(what);
number = 1;
time = 1;
}
}
}
audioRecord.stop();
audioRecord.release();
bufferSize = 100;
} catch (Exception e) {
e.printStackTrace();
}
}
}
吹雪花demo,學(xué)習(xí)android傳感器
高仿淘寶和聚美優(yōu)品商城詳情頁實(shí)現(xiàn)
ViewPage滑動(dòng)加載大圖和點(diǎn)擊關(guān)注效果
AVLoadingIndicatorView各種加載效果
MeiTuanRefreshListView高仿美團(tuán)下拉刷新
完整閱讀軟件客戶端app
LearnHut_android 學(xué)習(xí)客戶端源碼
AutoHomeRefreshListView仿汽車之家下拉刷新
PercentageBar自定義動(dòng)態(tài)柱形圖
Hide-Music-Player 一個(gè)完整的音樂播放器
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。