您好,登錄后才能下訂單哦!
吹雪花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 一個完整的音樂播放器
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。