亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Cordova的風(fēng)扇遙控APP的研究與實(shí)現(xiàn)

        2020-04-09 04:54:20周昌爽陳昱卬方狄慶楊曉東
        計(jì)算機(jī)時(shí)代 2020年3期
        關(guān)鍵詞:跨平臺(tái)

        周昌爽 陳昱卬 方狄慶 楊曉東

        摘 ?要: 基于Cordova移動(dòng)框架設(shè)計(jì)并開發(fā)了一款可跨平臺(tái)的用于遠(yuǎn)程操控電風(fēng)扇的遙控類手機(jī)APP,它可有效地減少遙控器堆積、難找的尷尬。APP的開發(fā)使用了主流的HTML5、原生JS、CSS3等Web前端技術(shù),不僅實(shí)現(xiàn)了遙控器的功能,而且使其操作簡(jiǎn)單;還使用了響應(yīng)式 Material Design 框架,使得APP的界面美觀。

        關(guān)鍵詞: Cordova; 遙控類APP; Web; 跨平臺(tái)

        中圖分類號(hào):TP393 ? ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A ? ? 文章編號(hào):1006-8228(2020)03-35-05

        Research and implementation of fan remote control APP using Cordova framework

        Zhou Changshuang, Chen Yu'ang, FangDiqing, Yang Xiaodong

        (School of Information & Electronic Engineering, Zhejiang Gongshang University, Hangzhou, Zhejiang 310018, China)

        Abstract: Using Cordova mobile framework, a cross platform remote control mobile phone APP for remote control of electric fans is designed and developed, which can effectively reduce the embarrassment of remote controller accumulation and hard to be found. The development of APP uses the mainstream Web front-end technologies such as HTML5, native JS and CSS3, which not only realizes the functions of remote controller, but also makes its operation simple; and the responsive Material Design framework is also used to make the APP interface beautiful.

        Key words: Cordova; remote control APP; Web; cross platform

        0 引言

        電風(fēng)扇作為一款傳統(tǒng)家具,憑借其低廉的價(jià)格、方便的使用方式、低碳節(jié)能等優(yōu)勢(shì)經(jīng)久不衰,因此電風(fēng)扇仍具有十分廣闊的市場(chǎng)。

        傳統(tǒng)的電風(fēng)扇已經(jīng)難以滿足現(xiàn)在人們生活上的需求,例如很多電風(fēng)扇的設(shè)計(jì)沒(méi)有遙控功能,當(dāng)前市面上的幾款附帶遙控功能的電風(fēng)扇也是使用遙控機(jī)來(lái)控制,這并未與如今迅速發(fā)展的科技聯(lián)系上,忽略了使用人群更廣的終端APP的功能。此外,隨著智能家居的逐步普及,傳統(tǒng)的紅外遙控器的缺點(diǎn)日益凸顯。特別是當(dāng)家庭中出現(xiàn)大量各種型號(hào)、各種功能的紅外遙控器時(shí),就會(huì)大大降低用戶體驗(yàn)。

        在現(xiàn)代化智能家居系統(tǒng)中,將遙控器與其他工具合并,減少獨(dú)立的遙控器數(shù)量,成為一個(gè)新的方向。電扇遙控APP便應(yīng)運(yùn)而生。

        1 Apache Cordova框架概述

        Apache Cordova是一個(gè)開源移動(dòng)開發(fā)框架,它允許您使用標(biāo)準(zhǔn)的Web技術(shù),如HTML5,CSS3和JavaScript進(jìn)行跨平臺(tái)開發(fā),避免每個(gè)移動(dòng)平臺(tái)本機(jī)開發(fā)語(yǔ)言[1]。應(yīng)用程序在針對(duì)每個(gè)平臺(tái)的包裝內(nèi)執(zhí)行。Apache Cordova有以下幾個(gè)極大的優(yōu)勢(shì):①它提供了每個(gè)移動(dòng)應(yīng)用程序所需的核心組件,這些組件將用于創(chuàng)建應(yīng)用程序的基礎(chǔ),所以我們可以花更多的時(shí)間來(lái)實(shí)現(xiàn)我們自己的邏輯;②支持真機(jī)調(diào)試,并且它為構(gòu)建混合移動(dòng)應(yīng)用程序提供了一個(gè)平臺(tái),因此我們可以開發(fā)一個(gè)應(yīng)用程序,在不同的移動(dòng)平臺(tái)IOS,Android上使用。此外,它提供的API將用于實(shí)現(xiàn)本地移動(dòng)功能至JavaScript應(yīng)用程序,因此我們不需要學(xué)習(xí)平臺(tái)特定的編程語(yǔ)言。無(wú)需購(gòu)置域名、服務(wù)器等其他服務(wù)。

        2 系統(tǒng)功能模塊設(shè)計(jì)

        本文設(shè)計(jì)的電扇遙控APP有兩個(gè)界面,六個(gè)功能,分別是:電扇選擇界面,含有搜索電扇功能;電扇操控界面,含有開關(guān)、風(fēng)速設(shè)置、擺頭、吹風(fēng)模式切換定時(shí)啟閉等功能。下面詳細(xì)介紹該APP兩個(gè)界面的主要功能(系統(tǒng)模塊圖見圖1)。

        2.1 電扇選擇界面

        該頁(yè)面包含一個(gè)主要功能,即搜索附近可用電扇。①用戶可通過(guò)下拉刷新或點(diǎn)擊右上角加號(hào),即可發(fā)現(xiàn)身邊可操控的電扇。電扇的默認(rèn)名字為“新風(fēng)扇-num”(其中num為已添加的電扇數(shù))。②一經(jīng)刷新,LocalStorage就會(huì)通過(guò)setItem()方法將搜索到的電扇的相關(guān)信息以及更改過(guò)之后的ul標(biāo)簽保存至本地存儲(chǔ)內(nèi)。因此在退出APP后重新進(jìn)入,不需要再次刷新獲取附近風(fēng)扇信息。③在對(duì)應(yīng)的電扇區(qū)塊左滑,右側(cè)就會(huì)跳出“刪除”按鈕,點(diǎn)擊可以刪除電扇。④點(diǎn)擊對(duì)應(yīng)電扇,即可進(jìn)入功能選擇界面。

        2.2 電扇操控界面

        該頁(yè)面實(shí)現(xiàn)對(duì)電扇功能的操控。電扇的名字與用戶默認(rèn)設(shè)置均會(huì)自動(dòng)保存在后臺(tái)數(shù)據(jù)庫(kù)中。①改變吹風(fēng)模式。共有三種模式可供選擇:“正常風(fēng)”、“自然風(fēng)”、“睡眠風(fēng)”。“睡眠風(fēng)”由強(qiáng)自然風(fēng)開始,逐漸減小風(fēng)的強(qiáng)度,符合人的生理需求。避免長(zhǎng)時(shí)間強(qiáng)風(fēng)帶來(lái)的頭痛、鼻塞等反應(yīng)。②開關(guān)擺頭功能。擺頭模式具體功能視不同型號(hào)電風(fēng)扇而定(擺頭或旋轉(zhuǎn)扇葉)。③預(yù)設(shè)置開啟與關(guān)閉時(shí)間。設(shè)置時(shí)間范圍為0~6小時(shí),每次點(diǎn)擊的增加0.5小時(shí)時(shí)間。視該電扇當(dāng)前開關(guān)狀態(tài)決定使用“定時(shí)關(guān)閉”功能還是“定時(shí)開啟”功能。④調(diào)節(jié)風(fēng)速。移動(dòng)滑槽改變風(fēng)速。檔位數(shù)視不同風(fēng)扇而定。⑤修改電扇命名。方便在今后使用時(shí)尋找對(duì)應(yīng)的電扇。⑥點(diǎn)擊左上返回圖標(biāo)返回電扇選擇列表。

        2.3 系統(tǒng)效果圖展示

        當(dāng)用戶下載完成后,系統(tǒng)將跳轉(zhuǎn)到首頁(yè)(電扇選擇頁(yè)面)。用戶可根據(jù)導(dǎo)航欄輕松地掌握此APP的使用方法。APP的主要界面如圖2所示[3]。

        3 系統(tǒng)主要技術(shù)實(shí)現(xiàn)

        3.1 開發(fā)環(huán)境的搭建

        3.1.1 Node.js環(huán)境的配置

        下載并安裝Node.js(官方下載地址:https://nodejs.org/en/),目前Node.js版本已經(jīng)集成了npm,安裝完成后打開在控制臺(tái)依次輸入node-v、npm-v,控制臺(tái)會(huì)打印出Node與npm相應(yīng)的版本號(hào),說(shuō)明已經(jīng)安裝成功[2]。

        3.1.2 安裝Android SDK和XCode

        對(duì)于Android和IOS平臺(tái),需要在機(jī)器上分別安裝Android SDK和XCode并且設(shè)置好相應(yīng)的環(huán)境變量。

        3.1.3 Cordova的環(huán)境配置

        在Node與NPM成功安裝后,在控制臺(tái)輸入 npm install -g cordova來(lái)安裝Cordova。在Cordova 安裝完成后,可以在控制臺(tái)輸入cordova -v來(lái)查看版本,若有版本號(hào)打印出來(lái)說(shuō)明已經(jīng)安裝成功。

        3.2 Web前端技術(shù)

        Web前端技術(shù)主要有HTML語(yǔ)言,CSS,JavaScript。HTML是一種標(biāo)記語(yǔ)言,能夠?qū)崿F(xiàn)Web頁(yè)面并在瀏覽器中顯示。HTML5作為HTML的最新版本,引入了多項(xiàng)新技術(shù),大大增強(qiáng)了對(duì)于應(yīng)用的支持能力,使得Web技術(shù)不再局限于呈現(xiàn)網(wǎng)頁(yè)內(nèi)容。是前端的基礎(chǔ)。

        CSS是級(jí)聯(lián)樣式表,是用來(lái)進(jìn)行網(wǎng)頁(yè)風(fēng)格設(shè)計(jì)的。級(jí)聯(lián)樣式表可以使人更能有效地控制網(wǎng)頁(yè)外觀,可以擴(kuò)充精確指定網(wǎng)頁(yè)元素位置,外觀以及創(chuàng)建特殊效果的能力。

        JavaScript是一種由Netscape的LiveScript發(fā)展而來(lái)的原型化繼承的面向?qū)ο蟮膭?dòng)態(tài)類型的區(qū)分大小寫的客戶端腳本語(yǔ)言,用來(lái)給HTML頁(yè)面增加動(dòng)態(tài)功能。是前端的核心。

        我們通過(guò)Cordova自帶的插件對(duì)手機(jī)的后退鍵進(jìn)行了修改,當(dāng)APP處于風(fēng)扇操控界面時(shí),按下手機(jī)的后退鍵會(huì)回退至風(fēng)扇選擇界面,而在風(fēng)扇選擇界面按下后退鍵則會(huì)退出APP。具體代碼如下所示:

        //點(diǎn)擊手機(jī)后退鍵返回至索引頁(yè):首先先取消了后退鍵自帶的效果,不然會(huì)導(dǎo)致APP的退出。隱藏該頁(yè)并顯示風(fēng)扇選擇頁(yè)來(lái)完成頁(yè)面的切換,并且移除后退鍵的監(jiān)聽器。

        3.3 基于Cordova存儲(chǔ)API的數(shù)據(jù)存儲(chǔ)功能的實(shí)現(xiàn)

        移動(dòng)應(yīng)用離不開數(shù)據(jù),有些數(shù)據(jù)之間的關(guān)系比較復(fù)雜,如果沒(méi)有遠(yuǎn)程服務(wù)器的支持,這些數(shù)據(jù)不能持久保存在用戶的設(shè)備上。而HTML5的Web Storage API中提供了兩種客戶端存儲(chǔ)數(shù)據(jù)的新方法:Local Storage和Session Storage。其中Local Storage為本地存儲(chǔ),相當(dāng)于一個(gè)大型的Cookie 并且Local Storage 并沒(méi)有時(shí)間的限制,即使在程序升級(jí)后也不會(huì)消失,能夠滿足我們持久性的需求,有利于實(shí)現(xiàn)本地的緩存、搜索等功能[4]。同時(shí),現(xiàn)在幾乎所有的移動(dòng)設(shè)備都已經(jīng)具備對(duì)Local storage的直接或間接支持。Cordova在存儲(chǔ)時(shí)通過(guò)localStorage.setItem()方法來(lái)將數(shù)據(jù)添加到本地存儲(chǔ),而通過(guò)localStorage.getItem()方法來(lái)獲取本地存儲(chǔ)。

        該APP中有多處應(yīng)用本地存儲(chǔ)對(duì)象。利用本地緩存機(jī)制能夠大大提高APP完整性,保證用戶每次打開APP不需要重新刷新獲得之前加載過(guò)的風(fēng)扇信息。在本地有緩存數(shù)據(jù)且不需要更新的前提下,系統(tǒng)可以迅速作出響應(yīng)。其實(shí)現(xiàn)的邏輯流程如圖3所示。

        用戶在索引頁(yè)面(即默認(rèn)頁(yè)面),可以通過(guò)下拉刷新或者右上角的“+”符號(hào),獲取最新的附近的風(fēng)扇,如果剛刷新出來(lái)的風(fēng)扇之前尚未保存信息,系統(tǒng)將會(huì)將該新風(fēng)扇的信息緩存到本地,下一次打開系統(tǒng)時(shí),系統(tǒng)會(huì)獲取本地緩存的內(nèi)容并置于索引頁(yè)上。

        前端通過(guò)JS將刷新得到的風(fēng)扇信息動(dòng)態(tài)添加到索引頁(yè)上的ul標(biāo)簽內(nèi),同時(shí)并調(diào)用localStorage.setItem()方法將ul信息以及風(fēng)扇的命名數(shù)組以JSON格式保存至本地緩存中,而下一次打開系統(tǒng)時(shí),JS會(huì)首先通過(guò)localStorage.getItem()方法獲取之前存儲(chǔ)的ul對(duì)象及風(fēng)扇命名數(shù)組,從而獲取之前添加的風(fēng)扇信息[5]。但是該方法有一個(gè)不足:通過(guò)JS動(dòng)態(tài)添加的li元素在重新加載后,需要重新為其設(shè)計(jì)監(jiān)聽器。

        存儲(chǔ)數(shù)據(jù)功能實(shí)現(xiàn)的部分核心代碼如下:

        首先是完成風(fēng)扇的添加,隨后再將添加了風(fēng)扇的ul標(biāo)簽的innerHTML以及FanNames數(shù)組保存至LocalStorage內(nèi)。其中需要注意的是,F(xiàn)anNames保存需要轉(zhuǎn)化為JSON格式的字符串。注釋中有具體說(shuō)明。

        以下為獲取本地存儲(chǔ)的核心代碼:

        為了確保獲取本地存儲(chǔ)的時(shí)效性,將這段代碼放置JS文件中的app()方法的頭部。因?yàn)镕anNames和num的數(shù)據(jù)類型與LocalStorage存儲(chǔ)的類型不同,所以需要先通過(guò)轉(zhuǎn)化才能賦值。

        //獲取之前存儲(chǔ)的風(fēng)扇信息:因?yàn)長(zhǎng)ocalStorage保存的數(shù)據(jù)是字符串類型。所以在取回風(fēng)扇信息時(shí),要進(jìn)行非null判斷以及通過(guò)JSON.parse()方法和Number()方法將字符串轉(zhuǎn)化成數(shù)組和數(shù)字類型。

        3.4 基于Materialize框架的界面實(shí)現(xiàn)

        Materialize是一個(gè)使用CSS,JavaScript和HTML創(chuàng)建的UI組件庫(kù)。實(shí)現(xiàn)UI組件有助于創(chuàng)建更快,更美觀,更靈敏的網(wǎng)站。它的靈感來(lái)自Google Material Design。它具有響應(yīng)式設(shè)計(jì),以便使用Materialize創(chuàng)建的網(wǎng)站可以適合任何屏幕尺寸并且能根據(jù)設(shè)備大小重新設(shè)計(jì)自己。它還具有可擴(kuò)展的優(yōu)點(diǎn),支持陰影和粗體顏色。它在各種平臺(tái)和設(shè)備上保持一致。最關(guān)鍵的是,它的設(shè)計(jì)考慮到了添加新的CSS規(guī)則比覆蓋現(xiàn)有的CSS規(guī)則容易得多。我們?cè)O(shè)計(jì)的APP的顏色基本都是選用materialize內(nèi)已配好的顏色,使我們不會(huì)浪費(fèi)時(shí)間在調(diào)色上,只要根據(jù)陳列出的顏色選用其相應(yīng)的class就行。除此之外,我們還調(diào)用了其預(yù)加載組件中的圓形進(jìn)度。

        以下為Materialize關(guān)于預(yù)加載組件功能的核心代碼:

        //設(shè)置預(yù)加載組件的大小以滿足不同用戶的需求。當(dāng)該組件工作時(shí),然后設(shè)置animation的動(dòng)畫名稱屬性為container-rotate,其效果為360度旋轉(zhuǎn)。時(shí)間屬性為1568ms,動(dòng)畫的速度曲線屬性為linear,即從頭到尾速度是一致的,動(dòng)畫的播放次數(shù)為infinite,即無(wú)限次。而我們APP通過(guò)顯示隱藏該組件來(lái)使得其動(dòng)畫只有幾次。

        4 結(jié)束語(yǔ)

        針對(duì)本次開發(fā),我們利用Cordova 跨平臺(tái)框架,以其通用流行的“HTML+CSS+JS”手段,改變了傳統(tǒng)開發(fā)方式的局限和“不靈活”,實(shí)現(xiàn)了開發(fā)的通用、簡(jiǎn)便、高效。我們所開發(fā)的風(fēng)扇遙控APP“E遙控”不僅能添加風(fēng)扇信息還可以通過(guò)重命名來(lái)區(qū)分各風(fēng)扇,還能刪除不想要的風(fēng)扇信息來(lái)簡(jiǎn)化界面。但是我們系統(tǒng)的一些還需要進(jìn)一步完善,例如實(shí)現(xiàn)登錄功能并將風(fēng)扇信息上傳至數(shù)據(jù)庫(kù)中以達(dá)到不同手機(jī)之間共享風(fēng)扇信息的目的這是我們需要進(jìn)一步攻克的難題,與風(fēng)扇的距離,因Cordova只能獲取到地理位置的經(jīng)緯度,而得不到實(shí)現(xiàn),這需要等待Cordova關(guān)于這方面的升級(jí)來(lái)解決。

        參考文獻(xiàn)(References):

        [1] 怯肇乾.Cordova-APP軟件及其插件開發(fā)[J].電腦編程技巧與維護(hù),2019.2.

        [2] 周玉軒,楊絮,鮑富成,朱一峰.CordovaNodeJS混合式物聯(lián)網(wǎng)信息服務(wù)系統(tǒng)[J].計(jì)算機(jī)工程與應(yīng)用,2017.

        [3] 葉帆帆,徐城璋,王利興,胡宸瑄,楊曉東. 基于APICloud的家居設(shè)計(jì)APP的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)時(shí)代,2016.5.

        [4] 占華林,薛志強(qiáng),阮修湘.智能家居控制APP的開發(fā)[J].電子測(cè)試,2017.11.

        [5] 華穎.基于Web和Android的智能家居控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].廣西大學(xué),2018.6.

        猜你喜歡
        跨平臺(tái)
        跨層級(jí)網(wǎng)絡(luò)、跨架構(gòu)、跨平臺(tái)的數(shù)據(jù)共享交換關(guān)鍵技術(shù)研究與系統(tǒng)建設(shè)
        一款游戲怎么掙到全平臺(tái)的錢?
        潛力雙跨平臺(tái):進(jìn)階:誰(shuí)將跨入下一個(gè)“十大”?
        跨平臺(tái)APEX接口組件的設(shè)計(jì)與實(shí)現(xiàn)
        基于C++語(yǔ)言的跨平臺(tái)軟件開發(fā)的設(shè)計(jì)
        基于C++語(yǔ)言的跨平臺(tái)軟件開發(fā)
        移動(dòng)互聯(lián)網(wǎng)應(yīng)用跨平臺(tái)開發(fā)
        一種虛擬現(xiàn)實(shí)應(yīng)用程序跨平臺(tái)方法的研究
        基于QT的跨平臺(tái)輸電鐵塔監(jiān)控終端軟件設(shè)計(jì)與實(shí)現(xiàn)
        基于OPC跨平臺(tái)通信的電機(jī)監(jiān)測(cè)與診斷系統(tǒng)
        国产黑丝美腿在线观看| 久久久久亚洲AV无码专区一区| 亚洲视一区二区三区四区| 亚洲精品一品区二品区三区| 无码丰满熟妇一区二区| 91久久精品国产91久久| 极品美女销魂一区二区三| 中文字字幕在线中文乱码解| 久久久av波多野一区二区| 无码中文字幕加勒比一本二本| 超级少妇一区二区三区 | 国产成人a人亚洲精品无码| 久热这里只有精品99国产| 性感人妻av在线播放| 手机在线免费av资源网| 漂亮人妻被中出中文字幕久久| 色欲av一区二区久久精品| 亚洲av成人久久精品| 337p日本欧洲亚洲大胆色噜噜 | 偷拍一区二区三区四区| 真人做爰片免费观看播放| 99热这里有免费国产精品| 免费看黄在线永久观看| 老熟妇乱子交视频一区| 999国内精品永久免费视频| 小13箩利洗澡无码免费视频| 国产视频激情视频在线观看| 日韩av无码精品一二三区| 亚洲天堂第一区| 免费看男女啪啪的视频网站 | 亚洲中文字幕乱码在线观看| 奶头又大又白喷奶水av| 鲁一鲁一鲁一鲁一澡| 久久迷青品着产亚洲av网站| 极品粉嫩小仙女高潮喷水网站| 午夜无码国产理论在线| 天堂最新在线官网av| 亚洲av在线观看播放| 欧美一区二区三区久久综| 精品一精品国产一级毛片| 综合成人亚洲网友偷自拍|