中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

《IT藍豹》吹雪花demo,學習android傳感器

發布時間:2020-07-16 00:40:03 來源:網絡 閱讀:259 作者:楊光成 欄目:移動開發

吹雪花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();
        }
    }
}

運行效果:

  • 《IT藍豹》吹雪花demo,學習android傳感器

相關代碼

  • 吹雪花demo,學習android傳感器

  • 高仿淘寶和聚美優品商城詳情頁實現

  • ViewPage滑動加載大圖和點擊關注效果

  • AVLoadingIndicatorView各種加載效果

  • MeiTuanRefreshListView高仿美團下拉刷新

  • 完整閱讀軟件客戶端app

  • LearnHut_android 學習客戶端源碼

  • AutoHomeRefreshListView仿汽車之家下拉刷新

  • PercentageBar自定義動態柱形圖

  • Hide-Music-Player 一個完整的音樂播放器


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

镇巴县| 兰西县| 资中县| 灯塔市| 晋江市| 临海市| 建宁县| 玉田县| 黄陵县| 嘉兴市| 白河县| 太仓市| 遵义县| 五原县| 罗山县| 神木县| 溧水县| 电白县| 高州市| 临洮县| 教育| 南宫市| 宝丰县| 姚安县| 桂平市| 蓝田县| 日土县| 甘泉县| 阳江市| 涪陵区| 万载县| 青浦区| 维西| 镇康县| 荥阳市| 长春市| 科技| 延津县| 永年县| 荣昌县| 兴隆县|