Dcloud HTML5 監聽藍牙設備 調用 原生安卓實現 - aspirant - 博客園

最近一直搞Dcloud ,這是HTML5版本的開發,打包時候,可以打包成 apk 和ipa 分別運行在安卓和ios 機器上面,

但是這里面的資料很少,遇到問題,之后只能自己鉆研總結,

現在有這么一個需求,需要實現藍牙開啟后,監聽藍牙接口傳遞的數據,然后呈現給用戶。我試了很多方法,之前是在 HTML5上直接寫方法,監聽藍牙狀態,但是jS是單線程,直接把進程阻塞了其他的啥也干不了,而且時間長了監聽,總會莫名中斷,

這是我當時寫的算法

http://ask.dcloud.net.cn/publish/article/875

這是直接在html5上監聽藍牙,后來多次測量之后發現,根本不能用。

使用了多種方法,比如 使用work開啟多線程,但是問題是 work開啟了但是無法調用plus對象,沒有任何用處。

使用異步調用,也無法實現,

后來經過多次詢問大牛之后,發現,這個問題目前最好使用html5插件 的形式解決,寫完了插件,然后,用html點擊之后,觸發按鈕調用原生的藍牙監聽程序。

具體的文檔在這里:

http://ask.dcloud.net.cn/docs/#http://ask.dcloud.net.cn/article/66

具體的實現方法,這篇文檔,我至少要讀了5遍左右,終于寫出了插件,成功的調用了原生監聽程序。

要知道如果我們要寫安卓插件的話,只能使用離線打包,目前不支持在線打包。

因此如果寫原生插件,首先要會離線打包,使用安卓程序打包,

具體的打包流程請參考

http://ask.dcloud.net.cn/docs/#http://ask.dcloud.net.cn/article/38

我建議大家多多幾遍,需要注意的事項:

(1) 離線打包要下載他們的sdk 地址:

http://ask.dcloud.net.cn/article/103

(2)注意:因為其它第三方的SDK也使用到包名相關資源配置,所以需要在AndroidManifest.xml將所有“io.dcloud.HBuilder.Hello”替換成要修改成的包名。

(3)打開assets -> apps 目錄,將下面“HelloH5”目錄名稱修改為應用manifest.json中的id名稱(這步非常重要,否則會導致應用無法正常啟動),并將所有應用資源拷貝到其下的www目錄中:

(4)打開assets -> data下的control.xml文件,修改appid值:

其中appid值為HBuilder應用的appid,必須與應用manifest.json中的id值完全一致;appver為應用的版本號,用于應用資源的升級,必須保持與manifest.json中的version -> name值完全一致;version值為應用基座版本號(plus.runtime.innerVersion返回的值),不要隨意修改。

學會了如何打包之后,我們可以做一個很小的打包的源程序,專門用來打包用,

然后下一步就是寫插件了:

具體文檔在:http://ask.dcloud.net.cn/docs/#http://ask.dcloud.net.cn/article/66

具體的方法就是,先使用安卓源程序上寫好監聽的方法,然后把html5的文件放到資源文件夾assess底下,調用寫好的安卓監聽方法;

?具體需要注意的地方:

(1)首先要下載HTML5+基座的Android版SDK點擊下載解壓后將HBuilder-Integrate工程導入到ADT中。 這里你會下載到好幾個文件夾,有一個HBuilder-hello的 這個是離線打包用的,還有個是 HBuilder-Integrate,這個已經寫好了插件了,運行一下看看

(2) 關聯JS插件名和原生類

在編寫擴展插件時需要修改“/assets/data”中properties.xml文件,在其中添加JS對象名稱和Android包的類名對應關系,SDK會根據對應的類名查找并生成相應的對象并執行對應的邏輯。?

?

注意這里是在feature 的屬性底下加上這個,例子中在service底下加了,如果不在feature底下加的話會報錯,缺少plusintest插件的權限。

"應用未添加plugintest權限,請在manifest.json文件中permissions節點進行配置,"
出現這個錯誤,怎么解決

