Dcloud HTML5 监听蓝牙设备 调用 原生安卓实现 - aspirant - 博客园
最近一直搞Dcloud ,這是HTML5版本的開發(fā),打包時候,可以打包成 apk 和ipa 分別運(yùn)行在安卓和ios 機(jī)器上面,
但是這里面的資料很少,遇到問題,之后只能自己鉆研總結(jié),
現(xiàn)在有這么一個需求,需要實(shí)現(xiàn)藍(lán)牙開啟后,監(jiān)聽藍(lán)牙接口傳遞的數(shù)據(jù),然后呈現(xiàn)給用戶。我試了很多方法,之前是在 HTML5上直接寫方法,監(jiān)聽藍(lán)牙狀態(tài),但是jS是單線程,直接把進(jìn)程阻塞了其他的啥也干不了,而且時間長了監(jiān)聽,總會莫名中斷,
這是我當(dāng)時寫的算法
http://ask.dcloud.net.cn/publish/article/875
這是直接在html5上監(jiān)聽藍(lán)牙,后來多次測量之后發(fā)現(xiàn),根本不能用。
使用了多種方法,比如 使用work開啟多線程,但是問題是 work開啟了但是無法調(diào)用plus對象,沒有任何用處。
使用異步調(diào)用,也無法實(shí)現(xiàn),
后來經(jīng)過多次詢問大牛之后,發(fā)現(xiàn),這個問題目前最好使用html5插件 的形式解決,寫完了插件,然后,用html點(diǎn)擊之后,觸發(fā)按鈕調(diào)用原生的藍(lán)牙監(jiān)聽程序。
具體的文檔在這里:
http://ask.dcloud.net.cn/docs/#http://ask.dcloud.net.cn/article/66
具體的實(shí)現(xiàn)方法,這篇文檔,我至少要讀了5遍左右,終于寫出了插件,成功的調(diào)用了原生監(jiān)聽程序。
要知道如果我們要寫安卓插件的話,只能使用離線打包,目前不支持在線打包。
因此如果寫原生插件,首先要會離線打包,使用安卓程序打包,
具體的打包流程請參考
http://ask.dcloud.net.cn/docs/#http://ask.dcloud.net.cn/article/38
我建議大家多多幾遍,需要注意的事項(xiàng):
(1) 離線打包要下載他們的sdk 地址:
http://ask.dcloud.net.cn/article/103
(2)注意:因?yàn)槠渌谌降腟DK也使用到包名相關(guān)資源配置,所以需要在AndroidManifest.xml將所有“io.dcloud.HBuilder.Hello”替換成要修改成的包名。
(3)打開assets -> apps 目錄,將下面“HelloH5”目錄名稱修改為應(yīng)用manifest.json中的id名稱(這步非常重要,否則會導(dǎo)致應(yīng)用無法正常啟動),并將所有應(yīng)用資源拷貝到其下的www目錄中:
(4)打開assets -> data下的control.xml文件,修改appid值:
其中appid值為HBuilder應(yīng)用的appid,必須與應(yīng)用manifest.json中的id值完全一致;appver為應(yīng)用的版本號,用于應(yīng)用資源的升級,必須保持與manifest.json中的version -> name值完全一致;version值為應(yīng)用基座版本號(plus.runtime.innerVersion返回的值),不要隨意修改。
學(xué)會了如何打包之后,我們可以做一個很小的打包的源程序,專門用來打包用,
然后下一步就是寫插件了:
具體文檔在:http://ask.dcloud.net.cn/docs/#http://ask.dcloud.net.cn/article/66
具體的方法就是,先使用安卓源程序上寫好監(jiān)聽的方法,然后把html5的文件放到資源文件夾assess底下,調(diào)用寫好的安卓監(jiān)聽方法;
?具體需要注意的地方:
(1)首先要下載HTML5+基座的Android版SDK點(diǎn)擊下載解壓后將HBuilder-Integrate工程導(dǎo)入到ADT中。 這里你會下載到好幾個文件夾,有一個HBuilder-hello的 這個是離線打包用的,還有個是 HBuilder-Integrate,這個已經(jīng)寫好了插件了,運(yùn)行一下看看
(2) 關(guān)聯(lián)JS插件名和原生類
在編寫擴(kuò)展插件時需要修改“/assets/data”中properties.xml文件,在其中添加JS對象名稱和Android包的類名對應(yīng)關(guān)系,SDK會根據(jù)對應(yīng)的類名查找并生成相應(yīng)的對象并執(zhí)行對應(yīng)的邏輯。?
?
注意這里是在feature 的屬性底下加上這個,例子中在service底下加了,如果不在feature底下加的話會報(bào)錯,缺少plusintest插件的權(quán)限。
"應(yīng)用未添加plugintest權(quán)限,請?jiān)趍anifest.json文件中permissions節(jié)點(diǎn)進(jìn)行配置,"
出現(xiàn)這個錯誤,怎么解決
就是這個錯誤:
(3)兩個都好了之后,把寫好的插件整合到 你的項(xiàng)目中。
總結(jié)
以上是生活随笔為你收集整理的Dcloud HTML5 监听蓝牙设备 调用 原生安卓实现 - aspirant - 博客园的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java垃圾回收文档整理
- 下一篇: 前端之模拟数据 - HackerViru