搜尋
首頁web前端H5教程基於HTML5的Web跨裝置超音波通訊方案詳解

        基於HTML5的Web跨裝置超音波通訊方案詳解:

前言:Chirp#在iPhone上掀起了有聲傳輸檔案的序幕,我們再也不需要彩色信件、藍牙配對、IM來傳送資料。它透過「嘰嘰喳喳」的小鳥叫聲來分享數據,簡單有趣,而且可以快速的實現一對多的分享。

        此外支付寶曾經試推過“聲波支付”,利用手機發送超音波至終端作為交易密碼進一步完成交易。然而支付寶的技術目前只是使用在了支付上,而需要可接受聲波支付的特定售貨機方可使用。

        Advanced Sound for Games and Interactive Apps - WebAudio API》的作者Boris Smus用HTML5的Web Audio API實作了一個基於Web的超音波互聯方案,透過這種方式不需要安裝任何用戶端,也不需要藍牙或NFC的支持,就能夠將兩台用瀏覽器上網的裝置連接在一起並傳遞圖片、音樂、影片等檔案。這個idea很酷,幫助我們在Web#的功能和應用程式層面邁進了一大步(這個想法也許你都想所未想,聞所未聞),下面我們就一起來看看具體的原理和實現過程。

……………………………………✄……………………………………華麗的分隔線

        你口袋裡的手機是一個酷炫的、美觀的、有許多功能的工具。但是當它想要和其它設備對話時,例如電視或筆記本,用戶體驗就大幅下降。 Bill Buxton關於這個主題有一個極富感染力的演講,描述了高科技演化的三個階段:

#        1、#裝置工作:功能的完整性與穩定度

##        2、 裝置流暢:良好的使用者體驗

        3、 許多裝置一起運作

#        我們已經隨著iPhone的發布,正式的進入了第2#個階段,但是連接設備是一件令人痛苦的事。有許多方法可以實現這一點:藍牙、藍牙LEWiFi直連、透過本地##WiFi 網路發現等等。這篇文章透過一個完全讓人意想不到的角度來解決這個問題:利用超音波來廣播和在相鄰設備間發送資料。最重要的是,這種方法採用Web Audio API#,使得純Web應用程式的連線成為可能。


示範影片

        裝置的通天塔

        #Airplay C  Chromecast

是解決相同生態系統(例如蘋果或Google)內裝置連線問題的偉大方法 #,但是普遍問題仍然難以解決。         因為有許多可能的技術途徑,所以可能剛好你要連接的裝置間沒有共同的方法。即便兩個設備都有藍牙,其中一個或許需要配置,但是另外一個卻不支持,或者是支持不同版本的標準。現在這對藍牙來說尤其普遍,許多裝置硬體上支援藍牙4.0

(又名BTLE),但是很多裝置卻因為各種原因不支持這個最新的協議。         Web上這種情況甚至更糟,因為低階裝置的連線API

因為安全沙盒方面的原因並沒有提供。而由於Web的發展非常緩慢,所以很難想像這種情況能夠在短時間內解決。

        以有趣的方式傳送資料        #        Electric Imp提供的

Blinkup

是一種跨端通訊的有趣方式。它使用了一系列閃光來在智慧型手機和Imp – 一種形似小型SD卡並帶有光線感測器的設備間傳輸資料。

        

撥接數據機做了類似的事情。它們在類比電話線上編碼和解碼數位資料。還記得那些惱人的連結噪音嗎?撥號數據機會打開揚聲器來讓使用者了解正在進行握手。如果你忘記了這些,可以在這裡複習#一下。即使在今天的類比電話裡,你在鍵盤上按下數字鍵時聽到的聲音也相當於電話系統用於模擬數字轉換的頻率。這個轉換使用了

雙音多頻訊號(DTMF)

        

你的手機和周圍的其它許多裝置都有揚聲器和麥克風。這兩種硬體可以用聲音來發送和接收數據,類似於調製解調器在電話線路上所做的事情。更棒的是,如果作業系統支援發送和接收的頻率夠高,我們可以創建一個無聲的資料通道。         用聲音傳送資料

