安卓小程序開(kāi)發(fā)教程(安卓小程序開(kāi)發(fā)入門(mén))
今天給各位分享安卓小程序開(kāi)發(fā)教程的知識(shí),其中也會(huì)對(duì)安卓小程序開(kāi)發(fā)入門(mén)進(jìn)行解釋?zhuān)绻芘銮山鉀Q你現(xiàn)在面臨的問(wèn)題,別忘了關(guān)注本站,現(xiàn)在開(kāi)始吧!
本文目錄一覽:
- 1、微信小程序來(lái)啦 關(guān)于它的使用你知道怎么操作嗎
- 2、直播小程序系統(tǒng)怎么開(kāi)發(fā),開(kāi)發(fā)需要多少錢(qián)
- 3、微信小程序藍(lán)牙教程--完整版親測(cè)
微信小程序來(lái)啦 關(guān)于它的使用你知道怎么操作嗎
今天凌晨剛過(guò),此前傳聞已久的微信小程序功能就正式的來(lái)到了大家面前。作為繼公眾號(hào)、服務(wù)號(hào)、企業(yè)號(hào)之后的微信又一重大功能,相信很多朋友都對(duì)它十分期待。那么小程序究竟是什么?怎么找到小程序?小程序有哪些使用技巧?小程序能否干掉APP?它又會(huì)為行業(yè)帶來(lái)哪些改變呢?別著急,在接下來(lái)的這篇文章里,你將找到你想要的全部答案。
微信小程序
什么是小程序?
根據(jù)微信官方給這款產(chǎn)品的定義來(lái)看,微信小程序?qū)儆谝环N無(wú)需安裝,即用即開(kāi)的“手機(jī)應(yīng)用”。用戶(hù)通過(guò)掃描二維碼、使用搜索功能以及點(diǎn)擊朋友分享給自己的鏈接就可以進(jìn)入小程序。不過(guò)值得注意的是,目前小程序還不支持分享到朋友圈。
從目前的使用上看,小程序在很多方面做得都十分接近APP??梢栽谧烂鎰?chuàng)建圖標(biāo)、支持后臺(tái)單獨(dú)顯示、以及擁有美觀的UI界面。
什么是微信小程序
如何找到小程序?
和傳統(tǒng)的應(yīng)用程序不同,小程序并不能在手機(jī)的應(yīng)用商店中進(jìn)行搜索。而其“父親”微信內(nèi)同樣沒(méi)有提供小程序商店的入口。那么,這樣的情況下我們?cè)撊绾握业叫〕绦蚰?
微信官方為我們提供了三種進(jìn)入到小程序的方式。在知道小程序名字的時(shí)候,用戶(hù)可以通過(guò)搜索功能直接對(duì)其進(jìn)行搜索。而微信更希望的小程序使用場(chǎng)景則是通過(guò)掃碼進(jìn)入。例如:在公交站,你可以直接掃描站牌的二維碼獲取公交到達(dá)的時(shí)間信息等等。除此之外,微信還為用戶(hù)提供了分享功能,當(dāng)然,目前分享功能僅限分享給朋友或羣組,還不能分享到朋友圈。
如何找到微信小程序
當(dāng)然,對(duì)于安卓用戶(hù)來(lái)說(shuō),在小程序頁(yè)面內(nèi)也為用戶(hù)提供了添加到桌面的選項(xiàng),讓用戶(hù)可以更加方便的打開(kāi)常用的小程序。微信內(nèi)的“發(fā)現(xiàn)”當(dāng)中,也為使用過(guò)的小程序提供了入口。
怎么使用小程序小程序使用技巧
事實(shí)上,小程序的使用邏輯與Apps的使用邏輯是相同的,小程序更像是輕量版的APP應(yīng)用。不過(guò)值得注意的是,小程序本身的屬性決定了它有著很多自己的特色。接下來(lái),筆者就與大家一起聊一聊小程序的使用技巧。
如何使用微信小程序
安卓用戶(hù)可將小程序發(fā)送到桌面
因?yàn)橄到y(tǒng)更加開(kāi)放的原因,安卓用戶(hù)將可以直接將小程序發(fā)送到桌面生成程序圖標(biāo)。根據(jù)筆者對(duì)小程序圖標(biāo)設(shè)計(jì)的觀察,目前小程序和APP的圖標(biāo)設(shè)計(jì)存在著一定的區(qū)別。不過(guò)筆者還不確定究竟是巧合還是軟件開(kāi)發(fā)商的刻意為之。
如何將小程序發(fā)送到桌面
微信小程序圖標(biāo)有著非常統(tǒng)一的規(guī)范,每個(gè)小程序的圖標(biāo)都是菱角分明的正四邊形。這一點(diǎn)與眾多安卓瀏覽器“將圖標(biāo)發(fā)送到桌面”的功能十分相似。(圖中第一排為小程序圖標(biāo),第二排為瀏覽器書(shū)簽圖標(biāo),第三排為APP圖標(biāo))
通過(guò)掃一掃功能打開(kāi)應(yīng)用不支持長(zhǎng)按識(shí)別
為了增加與服務(wù)號(hào)之間的區(qū)分度,微信在入口、推薦方式等很多途徑對(duì)小程序作出了限制。除了我們上文已經(jīng)提到的不支持分享到朋友圈之外,微信甚至對(duì)于小程序通過(guò)掃一掃進(jìn)入到方式也作出了限制。用戶(hù)無(wú)法通過(guò)識(shí)別二維碼的方式進(jìn)入到小程序當(dāng)中,而只能通過(guò)掃碼的方式進(jìn)入
小程序會(huì)消耗內(nèi)存
我們都知道,無(wú)需安裝,即用即開(kāi)是小程序的一大優(yōu)點(diǎn)。不過(guò)這并不意味著小程序可以逆天到不消耗資源。當(dāng)我們使用微信打開(kāi)小程序的時(shí)候,微信所占用的內(nèi)存資源是會(huì)明顯上升的。
小程序消耗的內(nèi)存是多少
小程序的優(yōu)勢(shì):沒(méi)有惱人的通知
除此之外,沒(méi)有惱人的通知同樣是小程序的一大優(yōu)勢(shì)。舉個(gè)例子,在不進(jìn)行通知管理的情況下,微信視頻在后臺(tái)運(yùn)行時(shí)視頻內(nèi)容推薦總會(huì)不時(shí)彈出。不過(guò)如果使用小程序,這些惱人的推薦內(nèi)容就不會(huì)再出現(xiàn)了。不僅如此,可能是小程序推廣期的原因,目前使用小程序觀看視頻即使不是會(huì)員也可以觀看5s廣告后跳過(guò)廣告,體驗(yàn)更加出色。
目前小程序遍及的類(lèi)目
目前, 微信官方已經(jīng)開(kāi)放了包括商業(yè)服務(wù)、公益、IT科技、餐飲、旅游、電商平臺(tái)等18個(gè)大類(lèi)的開(kāi)發(fā),通過(guò)微信小程序,我們可以完成購(gòu)物、外賣(mài)、生活服務(wù)等一系列的活動(dòng)。不過(guò)值得注意的是,很多人關(guān)注的“游戲”類(lèi)目,目前還未開(kāi)放,所以如果你想玩到小程序游戲,可能還要多等一等。
小程序優(yōu)勢(shì)
小程序干掉APP?
在小程序發(fā)布之后,有關(guān)小程序干掉APP的言論在互聯(lián)網(wǎng)上可謂是層出不窮。那么接下來(lái),我們就也來(lái)談一談,小程序究竟能否干掉APP。
在筆者前段時(shí)間有關(guān)小程序的文章中就曾提到:小程序更像是基于H5的“云應(yīng)用”,而隨著云技術(shù)的逐漸普及,云應(yīng)用會(huì)是未來(lái)幾乎已無(wú)懸念。不過(guò),要說(shuō)微信小程序?qū)?huì)干掉APP們,筆者依舊認(rèn)為是一個(gè)“偽命題”。
首先,微信本身的屬性就已經(jīng)限制了它成為“革命者”的可能。就目前而言,微信本身仍然在APP的范疇之內(nèi);而且,雖然在國(guó)內(nèi)應(yīng)用領(lǐng)域微信幾乎有著最強(qiáng)的號(hào)召力和影響力,但是想要靠其一家干掉APP,依舊是一件不可能的事情。
而另一方面,其實(shí)在此之前,例如火狐FireFox OS、Google Chrome OS、阿里YUNOS,已經(jīng)有很多舉足輕重的互聯(lián)網(wǎng)公司正在OS領(lǐng)域?qū)υ茟?yīng)用進(jìn)行探討了。不過(guò)由于云計(jì)算能力和網(wǎng)絡(luò)方面的限制,目前還沒(méi)有一家稱(chēng)得上成功。FireFox OS前年末已經(jīng)“犧牲”,YUNOS的云端應(yīng)用被壓縮在一個(gè)最左屏內(nèi),仍需兼容Android生存,Chrome OS設(shè)備雖有所增長(zhǎng),但歸其原因更多的是因?yàn)閮r(jià)格低廉。
綜合來(lái)看,似乎在目前的環(huán)境下討論“云應(yīng)用”普及,還為時(shí)過(guò)早。
● 小程序會(huì)帶來(lái)哪些改變?
那么,既然不能干掉APP,小程序又能帶來(lái)哪些改變呢?難道小程序的作用真的僅限于“拯救16GB iPhone”嗎?筆者認(rèn)為,微信小程序的到來(lái)至少會(huì)帶來(lái)下面兩點(diǎn)影響:
創(chuàng)業(yè)者新的狂歡
毫無(wú)疑問(wèn),對(duì)于很多創(chuàng)業(yè)者來(lái)說(shuō),小程序?qū)?huì)成為他們新的創(chuàng)業(yè)風(fēng)口。依托著微信背后巨大的流量資源,風(fēng)口上的小程序開(kāi)發(fā)者極有可能會(huì)成為下一批“飛豬”。對(duì)于開(kāi)發(fā)者而言,小程序擁有更低的開(kāi)發(fā)時(shí)間和人力資本,簡(jiǎn)單來(lái)說(shuō)就是“省錢(qián)”,而且它還更容易更新和維護(hù),微信方面對(duì)于小程序的政策也十分適合創(chuàng)業(yè)者們:修改無(wú)需等待審覈,迭代后馬上能看到效果,這又為開(kāi)發(fā)者省去了很多麻煩和時(shí)間成本。
其實(shí),這樣的橋段在此之前的公眾號(hào)和服務(wù)號(hào)上就曾上演過(guò)。每一次新的東西出現(xiàn)總會(huì)有一批抓住紅利獲得成功的人。小程序自然也是其一。
H5技術(shù)的普及
除此之外,筆者認(rèn)為小程序可能會(huì)帶來(lái)的另一大影響則在HTML5技術(shù)上。微信小程序是基于H5開(kāi)發(fā)的程序,但用了類(lèi)似于JS-SDK的框架(百度以前是clouda框架),提供了更多的接口和組件,讓程序更加流暢,體驗(yàn)接近原生APP(Native App)。從根本上講,小程序雖然不是H5,但卻與H5有著千絲萬(wàn)縷的聯(lián)系。
依靠著微信的影響力,小程序或可以讓如今混亂和普及度不高的H5技術(shù)變得更加規(guī)范和大眾化。這一點(diǎn)無(wú)論對(duì)網(wǎng)頁(yè)技術(shù)的發(fā)展,還是對(duì)于未來(lái)云應(yīng)用的普及,都是強(qiáng)有力的助燃劑。
后序:致敬蘋(píng)果的微信小程序
直播小程序系統(tǒng)怎么開(kāi)發(fā),開(kāi)發(fā)需要多少錢(qián)
直播小程序系統(tǒng)怎么開(kāi)發(fā),開(kāi)發(fā)需要多少錢(qián)
如今,不少企業(yè)都想擁有屬于自己企業(yè)或產(chǎn)品的手機(jī)APP,但其中最困擾企業(yè)主的問(wèn)題就是:開(kāi)發(fā)一款手機(jī)APP到底需要多少錢(qián)?
簡(jiǎn)單點(diǎn)來(lái)說(shuō),要視手機(jī)APP的需求及質(zhì)量而言,價(jià)位一般在幾千到十幾萬(wàn)左右,更高端的價(jià)格更高。
今天,我們就來(lái)詳細(xì)分析一下這個(gè)問(wèn)題,請(qǐng)繼續(xù)往下看吧?!?/p>
一、APP開(kāi)發(fā)款式分為固定款和定制款,兩者的價(jià)格均不相同
固定款:是指直接套用已有的、現(xiàn)成的APP固定模板,報(bào)價(jià)是固定的,所需要的功能也是固定的,缺點(diǎn)就是客戶(hù)拿不到源代碼,也不能根據(jù)企業(yè)需求進(jìn)行定制,由于源代碼是封裝的,如果企業(yè)以后想進(jìn)行功能升級(jí)或系統(tǒng)維護(hù)的話,也不能夠?qū)崿F(xiàn),只能重新開(kāi)發(fā)一個(gè)新的軟件。
固定款的APP開(kāi)發(fā)時(shí)間短,約2~3日的時(shí)間即可完成,費(fèi)用大約在幾千到幾萬(wàn)之間。
定制款:定制款是指APP的功能全部重新開(kāi)發(fā),過(guò)程比較繁瑣,需要美工、策劃、APP開(kāi)發(fā)(前臺(tái)/客戶(hù)端/手機(jī)端)、后臺(tái)程序員等工種協(xié)同完成,大型的、功能復(fù)雜的APP甚至需要數(shù)十人的團(tuán)隊(duì)。
由于APP的功能和設(shè)計(jì)都是定制的,因此價(jià)格會(huì)高些。定制款的開(kāi)發(fā)時(shí)間與開(kāi)發(fā)價(jià)格是成正比的,開(kāi)發(fā)時(shí)間長(zhǎng),大約在兩三個(gè)月甚至不定的周期里才能完成,而費(fèi)用大概在幾萬(wàn)甚至十幾萬(wàn)左右。
因此,想要知道開(kāi)發(fā)一款手機(jī)APP需要花費(fèi)多少錢(qián),企業(yè)主首先必須把APP的詳細(xì)需求和功能告知APP開(kāi)發(fā)公司,開(kāi)發(fā)公司才能報(bào)出一個(gè)合理的價(jià)格。
二、手機(jī)APP平臺(tái)不同,制作成本也不一樣
現(xiàn)在市面上流行的手機(jī)APP制作平臺(tái)主要有兩種一般包括兩種系統(tǒng):安卓系統(tǒng)(Android)和蘋(píng)果系統(tǒng)(IOS)。
一般來(lái)說(shuō),制作蘋(píng)果系統(tǒng)的手機(jī)APP軟件費(fèi)用要比安卓平臺(tái)的貴一些,因?yàn)樘O(píng)果公司對(duì)蘋(píng)果平臺(tái)的封閉性和手機(jī)APP開(kāi)發(fā)語(yǔ)言O(shè)bjective-C的難度,都讓APP開(kāi)發(fā)者加大了蘋(píng)果系統(tǒng)手機(jī)APP開(kāi)發(fā)的難度。
三、APP制作成本包含參與人員的工資
通常情況下,開(kāi)發(fā)一款A(yù)PP需要產(chǎn)品經(jīng)理、客戶(hù)端工程師、后端工程師和UI設(shè)計(jì)師各一名,這已經(jīng)是制作手機(jī)APP應(yīng)用軟件比較精簡(jiǎn)的配置了,所以這些參與人員的工資也是包含在APP制作成本當(dāng)中的。這些工作人員的月薪加起來(lái)可能都會(huì)超過(guò)4、5萬(wàn)元。
四、APP開(kāi)發(fā)公司的所在地
需要注意的是,同樣實(shí)力的APP開(kāi)發(fā)公司,在不同的城市也會(huì)導(dǎo)致APP的成本費(fèi)用高一些
微信小程序藍(lán)牙教程--完整版親測(cè)
#使用mpvue 開(kāi)發(fā)小程序過(guò)程中 簡(jiǎn)單介紹一下微信小程序藍(lán)牙連接過(guò)程
#在藍(lán)牙連接的過(guò)程中部分api需要加定時(shí)器延時(shí)1秒到2秒左右再執(zhí)行,原因?yàn)楹尾恢溃〕绦蛴羞@樣的要求
#1.首先是要初始化藍(lán)牙:openBluetoothAdapter()
```js
if (wx.openBluetoothAdapter) {
wx.openBluetoothAdapter({
? ? ? ? success: function(res) {
????????????/* 獲取本機(jī)的藍(lán)牙狀態(tài) */
? ? ? ? ? ? setTimeout(() = {
????????????????getBluetoothAdapterState()
????????????}, 1000)
????????},
? ? ? ? fail: function(err) {
????????????// 初始化失敗
????????}
????})
????} else {????
????}
```
#2.檢測(cè)本機(jī)藍(lán)牙是否可用:
#? 要在上述的初始化藍(lán)牙成功之后回調(diào)里調(diào)用
```js
getBluetoothAdapterState() {
? ? var that= this;
? ? that.toastTitle= '檢查藍(lán)牙狀態(tài)'
wx.getBluetoothAdapterState({
? ? ? ? success: function(res) {
startBluetoothDevicesDiscovery()
},
? ? ? ? fail(res) {
? ? ? ? ? ? console.log(res)
}
})
}
```
#3. 開(kāi)始搜索藍(lán)牙設(shè)備:
```js
startBluetoothDevicesDiscovery() {
? ? var that= this;
? ? setTimeout(() = {
wx.startBluetoothDevicesDiscovery({
? ? ? ? ? ? success: function(res) {
/* 獲取藍(lán)牙設(shè)備列表 */
? ? ? ? ? ? ? ? that.getBluetoothDevices()
},
? ? ? ? ? ? fail(res) {
}
})
}, 1000)
}
```
#4. 獲取搜索到的藍(lán)牙設(shè)備列表
# /* that.deviceName 是獲取到的藍(lán)牙設(shè)備的名稱(chēng), 因?yàn)樗{(lán)牙設(shè)備在安卓和蘋(píng)果手機(jī)上搜到的藍(lán)牙地址顯示是不一樣的,所以根據(jù)設(shè)備名稱(chēng)匹配藍(lán)牙*/
```js
getBluetoothDevices() {
? ? var that= this;
? ? setTimeout(() = {
wx.getBluetoothDevices({
? ? ? ? ? ? services: [],
? ? ? ? ? ? allowDuplicatesKey: false,
? ? ? ? ? ? interval: 0,
? ? ? ? ? ? success: function(res) {
? ? ? ? ? ? ? ? if (res.devices.length 0) {
? ? ? ? ? ? ? ? ? ? if (JSON.stringify(res.devices).indexOf(that.deviceName) !== -1) {
? ? ? ? ? ? ? ? ? ? ? ? for (let i = 0; i res.devices.length; i++) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? if (that.deviceName === res.devices[i].name) {
/* 根據(jù)指定的藍(lán)牙設(shè)備名稱(chēng)匹配到deviceId */
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? that.deviceId = that.devices[i].deviceId;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? setTimeout(() = {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? that.connectTO();
}, 2000);
};
};
} else {
}
} else {
}
},
? ? ? ? ? ? fail(res) {
? ? ? ? ? ? ? ? console.log(res, '獲取藍(lán)牙設(shè)備列表失敗=====')
}
})
}, 2000)
},
```
#5.連接藍(lán)牙
# 匹配到的藍(lán)牙設(shè)備ID 發(fā)送連接藍(lán)牙的請(qǐng)求, 連接成功之后 應(yīng)該斷開(kāi)藍(lán)牙搜索的api,然后去獲取所連接藍(lán)牙設(shè)備的service服務(wù)
```js
connectTO() {
wx.createBLEConnection({
? ? ? ? deviceId: deviceId,
? ? ? ? success: function(res) {
? ? ? ? ? ? that.connectedDeviceId = deviceId;
/* 4.獲取連接設(shè)備的service服務(wù) */
that.getBLEDeviceServices();
wx.stopBluetoothDevicesDiscovery({
? ? ? ? ? ? ? ? success: function(res) {
? ? ? ? ? ? ? ? ? ? console.log(res, '停止搜索')
},
? ? ? ? ? ? ? ? fail(res) {
}
})
},
? ? ? ? fail: function(res) {
}
})
}
```
#6. 獲取藍(lán)牙設(shè)備的service服務(wù),獲取的serviceId有多個(gè)要試著連接最終確定哪個(gè)是穩(wěn)定版本的service 獲取服務(wù)完后獲取設(shè)備特征值
```js
getBLEDeviceServices() {
? ? setTimeout(() = {
wx.getBLEDeviceServices({
? ? ? ? ? ? deviceId: that.connectedDeviceId,
? ? ? ? ? ? success: function(res) {
? ? ? ? ? ? ? ? that.services= res.services
/* 獲取連接設(shè)備的所有特征值 */
that.getBLEDeviceCharacteristics()
},
? ? ? ? ? ? fail: (res) = {
}
})
}, 2000)
},
```
#7.獲取藍(lán)牙設(shè)備特征值
# 獲取到的特征值有多個(gè),最后要用的事能讀,能寫(xiě),能監(jiān)聽(tīng)的那個(gè)值的uuid作為特征值id,
```js
getBLEDeviceCharacteristics() {
? ? ? ? ? ? setTimeout(() = {
wx.getBLEDeviceCharacteristics({
? ? ? ? ? ? ? ? ? ? deviceId: connectedDeviceId,
? ? ? ? ? ? ? ? ? ? serviceId: services[2].uuid,
? ? ? ? ? ? ? ? ? ? success: function(res) {
? ? ? ? ? ? ? ? ? ? ? ? for (var i = 0; i res.characteristics.length; i++) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? if ((res.characteristics[i].properties.notify || res.characteristics[i].properties.indicate)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (res.characteristics[i].properties.read res.characteristics[i].properties.write)) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? console.log(res.characteristics[i].uuid, '藍(lán)牙特征值 ==========')
/* 獲取藍(lán)牙特征值 */
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? that.notifyCharacteristicsId = res.characteristics[i].uuid
// 啟用低功耗藍(lán)牙設(shè)備特征值變化時(shí)的 notify 功能
that.notifyBLECharacteristicValueChange()
}
}
},
? ? ? ? ? ? ? ? ? ? fail: function(res) {
}
})
}, 1000)
},
```
#8.啟動(dòng)notify 藍(lán)牙監(jiān)聽(tīng)功能 然后使用 wx.onBLECharacteristicValueChange用來(lái)監(jiān)聽(tīng)藍(lán)牙設(shè)備傳遞數(shù)據(jù)
#接收到的數(shù)據(jù)和發(fā)送的數(shù)據(jù)必須是二級(jí)制數(shù)據(jù), 頁(yè)面展示的時(shí)候需要進(jìn)行轉(zhuǎn)換
```js
notifyBLECharacteristicValueChange() { // 啟用低功耗藍(lán)牙設(shè)備特征值變化時(shí)的 notify 功能
? ? ? ? ? ? var that= this;
? ? ? ? ? ? console.log('6.啟用低功耗藍(lán)牙設(shè)備特征值變化時(shí)的 notify 功能')
wx.notifyBLECharacteristicValueChange({
? ? ? ? ? ? ? ? state: true,
? ? ? ? ? ? ? ? deviceId: that.connectedDeviceId,
? ? ? ? ? ? ? ? serviceId: that.notifyServicweId,
? ? ? ? ? ? ? ? characteristicId: that.notifyCharacteristicsId,
? ? ? ? ? ? ? ? complete(res) {
/*用來(lái)監(jiān)聽(tīng)手機(jī)藍(lán)牙設(shè)備的數(shù)據(jù)變化*/
wx.onBLECharacteristicValueChange(function(res) {
/**/
? ? ? ? ? ? ? ? ? ? ? ? that.balanceData += that.buf2string(res.value)
? ? ? ? ? ? ? ? ? ? ? ? that.hexstr += that.receiveData(res.value)
})
},
? ? ? ? ? ? ? ? fail(res) {
? ? ? ? ? ? ? ? ? ? console.log(res, '啟用低功耗藍(lán)牙設(shè)備監(jiān)聽(tīng)失敗')
? ? ? ? ? ? ? ? ? ? that.measuringTip(res)
}
})
},
/*轉(zhuǎn)換成需要的格式*/
buf2string(buffer) {
? ? ? ? ? ? ? ? ? ? var arr = Array.prototype.map.call(new Uint8Array(buffer), x = x)
? ? ? ? ? ? ? ? ? ? return arr.map((char, i) = {
? ? ? ? ? ? ? ? ? ? ? ? return String.fromCharCode(char);
? ? ? ? ? ? ? ? ? ? }).join('');
},
receiveData(buf) {
return this.hexCharCodeToStr(this.ab2hex(buf))
},
/*轉(zhuǎn)成二進(jìn)制*/
ab2hex (buffer) {
? ? ? ? ? ? ? var hexArr = Array.prototype.map.call(
? ? ? ? ? ? ? ? ? new Uint8Array(buffer), function (bit) {
? ? ? ? ? ? ? ? ? ? ? return ('00' + bit.toString(16)).slice(-2)
}
)
? ? ? ? ? ? ? return hexArr.join('')
},
/*轉(zhuǎn)成可展會(huì)的文字*/
hexCharCodeToStr(hexCharCodeStr) {
? ? ? ? ? ? ? var trimedStr = hexCharCodeStr.trim();
? ? ? ? ? ? ? var rawStr = trimedStr.substr(0, 2).toLowerCase() === '0x' ? trimedStr.substr(2) : trimedStr;
? ? ? ? ? ? ? var len = rawStr.length;
? ? ? ? ? ? ? var curCharCode;
? ? ? ? ? ? ? var resultStr= [];
? ? ? ? ? ? ? for (var i = 0; i len; i = i+ 2) {
? ? ? ? ? ? ? ? ? curCharCode = parseInt(rawStr.substr(i, 2), 16);
? ? ? ? ? ? ? ? ? resultStr.push(String.fromCharCode(curCharCode));
}
? ? ? ? ? ? ? return resultStr.join('');
},
```
# 向藍(lán)牙設(shè)備發(fā)送數(shù)據(jù)
```js
sendData(str) {
? ? let that= this;
? ? let dataBuffer = new ArrayBuffer(str.length)
? ? let dataView = new DataView(dataBuffer)
? ? for (var i = 0; i str.length; i++) {
? ? ? ? dataView.setUint8(i, str.charAt(i).charCodeAt())
}
? ? let dataHex = that.ab2hex(dataBuffer);
? ? this.writeDatas = that.hexCharCodeToStr(dataHex);
wx.writeBLECharacteristicValue({
? ? ? ? deviceId: that.connectedDeviceId,
? ? ? ? serviceId: that.notifyServicweId,
? ? ? ? characteristicId: that.notifyCharacteristicsId,
? ? ? ? value: dataBuffer,
? ? ? ? success: function (res) {
? ? ? ? ? ? console.log('發(fā)送的數(shù)據(jù):' + that.writeDatas)
? ? ? ? ? ? console.log('message發(fā)送成功')
},
? ? ? ? fail: function (res) {
},
? ? ? ? complete: function (res) {
}
})
},
```
# 當(dāng)不需要連接藍(lán)牙了后就要關(guān)閉藍(lán)牙,并關(guān)閉藍(lán)牙模塊
```js
// 斷開(kāi)設(shè)備連接
closeConnect() {
if (that.connectedDeviceId) {
wx.closeBLEConnection({
? ? ? ? ? ? deviceId: that.connectedDeviceId,
? ? ? ? ? ? success: function(res) {
that.closeBluetoothAdapter()
},
? ? ? ? ? ? fail(res) {
}
})
} else {
that.closeBluetoothAdapter()
}
},
// 關(guān)閉藍(lán)牙模塊
closeBluetoothAdapter() {
wx.closeBluetoothAdapter({
? ? ? ? success: function(res) {
},
? ? ? ? fail: function(err) {
}
})
},
```
#在向藍(lán)牙設(shè)備傳遞數(shù)據(jù)和接收數(shù)據(jù)的過(guò)程中,并未使用到read的API 不知道有沒(méi)有潛在的問(wèn)題,目前線上運(yùn)行為發(fā)現(xiàn)任何的問(wèn)題
#今天的藍(lán)牙使用心得到此結(jié)束,謝謝
關(guān)于安卓小程序開(kāi)發(fā)教程和安卓小程序開(kāi)發(fā)入門(mén)的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。