Android手機之間通過聲音傳輸資訊方法——聲波通訊(含工程程式碼)
大家可能都用過支付寶的聲波支付,即兩個終端同時開啟該功能,一個終端作為傳送端send,一個終端作為接收端get,send將本終端上發出的請求資訊按照約定規則的演算法進行聲音編碼,並播放出來,get端接收到send發來的聲音資料,按照約定規則進行解碼,即獲得了相應的資訊。
原理如上,其實很簡單,就是用單頻率聲音訊號對資料進行編碼,然後播放這些單頻率聲音,接收方在收到聲音後,識別出頻率,然後根據頻率解碼出資料。
最簡單的方法就是把0-9賦予特定的頻率,將需要傳輸的資料轉成十進位制的數,分別賦予特定的頻率,然後發出聲音。
get端則接收該聲音,進行解碼,得到相應的真實資料即可。
在實際應用中,需要對所傳輸的資料按照需求設計合理的資料格式,並統一到接收端,必要的時候需要加入加密演算法。
在應用中實現需要用到以下幾個部分
send:資料組合、編碼(加密)、發聲
get:接收聲音、解碼(解密)、資料拆分
有一個工程大家可以參考,我傳到了csnd下載中,直接可以執行聲波通訊原始碼
相關推薦
Android手機之間通過聲音傳輸資訊方法——聲波通訊(含工程程式碼)
大家可能都用過支付寶的聲波支付,即兩個終端同時開啟該功能,一個終端作為傳送端send,一個終端作為接收端get,send將本終端上發出的請求資訊按照約定規則的演算法進行聲音編碼,並播放出來,get端接收到send發來的聲音資料,按照約定規則進行解碼,即獲得了相應的資訊。 原
(Android Studio)Android 手機裝置與HC05 藍芽裝置的通訊(成功案例+原始碼)
程式碼我忘了在哪找的,只記得是把別人網上的程式碼稍微整理了一下,之後再加上自己的一些東西就成功了,對,反正就是成功了。很感謝我的一個哥們幫我組建了微控制器和藍芽裝置硬體方面的東西,伺服器那邊也是他寫的,灰常感謝...在上次的部落格中寫的手機裝置向藍芽裝置中傳送訊息,
連結串列反轉方法詳解(含實現程式碼)
怎麼反轉連結串列呢?這個是面試中經常出現的一道題。一般在資料結構或者演算法的面試題中,儘量不使用額外的空間去實現,儘管現在的計算機空間很充足,但是面試考察的還是對於整體效能的考慮。 方法其實有很多,我們可以依次遍歷連結串列,然後依次使用頭插入的方法來達到目的。 其中有個簡單的方法,就是把連結串列的每個指標
佇列實現棧,兩個佇列實現一個棧方法詳解(含實現程式碼)
本節介紹一下如何用兩個佇列實現棧。 棧的主要操作就是入棧和出棧,其特點就是後進先出。我們先將兩個佇列分別定義為 queue1 與 queue2。 方案 1 入棧和出棧,都在 queue1 中完成,而 queue2 作為中轉空間。 入棧:直接入 queue1 即可。 出棧:把 queue1 中除最後一
棧實現佇列,用兩個棧實現佇列方法詳解(含實現程式碼)
棧怎樣才能實現和佇列一樣從棧的底層抽出元素呢?一般會用兩個棧來實現佇列。 首先,我們將兩個棧分別定義為 stack1 與 stack2。 實現方案 1 我們讓入隊操作在 stack1 中執行,而出隊操作在 stack2 中執行。執行方式如下。 入隊:直接向 stack1 中入棧。 出隊:將 stac
12種降維方法終極指南(含Python程式碼)
你遇到過特徵超過1000個的資料集嗎?超過5萬個的呢?我遇到過。降維是一個非常具有挑戰性的任務,尤其是當你不知道該從哪裡開始的時候。擁有這麼多變數既是一個恩惠——資料量越大,分析結果越可信;也是一種詛咒——你真的會感到一片茫然,無從下手。 面對這麼多特徵,在微觀層面分析每個
兩臺android裝置間通過OTG-USB連線,實現通訊(android裝置間的通訊)
public class ChatActivity extends BaseChatActivity { private final AtomicBoolean keepThreadAlive = new AtomicBoolean(true); private final List<
國際化手機號碼輸入外掛yii2-phone-input使用參考(獲得國家程式碼)
https://github.com/Borales/yii2-phone-input $("#phone").on("countrychange", function(e, countryData) { // do something with countryData }); When
一維搜尋方法/黃金分割法(附matlab程式碼)
一維搜尋方法中的黃金分割法(附matlab程式碼) 一維搜尋方法:一維搜尋,又稱一維優化,是指求解一維目標函式 f(X) 最優解的過程,分為試探法和插值法。 黃金分割法:屬於一維搜尋方法中的試探法,適用於[a,b]區間上的任何單谷函式求極小值問題。 證明r=0.
百度語音識別REST API使用方法(含C++程式碼)——不需要整合SDK的方法
本文程式碼為C++版,可以用於C環境的應用開發中,下面介紹其中重要的程式碼。 下面程式碼是一個可以使用該方式進行語音識別功能的例項程式碼 #include <stdio.h> #include <stdlib.h> #include "curl
Android:Retrofit 與 RxJava聯合使用大合集(含例項教程)!
前言 在Andrroid開發中,網路請求十分常用,而在Android網路請求庫中,Retrofit是當下最熱的一個網路請求庫 Retrofit之所以作為現在最流行的網路請求庫,其中一個主要原因是:支援RxJava。Rxjava由於其基於事件流的鏈式
深度學習--解決梯度爆炸方法(含TensorFlow程式碼)
在深層的神經網路中,經常碰到梯度消失或者梯度爆炸問題。我先講一下原理,在求導的時候因為是鏈式法則,哪怕所有層的導數都很接近1,比如0.9,那麼在20層之後0.9的20次方也只剩0.1左右。這就意味著越深層的誤差難以影響到淺層的權重。若是導數再小一點這個梯度就直接消失了接近0。
Java通過銀行卡號獲取卡屬銀行(含校驗)
注:百度所得,更新了資料 public class GetBank { /** * @param args * @throws SQLException */ private final static int[] bankBin = {
Android 藍芽裝置與手機之間的資料傳輸
工作時間不是很長,如以下觀點中出現不對的地方歡迎指正 目前在Android領域藍芽有2.0和4.0,這篇文章只寫一下2.0的 以後我會繼續補充4.0的 2.0和4.0的區別還是很大的,首先說4.0的耗電量就是很低 當我們準備對接一個裝置的時候 首先是需要拿到該裝置的U
adb.【轉】Android手機可以通過adb執行按鍵操作
1、Android手機可以通過adb執行按鍵操作 - sealee01 - CSDN部落格.html(https://blog.csdn.net/u013678906/article/details/78540585) 2、 Android手機可以通過adb執行按鍵操作 如下,執行的是home鍵的操作
android開發中通過aidl實現遠端方法呼叫
在安卓開發過程中我們可能見過這樣的問題,就是在一個應用中呼叫另一個應用中的服務,並呼叫該服務中的方法。 我們可能對呼叫服務並不陌生,可是要執行服務中的方法,卻不能直接呼叫。因為兩個服務和呼叫它的程式屬
Android手機去掉底部虛擬按鍵欄方法
需要root手機,在手機檔案系統system資料夾中的build.prop檔案最後加一句程式碼qemu.hw.mainkeys=1(qemu:虛擬作業系統模擬器;hw:硬體;mainkeys:主要按鍵)
Android App之間通過Intent互動
Android 最重要的功能之一是應用能夠基於它要執行的“操作”向另一個應用傳送使用者。 例如,如果您的應用有您要在地圖上顯示的公司地址,您無需在顯示地圖的應用中構建 Activity。 而是可以建立使用 Intent 檢視地址的請求。Android 系統之後啟
jsp頁面之間通過servelt呼叫DAO方法,讓DAO回傳入的值,通過servlet調到轉入的頁面
2014.9.1開始接觸jsp <pre name="code" class="plain"> person.jsp <form action="aaa" method="pos
關於Android手機MTP模式連接的一些設置(win7和ubuntu下,以紅米1s為例)
sta start .net eno bcm htm web date ati 有些手機的MTP模式在電腦上識別不了,須要一些設置才幹夠,以下就網上收集來的一些設置方法集中貼過來: 一、 win7下 參考:http://blog.ammrli.com/?p=11