###########        ###我應該注意到透過聲音編碼資料並不新穎。 ######音訊浮水印######的創意就是把簽名編碼到音樂中,聽眾通過人類的方式並無法識別,但是卻能夠被另外一台設備所理解。這是一種防止盜版的聰明方式。 ######

        #大多數普通的揚聲器能夠產生44.1KHz取樣率的聲音(這導致最高的頻率為# 22KHz - 根據香農取樣定理)。這讓我們將數據不僅編碼為聲音,還會產生成人無法聽到的音訊。不過兒童和動物仍然有可能會聽到:)

        技術上需要注意的是,麥克風有時候與揚聲器不相容,尤其是在手機上,因為它們經常會針對人們的通話進行最佳化,透過更低的取樣率來讓聲音效果更佳。在其他情況下,即便硬體相容,韌體也需要運行在低取樣率上來保證電量供應。如果是這樣的話,設備將無法接收聲波,同時基於聲音的連接將只能單向進行。

        SONICNET.JS#Web Audio的實作

        為了說明這些概念,我搭建了一個JavaScript庫#,用於透過聲音傳送和接收數據。我的做法沒有學習複雜的音訊浮水印技術,甚至比DTMF更為簡單。基本上,你可以指定使用一個範圍的頻率,以及可以傳送的字母集合。頻譜被分成對應於所指定開始和結束字母之間的範圍,每個字母/#程式碼對應整個頻率範圍內的一部分。

        傳送端將需要傳送的每個字元轉換為對應頻率範圍的中點數值,並且在一個時間間隔內傳送該頻率。接收端會對訊號進行不連續的傅立葉變換(宇捷註:我的本科專業就是資訊與通訊工程,學過數位訊號處理的朋友應該對此非常了解),並且尋找指定頻率範圍內的峰值。在找到一個訊號間隔內的峰值後,它會將頻率轉換回字元。這基本上是一個單音多頻訊號(STMF)的方案。

        有一個傳送時機的問題:在傳送端,應該多久傳送一個字元;在接收端,應該多久接收?我們用了一個簡單的方案來規避相鄰的重複字元。

        我設計了一個類似socket#API用於聲波通訊。用戶端程式碼看起來如下:

ssocket = new SonicSocket({alphabet: '0123456789'});
function onButton() {
 ssocket.send('31415');
}


##        服務端看起來像這樣:

sserver = new SonicServer({alphabet: '0123456789'});
sserver.on('message', function(message) {
  //Expect message to be '31415'.
 console.log(message);
});
sserver.start();


        JS 庫支援github

        #當然,使用它需要一個Web Audio的實作(大多數在傳送端使用#OscillatorNode ,在接收端用AnalyserNode)。我已經嘗試過MacbookChromeChrome,以及 Mac ChromeAndroid Chrome的傳輸案例。

        我寫了一對範例來說明這個想法。它們出現在本文開頭所示範的影片裡。第一個範例讓你可以從一台裝置上傳送表情到另外一台。它使用了一個很小的字符集,僅僅包括6個字符,每個對應1#種表情。你可以從6種表情中挑選一個,對應的字元將會透過聲波網路發送出去,在另一端被接收和展示出來。

        一種對sonicnet.js更現實的應用是這個聊天應用,產生不重複的5位元令牌並且用它來在2台裝置間建立連線。這在配對伺服器的幫助下完成,在這兩台設備間透過WebSocket#來建立代理連線。一旦連接建立後,對話本身將透過WebSocket發送。 服務端程式碼託管在nodejitsu#上。

        結論與期望

##        Web Audio API API        Web Audio API API #已經可以演變到讓這樣的應用成為可能,這是一個重大的進步。我迷上了sonicnet.js物聯網上的實作。這是純Web技術,可以用來配對裝置。無所不在的瀏覽器和音訊硬體結合將會是一個巨大的勝利,甚至在硬體層面,Web平台完全不需要等待藍牙或其它近場連接技術的成熟。

