亚洲欧美国产日韩综合一卡_人成在线精品日韩_国产成人av在线播放不卡_小仙女导航精品导航_日本最新色网网址_中文無碼久久亞洲_蜜臀av午夜在线_精品三級內地國產在線觀看_狼人色精品视频给你_日朝在线黄色视频

安卓小程序開發(fā)教程(安卓小程序開發(fā)入門)

小程序開發(fā) 3650
今天給各位分享安卓小程序開發(fā)教程的知識(shí),其中也會(huì)對(duì)安卓小程序開發(fā)入門進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、微信小程序來啦 關(guān)于它的使用你知道怎么操作嗎

今天給各位分享安卓小程序開發(fā)教程的知識(shí),其中也會(huì)對(duì)安卓小程序開發(fā)入門進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!

本文目錄一覽:

微信小程序來啦 關(guān)于它的使用你知道怎么操作嗎

今天凌晨剛過,此前傳聞已久的微信小程序功能就正式的來到了大家面前。作為繼公眾號(hào)、服務(wù)號(hào)、企業(yè)號(hào)之后的微信又一重大功能,相信很多朋友都對(duì)它十分期待。那么小程序究竟是什么?怎么找到小程序?小程序有哪些使用技巧?小程序能否干掉APP?它又會(huì)為行業(yè)帶來哪些改變呢?別著急,在接下來的這篇文章里,你將找到你想要的全部答案。

微信小程序

什么是小程序?

根據(jù)微信官方給這款產(chǎn)品的定義來看,微信小程序?qū)儆谝环N無需安裝,即用即開的“手機(jī)應(yīng)用”。用戶通過掃描二維碼、使用搜索功能以及點(diǎn)擊朋友分享給自己的鏈接就可以進(jìn)入小程序。不過值得注意的是,目前小程序還不支持分享到朋友圈。

從目前的使用上看,小程序在很多方面做得都十分接近APP??梢栽谧烂鎰?chuàng)建圖標(biāo)、支持后臺(tái)單獨(dú)顯示、以及擁有美觀的UI界面。

什么是微信小程序

如何找到小程序?

和傳統(tǒng)的應(yīng)用程序不同,小程序并不能在手機(jī)的應(yīng)用商店中進(jìn)行搜索。而其“父親”微信內(nèi)同樣沒有提供小程序商店的入口。那么,這樣的情況下我們?cè)撊绾握业叫〕绦蚰?

微信官方為我們提供了三種進(jìn)入到小程序的方式。在知道小程序名字的時(shí)候,用戶可以通過搜索功能直接對(duì)其進(jìn)行搜索。而微信更希望的小程序使用場(chǎng)景則是通過掃碼進(jìn)入。例如:在公交站,你可以直接掃描站牌的二維碼獲取公交到達(dá)的時(shí)間信息等等。除此之外,微信還為用戶提供了分享功能,當(dāng)然,目前分享功能僅限分享給朋友或羣組,還不能分享到朋友圈。

如何找到微信小程序

當(dāng)然,對(duì)于安卓用戶來說,在小程序頁面內(nèi)也為用戶提供了添加到桌面的選項(xiàng),讓用戶可以更加方便的打開常用的小程序。微信內(nèi)的“發(fā)現(xiàn)”當(dāng)中,也為使用過的小程序提供了入口。

怎么使用小程序小程序使用技巧

事實(shí)上,小程序的使用邏輯與Apps的使用邏輯是相同的,小程序更像是輕量版的APP應(yīng)用。不過值得注意的是,小程序本身的屬性決定了它有著很多自己的特色。接下來,筆者就與大家一起聊一聊小程序的使用技巧。

如何使用微信小程序

安卓用戶可將小程序發(fā)送到桌面

