BCSphere入門教程06:使用Cordova標準模組
BCSphere是一款基於Cordova WebView的瀏覽器,為了使用javascript介面訪問智慧手機本地資源以支援更多種類的智慧硬體應用,BCSphere將Cordova官方提供的模組(外掛)進行了底層的封裝。開發人員可以參考Cordova Plugin API進行使用。當然,我們也將繼續豐富自定義的模組來支援更多智慧硬體應用的開發。在不久的將來,我們將推出類似Node.js的NPM模組託管系統,您可以使用它來共享您的模組,來幫助我們擴充套件BCSphere的功能。
本章就來介紹在BCSphere中使用Cordova的Notification模組,本章程式碼基於上一章程式碼,增加讓一個智慧硬體可以控制手機發出聲音的feature,完成手機與硬體之間的雙向找尋的功能。
硬體最小支援
Service: Immediate Alert
UUID: 00001802-0000-1000-8000-00805f9b34fb
Characteristic: Immediate Alert
UUID: 00002a26-0000-1000-8000-00805f9b34fb
Property: Write || WriteWithoutResponse
Function: 寫入Hex值0,裝置停止發出聲音;寫入Hex值1,裝置發出聲音
Service: Custom Service
UUID: 0000ffe0-0000-1000-8000-00805f9b34fb
Characteristic: Custom Characteristic
UUID: f000ffe1-0451-4000-b000-000000000000
Property: Notify || indicate
Function: 點選在開發板上的某個按鈕,就會傳送一個Notify或者Indicate命令到手機端
引入Notification模組
在index.html檔案中在org.bcsphere.bcjs模組引入後引入如下script結點:
<script type="text/javascript" src="http://115.29.149.19:3000/framework/org.apache.cordova.dialogs/notification.js"></script>
在deviceready
事件中引入org.apache.cordova.dialogs.notification
模組:
document.addEventListener('deviceready',function(){
navigator.notification = cordova.require('org.apache.cordova.dialogs.notification');
},false);
在bcready
事件中連線並訂閱那個支援Notify屬性的特徵值:
document.addEventListener('bcready', function(){
app.device = new BC.Device({deviceAddress:DEVICEADDRESS,type:DEVICETYPE});
app.device.connect(function(){
app.device.discoverServices(function(){
var service = app.device.getServiceByUUID('ffe0')[0];
service.discoverCharacteristics(function(){
var character = service.getCharacteristicByUUID('f000ffe1-0451-4000-b000-000000000000')[0];
character.subscribe(function(){
navigator.notification.beep();
});
},function(){
alert("discover characteristics error!");
});
},function(){
alert("discover services error!");
});
});
}, false);
最後再增加一個stopBeep的方法,繫結在前端的按鈕點選事件上:
stopBeep : function(){
navigator.notification.stopBeep();
},
至此,已經可以完成當在智慧硬體上發出一個Notify的時候就可以讓手機發出聲響了,當然這個階段BCSphere還不完善,後面會開放更多的模組更全的功能模組。更多模組可以參考這裡。本章同樣提供了原始碼。
從前面幾章的原始碼可以看到,訪問一個特徵值需要寫的層次程式碼依然很多,下一章我們就介紹一種全新的方式來進行GATT的操作。
相關文章
- BCSphere入門教程05:標準Profile與自定義Profile
- BCSphere入門教程:導言和知識準備
- BCSphere入門教程目錄
- BCSphere入門教程04:使用iBeacon介面
- BCSphere入門教程01:Immediate Alert
- BCSphere入門教程02:操作 Characteristic
- BCSphere入門教程03:掃描周圍裝置
- cordova 入門
- 標準模板庫(STL)使用入門(下)
- 標準模板庫(STL)使用入門(上)
- Pr入門教程標準模板的使用方法及完成輸出
- Python入門教程100天:Day06-函式和模組的使用Python函式
- Python 快速教程(標準庫06):子程式 (subprocess包)Python
- 模組轉測標準
- VBA標準模組與類模組(轉)
- Android入門教程 | RecyclerView使用入門AndroidView
- SAP標準教程
- BW標準教程
- Angular入門到精通系列教程(11)- 模組(NgModule),延遲載入模組Angular
- Cordova教程地址
- python標準模組(一)Python
- python標準模組(二)Python
- python標準模組(三)Python
- 標準庫之 random 模組random
- STL標準模組庫:容器string模組
- odoo 開發入門教程系列-模組互動Odoo
- WordPress開發入門09:WordPress編碼標準
- 《ES6 標準入門》讀書筆記筆記
- Python標準庫06 子程式Python
- 《MySQL 入門教程》第 06 篇 備份與恢復MySql
- ES6標準入門之---let與const
- 《ES6 標準入門(第3版)》上市了!
- C++入門學習——標準模板庫之vectorC++
- TypeScript入門-模組TypeScript
- Python標準庫(1) — Itertools模組Python
- Linux的標準輸入、標準輸出和標準錯誤Linux
- SpringBoot2.x入門教程:引入jdbc模組與JdbcTemplate簡單使用Spring BootJDBC
- PIC微控制器入門教程(一)—— 準備工作