1. 開啟裝置
snd_pcm_t *handle; /* Open PCM device for playback. */ rc = snd_pcm_open(&handle, "default", SND_PCM_STREAM_PLAYBACK, 0); if (rc < 0) { } 預設是block阻塞方式讀寫,可以設定成non-block模式。 SND_PCM_NONBLOCK 或 snd_pcm_nonblock()
2. 非阻塞方式寫入(一般來說按阻塞方式來寫代碼就好了,ALSA裡面已經寫好了,就不要自己做重試操作了)
就是過一段時再嘗試的意思
int rc = snd_pcm_writei(handle, buf, n /4 ); printf("done. rc=%d\n", rc); while(rc < 0) { if(rc == -EAGAIN ) { int ms = 20; timespec ts; ts.tv_sec = ms / 1000; ts.tv_nsec = (ms % 1000) * 1000000; nanosleep(&ts, NULL); rc = snd_pcm_writei(handle, buf, n /4 ); } }
第三個參數是frame的個數。對於一個S16 / Stereo的音頻, 其frame = 2 * 2 = 4,即微軟定義的BlockAlign參數。
如果使用預設的BLOCK模式, 則此writei函數會阻塞直到寫入成功。當寫入成功時, 傳回值rc總是等於傳入的frame數。
當為NON-BLOCK模式時,如果內部緩衝區滿,則返回-EAGAIN (-11)。注意EAGAIN=11,需要加一個負號。
這個函數要麼完全寫入,要麼返回-EAGAIN,不會發生唯寫入一部分的情況。
"極星親友定位": 簡單實用,是一款適用於家人、朋友間的定位軟體,即時查詢對方的位置並以地圖方式展示。非常適合用於家人間使用,少一份擔心,多一份安全保證,能及時知道家人的去向,能避免找不到孩子、老人等情形。
(其即時性、自動特性,可以在很大程度上保證家人遇到危險時不掉鏈子)
不需要對方會使用智能手機,因為軟體可以設定白名單自動回複,不需要對方作任何操作就能擷取對方的位置。
不需要對方開啟軟體回複,也不需要事先啟動軟體。
下載位置:360市場(可以用360手機小幫手下載, 關鍵詞“極星”,“極星親友定位”)
- 雙方只要安裝了本軟體,並開啟了GPS功能(一般手機都已經開啟了),即輸入對方手機號、查詢位置。
- 可以從通訊錄中選擇連絡人,或從“最近連絡人”菜單中直接選擇。
- 白名單用於指定受信任的連絡人,對他們的查詢請求會自動回複。
- 整合地圖展示功能,如果手機已經安裝了百度地圖軟體,則可以在地圖上展示對方的位置。
- 可以防止誤操作:發送按鈕採用延時反應設計,只有在按下約1秒後才算是確認發送,並以震動和文字提示您發送成功。
----------------------------------------------------------------------------------------------------------------------------------