因?yàn)橄到y(tǒng)更加開放的原因,安卓用戶將可以直接將小程序發(fā)送到桌面生成程序圖標(biāo)。根據(jù)筆者對(duì)小程序圖標(biāo)設(shè)計(jì)的觀察,目前小程序和APP的圖標(biāo)設(shè)計(jì)存在著一定的區(qū)別。不過筆者還不確定究竟是巧合還是軟件開發(fā)商的刻意為之。

如何將小程序發(fā)送到桌面

微信小程序圖標(biāo)有著非常統(tǒng)一的規(guī)范,每個(gè)小程序的圖標(biāo)都是菱角分明的正四邊形。這一點(diǎn)與眾多安卓瀏覽器“將圖標(biāo)發(fā)送到桌面”的功能十分相似。(圖中第一排為小程序圖標(biāo),第二排為瀏覽器書簽圖標(biāo),第三排為APP圖標(biāo))

通過掃一掃功能打開應(yīng)用不支持長(zhǎng)按識(shí)別

為了增加與服務(wù)號(hào)之間的區(qū)分度,微信在入口、推薦方式等很多途徑對(duì)小程序作出了限制。除了我們上文已經(jīng)提到的不支持分享到朋友圈之外,微信甚至對(duì)于小程序通過掃一掃進(jìn)入到方式也作出了限制。用戶無法通過識(shí)別二維碼的方式進(jìn)入到小程序當(dāng)中,而只能通過掃碼的方式進(jìn)入

小程序會(huì)消耗內(nèi)存

我們都知道,無需安裝,即用即開是小程序的一大優(yōu)點(diǎn)。不過這并不意味著小程序可以逆天到不消耗資源。當(dāng)我們使用微信打開小程序的時(shí)候,微信所占用的內(nèi)存資源是會(huì)明顯上升的。

小程序消耗的內(nèi)存是多少

小程序的優(yōu)勢(shì):沒有惱人的通知

除此之外,沒有惱人的通知同樣是小程序的一大優(yōu)勢(shì)。舉個(gè)例子,在不進(jìn)行通知管理的情況下,微信視頻在后臺(tái)運(yùn)行時(shí)視頻內(nèi)容推薦總會(huì)不時(shí)彈出。不過如果使用小程序,這些惱人的推薦內(nèi)容就不會(huì)再出現(xiàn)了。不僅如此,可能是小程序推廣期的原因,目前使用小程序觀看視頻即使不是會(huì)員也可以觀看5s廣告后跳過廣告,體驗(yàn)更加出色。

目前小程序遍及的類目

目前, 微信官方已經(jīng)開放了包括商業(yè)服務(wù)、公益、IT科技、餐飲、旅游、電商平臺(tái)等18個(gè)大類的開發(fā),通過微信小程序,我們可以完成購物、外賣、生活服務(wù)等一系列的活動(dòng)。不過值得注意的是,很多人關(guān)注的“游戲”類目,目前還未開放,所以如果你想玩到小程序游戲,可能還要多等一等。

小程序優(yōu)勢(shì)

小程序干掉APP?

在小程序發(fā)布之后,有關(guān)小程序干掉APP的言論在互聯(lián)網(wǎng)上可謂是層出不窮。那么接下來,我們就也來談一談,小程序究竟能否干掉APP。

在筆者前段時(shí)間有關(guān)小程序的文章中就曾提到:小程序更像是基于H5的“云應(yīng)用”,而隨著云技術(shù)的逐漸普及,云應(yīng)用會(huì)是未來幾乎已無懸念。不過,要說微信小程序?qū)?huì)干掉APP們,筆者依舊認(rèn)為是一個(gè)“偽命題”。

首先,微信本身的屬性就已經(jīng)限制了它成為“革命者”的可能。就目前而言,微信本身仍然在APP的范疇之內(nèi);而且,雖然在國內(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)行探討了。不過由于云計(jì)算能力和網(wǎng)絡(luò)方面的限制,目前還沒有一家稱得上成功。FireFox OS前年末已經(jīng)“犧牲”,YUNOS的云端應(yīng)用被壓縮在一個(gè)最左屏內(nèi),仍需兼容Android生存,Chrome OS設(shè)備雖有所增長(zhǎng),但歸其原因更多的是因?yàn)閮r(jià)格低廉。