就是這個錯誤:

(3)兩個都好了之后,把寫好的插件整合到 你的項目中。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/248970.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/248970.shtml
英文地址,請注明出處:http://en.pswp.cn/news/248970.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

NOIP2018游記

NOIP 2018 游記 又是一年 \(NOIP\) 呢...第二次參加了,希望這一次能不再擦線吧...畢竟我真的很想去 \(WC\) ,也很想去省選. 最后悔的事就是在初三了,恰逢直升,大好年華,停課學 \(OI\) ,但我竟然在某兩位 \(dalao\) 帶領下搓了一年 爐石 \(\& \: SC2\) ?&#xf…

四葉草社交平臺——十天沖刺(5)

今天沒能安排好各種的任務,姑且拍了張照片就散了。 我的任務就是把登錄功能完成,先讓其他人把資源載入問題解決了,然后我再看看動態如何發送。 轉載于:https://www.cnblogs.com/limitCM/p/10925161.html

Django forms組件

校驗字段 模板文件 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body> <form action"" method"post"><p>用戶名: <…

為什么要用TypeScript - 肉豬 - 博客園

為什么要用TypeScript 以下是本人的一點拙見&#xff0c;歡迎指正。 TypeScript的設計目的應該是解決JavaScript的“痛點”&#xff1a;弱類型和沒有命名空間&#xff0c;導致很難模塊化&#xff0c;不適合開發大型程序。另外它還提供了一些語法糖來幫助大家更方便地實踐面向…

java繼承上機作業

實現如下類之間的繼承關系&#xff0c;并編寫Music類來測試這些類。 1 package su;2 3 class Instrument{4 public void play() {5 System.out.println("彈奏樂器");6 }7 8 public void play2() {9 // TODO 自動生成的方法存根 10 …

自定義標簽的作用

1&#xff09;控制標簽體內容是否輸出 2&#xff09;控制標簽余下內容是否輸出 3&#xff09;控制重復輸出標簽體內容 4&#xff09;改變標簽體內容 5&#xff09;帶屬性的標簽 package com.loaderman.demo.a_tag;import java.io.IOException; import java.io.StringWriter;imp…

前端之模擬數據 - HackerVirus - 博客園

閱讀目錄 玩轉前端之模擬數據 回到目錄 玩轉前端之模擬數據 博客園主頁&#xff1a;http://www.cnblogs.com/handoing/ 是否還在為前端模擬數據頭疼&#xff1f; 是否還在為后端返回數據格式較多內心煩躁&#xff1f; 是否還想吸一支煙壓壓精&#xff1f; 看下去吧&#x…

Leetcode No.146 ****

運用你所掌握的數據結構&#xff0c;設計和實現一個 LRU (最近最少使用) 緩存機制。它應該支持以下操作&#xff1a; 獲取數據 get 和 寫入數據 put 。 獲取數據 get(key) - 如果密鑰 (key) 存在于緩存中&#xff0c;則獲取密鑰的值&#xff08;總是正數&#xff09;&#xff…

三元運算符運算(Day02)

三元運算符運算(Day02) 運算符&#xff1a;用來對常量或者變量連接的符號&#xff0c;稱為運算符。表達式&#xff1a;用運算符連接起來的整個式子成為表達式。比如&#xff1a;a10,1020運算符有以下五種&#xff1a;1、算術運算符2、賦值運算符3、關系運算符4、邏輯運算符5、三…

JS正則表達式驗證數字非常全 - 吾心無所 - 博客園