###

        如果這篇文章已經激起了你的興趣,你可以嘗試使用sonicnet.js來寫一個應用程式。就像我前文提到的一樣,接收高頻音訊因為硬體/韌體限制並不是在所有的設備上都可用,所以我很想知道哪些可用,而哪些不可以。我的期望是,大多數手機應該只能發送,而大多數筆記本可以同時接收和發送。如果你在你的裝置上嘗試了表情示範,請填寫這份表格。在寫這篇文章的時候,Android平台上Chrome Beta版本不支援即時輸入,所以從手機傳輸資料到筆記本是唯一的選擇。


#

以上是基於HTML5的Web跨裝置超音波通訊方案詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
H5指的是什麼?探索上下文H5指的是什麼?探索上下文Apr 12, 2025 am 12:03 AM

H5referstoHTML5,apivotaltechnologyinwebdevelopment.1)HTML5introducesnewelementsandAPIsforrich,dynamicwebapplications.2)Itsupportsmultimediawithoutplugins,enhancinguserexperienceacrossdevices.3)SemanticelementsimprovecontentstructureandSEO.4)H5'srespo

H5:工具,框架和最佳實踐H5:工具,框架和最佳實踐Apr 11, 2025 am 12:11 AM

H5開發需要掌握的工具和框架包括Vue.js、React和Webpack。 1.Vue.js適用於構建用戶界面,支持組件化開發。 2.React通過虛擬DOM優化頁面渲染,適合複雜應用。 3.Webpack用於模塊打包,優化資源加載。

HTML5的遺產:當前了解H5HTML5的遺產:當前了解H5Apr 10, 2025 am 09:28 AM

HTML5hassignificantlytransformedwebdevelopmentbyintroducingsemanticelements,enhancingmultimediasupport,andimprovingperformance.1)ItmadewebsitesmoreaccessibleandSEO-friendlywithsemanticelementslike,,and.2)HTML5introducednativeandtags,eliminatingthenee

H5代碼:可訪問性和語義HTMLH5代碼:可訪問性和語義HTMLApr 09, 2025 am 12:05 AM

H5通過語義化元素和ARIA屬性提升網頁的可訪問性和SEO效果。 1.使用、、等元素組織內容結構,提高SEO。 2.ARIA屬性如aria-label增強可訪問性,輔助技術用戶可順利使用網頁。

H5與HTML5相同嗎?H5與HTML5相同嗎?Apr 08, 2025 am 12:16 AM

"h5"和"HTML5"在大多數情況下是相同的,但它們在某些特定場景下可能有不同的含義。 1."HTML5"是W3C定義的標準,包含新標籤和API。 2."h5"通常是HTML5的簡稱,但在移動開發中可能指基於HTML5的框架。理解這些區別有助於在項目中準確使用這些術語。

H5的功能是什麼?H5的功能是什麼?Apr 07, 2025 am 12:10 AM

H5,即HTML5,是HTML的第五個版本,它為開發者提供了更強大的工具集,使得創建複雜的網頁應用變得更加簡單。 H5的核心功能包括:1)元素允許在網頁上繪製圖形和動畫;2)語義化標籤如、等,使網頁結構清晰,利於SEO優化;3)新API如GeolocationAPI,支持基於位置的服務;4)跨瀏覽器兼容性需要通過兼容性測試和Polyfill庫來確保。

h5鏈接怎麼做h5鏈接怎麼做Apr 06, 2025 pm 12:39 PM

如何創建 H5 鏈接?確定鏈接目標:獲取 H5 頁面或應用程序的 URL。創建 HTML 錨點:使用 <a> 標記創建錨點並指定鏈接目標URL。設置鏈接屬性(可選):根據需要設置 target、title 和 onclick 屬性。添加到網頁:將 HTML 錨點代碼添加到希望鏈接出現的網頁中。

h5兼容問題怎麼解決h5兼容問題怎麼解決Apr 06, 2025 pm 12:36 PM

解決 H5 兼容問題的方法包括:使用響應式設計,允許網頁根據屏幕尺寸調整佈局。採用跨瀏覽器測試工具,在發布前測試兼容性。使用 Polyfill,為舊瀏覽器提供對新 API 的支持。遵循 Web 標準,使用有效的代碼和最佳實踐。使用 CSS 預處理器,簡化 CSS 代碼並提高可讀性。優化圖像,減小網頁大小並加快加載速度。啟用 HTTPS,確保網站的安全性。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版