綜合來看,似乎在目前的環(huán)境下討論“云應(yīng)用”普及,還為時(shí)過早。

● 小程序會(huì)帶來哪些改變?

那么,既然不能干掉APP,小程序又能帶來哪些改變呢?難道小程序的作用真的僅限于“拯救16GB iPhone”嗎?筆者認(rèn)為,微信小程序的到來至少會(huì)帶來下面兩點(diǎn)影響:

創(chuàng)業(yè)者新的狂歡

毫無疑問,對(duì)于很多創(chuàng)業(yè)者來說,小程序?qū)?huì)成為他們新的創(chuàng)業(yè)風(fēng)口。依托著微信背后巨大的流量資源,風(fēng)口上的小程序開發(fā)者極有可能會(huì)成為下一批“飛豬”。對(duì)于開發(fā)者而言,小程序擁有更低的開發(fā)時(shí)間和人力資本,簡(jiǎn)單來說就是“省錢”,而且它還更容易更新和維護(hù),微信方面對(duì)于小程序的政策也十分適合創(chuàng)業(yè)者們:修改無需等待審覈,迭代后馬上能看到效果,這又為開發(fā)者省去了很多麻煩和時(shí)間成本。

其實(shí),這樣的橋段在此之前的公眾號(hào)和服務(wù)號(hào)上就曾上演過。每一次新的東西出現(xiàn)總會(huì)有一批抓住紅利獲得成功的人。小程序自然也是其一。

H5技術(shù)的普及

除此之外,筆者認(rèn)為小程序可能會(huì)帶來的另一大影響則在HTML5技術(shù)上。微信小程序是基于H5開發(fā)的程序,但用了類似于JS-SDK的框架(百度以前是clouda框架),提供了更多的接口和組件,讓程序更加流暢,體驗(yàn)接近原生APP(Native App)。從根本上講,小程序雖然不是H5,但卻與H5有著千絲萬縷的聯(lián)系。

依靠著微信的影響力,小程序或可以讓如今混亂和普及度不高的H5技術(shù)變得更加規(guī)范和大眾化。這一點(diǎn)無論對(duì)網(wǎng)頁技術(shù)的發(fā)展,還是對(duì)于未來云應(yīng)用的普及,都是強(qiáng)有力的助燃劑。

后序:致敬蘋果的微信小程序

直播小程序系統(tǒng)怎么開發(fā),開發(fā)需要多少錢

直播小程序系統(tǒng)怎么開發(fā),開發(fā)需要多少錢

如今,不少企業(yè)都想擁有屬于自己企業(yè)或產(chǎn)品的手機(jī)APP,但其中最困擾企業(yè)主的問題就是:開發(fā)一款手機(jī)APP到底需要多少錢?

簡(jiǎn)單點(diǎn)來說,要視手機(jī)APP的需求及質(zhì)量而言,價(jià)位一般在幾千到十幾萬左右,更高端的價(jià)格更高。

今天,我們就來詳細(xì)分析一下這個(gè)問題,請(qǐng)繼續(xù)往下看吧。 

一、APP開發(fā)款式分為固定款和定制款,兩者的價(jià)格均不相同

固定款:是指直接套用已有的、現(xiàn)成的APP固定模板,報(bào)價(jià)是固定的,所需要的功能也是固定的,缺點(diǎn)就是客戶拿不到源代碼,也不能根據(jù)企業(yè)需求進(jìn)行定制,由于源代碼是封裝的,如果企業(yè)以后想進(jìn)行功能升級(jí)或系統(tǒng)維護(hù)的話,也不能夠?qū)崿F(xiàn),只能重新開發(fā)一個(gè)新的軟件。

固定款的APP開發(fā)時(shí)間短,約2~3日的時(shí)間即可完成,費(fèi)用大約在幾千到幾萬之間。