JS正則表達式驗證數字非常全 Js代碼 <script type"text/javascript"> function SubmitCk() { var reg /^([a-zA-Z0-9][_|\_|\.]?)*[a-zA-Z0-9]([a-zA-Z0-9][_|\_|\.]?)*[a-zA-Z0-9]\.[a-zA-Z]{2,3}$/; if (!reg.test($("#txtEmail").val())) {…

datagrid 的標題的內容不對應整齊

$(document).ready(function(){ var column "[[" "{title:工號,field:grantorCode,sortable:true,hidden:true,width:fixWidth(0)}," "{title:外出告知人,field:grantor,sortable:true,width:fixWidth(0.15)}," "{title:開始時間…

laravel 分頁

2.1 基于查詢構建器分頁 有多種方式實現分頁&#xff0c;最簡單的方式就是使用查詢構建器或Eloquent模型的paginate方法。該方法基于當前用戶查看頁自動設置合適的偏移&#xff08;offset&#xff09;和限制&#xff08;limit&#xff09;。默認情況下&#xff0c;當前頁通過HT…

Postfix常用命令和郵件隊列管理(queue)

本文主要介紹一下postfix的常用命令及郵件隊列的管理: Postfix有以下四種郵件隊列&#xff0c;均由管理隊列的進程統一進行管理&#xff1a; maildrop&#xff1a;本地郵件放置在maildrop中&#xff0c;同時也被拷貝到incoming中。 incoming&#xff1a;放置正在到達隊列或管理…

異步加載js文件并執行js方法:實現異步處理網頁的復雜效果

異步加載js文件并執行js方法&#xff1a;實現異步處理網頁的復雜效果 有這么一個場景&#xff0c;當你的網頁頁面效果過多就會造成了打開頁面的速度變得緩慢&#xff0c;長時間處于加載的狀態&#xff0c;這樣的效果通常會讓用戶感到不友好&#xff0c;通常的處理方法是先…

1.java的基礎和數據類型

一.學習要求1.聽課一定要全神貫注2.課堂筆記&#xff0c;一定要自己總結&#xff0c;而且要有很嚴謹的邏輯關系。提綱很重要3.作業不折不扣的完成&#xff0c;并且多完成4.階段項目一定要獨立完成5.每天早上由一位同學來進行早分享&#xff0c;內容可以是昨天或者明天的學習內容…

JavaScript DOM操作 提高篇

做為一個web前端&#xff0c;處理和了解瀏覽器差異一個重要問題.下面將介紹本人在工作中的一些筆記總結&#xff0c;先介紹沒有使用js庫的情況。 1.  setAttribute方法設置元素類名 &#xff1a; 在jQuery中&#xff0c;直接使用attr()方法即可&#xff0c;可在原生的JS中 e…

《算法競賽進階指南》0.5排序

103. 電影 莫斯科正在舉辦一個大型國際會議&#xff0c;有n個來自不同國家的科學家參會。 每個科學家都只懂得一種語言。 為了方便起見&#xff0c;我們把世界上的所有語言用1到109之間的整數編號。 在會議結束后&#xff0c;所有的科學家決定一起去看場電影放松一下。 他們去的…

Spring Cloud Gateway(五):路由定位器 RouteLocator

本文基于 spring cloud gateway 2.0.1 1、簡介 直接 獲取 路 由 的 方法 是 通過 RouteLocator 接口 獲取。 同樣&#xff0c; 該 頂 級 接口 有多 個 實現 類&#xff0c; RouteLocator 路由定位器&#xff0c;顧名思義就是用來獲取路由的方法。該路由定位器為頂級接口有多個實…

CommonJS,AMD,CMD區別 - 鄭星陽 - ITeye博客

CommonJS&#xff0c;AMD&#xff0c;CMD區別 博客分類&#xff1a; seajs和requirejs JavaScript zccst轉載 學得比較暈&#xff0c;再次看commonjs&#xff0c;amd, cmd時好像還是沒完全弄清楚&#xff0c;今天再整理一下&#xff1a; commonjs是用在服務器端的&#xff…

739. Daily Temperatures

根據每日 氣溫 列表&#xff0c;請重新生成一個列表&#xff0c;對應位置的輸入是你需要再等待多久溫度才會升高的天數。如果之后都不會升高&#xff0c;請輸入 0 來代替。 例如&#xff0c;給定一個列表 temperatures [73, 74, 75, 71, 69, 72, 76, 73]&#xff0c;你的輸出應…