定制款:定制款是指APP的功能全部重新開發(fā),過程比較繁瑣,需要美工、策劃、APP開發(fā)(前臺(tái)/客戶端/手機(jī)端)、后臺(tái)程序員等工種協(xié)同完成,大型的、功能復(fù)雜的APP甚至需要數(shù)十人的團(tuán)隊(duì)。

由于APP的功能和設(shè)計(jì)都是定制的,因此價(jià)格會(huì)高些。定制款的開發(fā)時(shí)間與開發(fā)價(jià)格是成正比的,開發(fā)時(shí)間長(zhǎng),大約在兩三個(gè)月甚至不定的周期里才能完成,而費(fèi)用大概在幾萬甚至十幾萬左右。

因此,想要知道開發(fā)一款手機(jī)APP需要花費(fèi)多少錢,企業(yè)主首先必須把APP的詳細(xì)需求和功能告知APP開發(fā)公司,開發(fā)公司才能報(bào)出一個(gè)合理的價(jià)格。

二、手機(jī)APP平臺(tái)不同,制作成本也不一樣

現(xiàn)在市面上流行的手機(jī)APP制作平臺(tái)主要有兩種一般包括兩種系統(tǒng):安卓系統(tǒng)(Android)和蘋果系統(tǒng)(IOS)。

一般來說,制作蘋果系統(tǒng)的手機(jī)APP軟件費(fèi)用要比安卓平臺(tái)的貴一些,因?yàn)樘O果公司對(duì)蘋果平臺(tái)的封閉性和手機(jī)APP開發(fā)語言O(shè)bjective-C的難度,都讓APP開發(fā)者加大了蘋果系統(tǒng)手機(jī)APP開發(fā)的難度。

三、APP制作成本包含參與人員的工資

通常情況下,開發(fā)一款A(yù)PP需要產(chǎn)品經(jīng)理、客戶端工程師、后端工程師和UI設(shè)計(jì)師各一名,這已經(jīng)是制作手機(jī)APP應(yīng)用軟件比較精簡(jiǎn)的配置了,所以這些參與人員的工資也是包含在APP制作成本當(dāng)中的。這些工作人員的月薪加起來可能都會(huì)超過4、5萬元。

四、APP開發(fā)公司的所在地

需要注意的是,同樣實(shí)力的APP開發(fā)公司,在不同的城市也會(huì)導(dǎo)致APP的成本費(fèi)用高一些

微信小程序藍(lán)牙教程--完整版親測(cè)

#使用mpvue 開發(fā)小程序過程中 簡(jiǎn)單介紹一下微信小程序藍(lán)牙連接過程

#在藍(lán)牙連接的過程中部分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. 開始搜索藍(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è)備的名稱, 因?yàn)樗{(lán)牙設(shè)備在安卓和蘋果手機(jī)上搜到的藍(lán)牙地址顯示是不一樣的,所以根據(jù)設(shè)備名稱匹配藍(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è)備名稱匹配到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)該斷開藍(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è),最后要用的事能讀,能寫,能監(jiān)聽的那個(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)聽功能 然后使用 wx.onBLECharacteristicValueChange用來監(jiān)聽藍(lán)牙設(shè)備傳遞數(shù)據(jù)

#接收到的數(shù)據(jù)和發(fā)送的數(shù)據(jù)必須是二級(jí)制數(shù)據(jù), 頁面展示的時(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) {

/*用來監(jiān)聽手機(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)聽失敗')

? ? ? ? ? ? ? ? ? ? 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

// 斷開設(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ù)的過程中,并未使用到read的API 不知道有沒有潛在的問題,目前線上運(yùn)行為發(fā)現(xiàn)任何的問題

#今天的藍(lán)牙使用心得到此結(jié)束,謝謝

關(guān)于安卓小程序開發(fā)教程和安卓小程序開發(fā)入門的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

掃碼二維碼