?(填下坑,把我之前答應(yīng)大家的完整軟件代碼翻出來(lái),供大家一起學(xué)習(xí))
可以看看實(shí)現(xiàn)效果先:?
智能家居APP展示視頻(含源碼)_嗶哩嗶哩_bilibili
目錄
項(xiàng)目說(shuō)明
功能介紹
系統(tǒng)功能需求
具體實(shí)現(xiàn)的軟件功能
?1、地圖定位
2、藍(lán)牙按鈕
3、遠(yuǎn)端控制?
核心代碼展示說(shuō)明
藍(lán)牙控制代碼說(shuō)明
1、藍(lán)牙工具類:
?2、判斷藍(lán)牙是否連接
源碼及相關(guān)Android電子書鏈接:源碼及其Android相關(guān)書籍
項(xiàng)目說(shuō)明
這個(gè)是我畢業(yè)設(shè)計(jì)的完整軟件項(xiàng)目,其實(shí)較為簡(jiǎn)陋,讀者可以在此基礎(chǔ)上二次開(kāi)發(fā),其包含三個(gè)功能,點(diǎn)擊地圖定位(設(shè)置家庭地址)、藍(lán)牙控制(用于控制CC2530硬件,實(shí)質(zhì)只是完成了SPP協(xié)議的數(shù)據(jù)上傳及發(fā)送)、遠(yuǎn)端控制(WI-FI)。而我的畢業(yè)設(shè)計(jì)總體而言,包含軟件、硬件兩大板塊,軟件就是這個(gè)基于Android實(shí)現(xiàn)的智能家居APP,其中點(diǎn)擊地圖定位功能,及其附加功能我已經(jīng)在往期文章中詳細(xì)闡述,鏈接如下:
Android如何實(shí)現(xiàn)地圖定位?Android studio+百度地圖API+Android6.0系統(tǒng)實(shí)現(xiàn)地圖顯示、地址設(shè)置、點(diǎn)擊地圖定位功能(詳細(xì))
硬件板塊分為三個(gè)內(nèi)容:即基于C8T6實(shí)現(xiàn)WI-FI遠(yuǎn)端控制、基于CC2530實(shí)現(xiàn)簡(jiǎn)易智能家居組網(wǎng)、基于LD3320實(shí)現(xiàn)語(yǔ)音識(shí)別控制。具體操作實(shí)現(xiàn)步驟,可以詳見(jiàn)我往期文章,鏈接如下:
STM32F103C8T6+ESP8266+MQTT使用最新版的oneNet可視化View實(shí)現(xiàn)遠(yuǎn)程控制(詳細(xì))
實(shí)現(xiàn)語(yǔ)音識(shí)別系統(tǒng):手把手教你使用STM32C8T6和LD3320(SPI通信版)實(shí)現(xiàn)語(yǔ)音識(shí)別
功能介紹
系統(tǒng)功能需求
功能需求,其一產(chǎn)品的Android手機(jī)端可實(shí)現(xiàn)點(diǎn)擊定位功能,當(dāng)定位在設(shè)定的家附近時(shí),可選擇跳轉(zhuǎn)至遠(yuǎn)端控制,提前打開(kāi)路燈,并可根據(jù)家中實(shí)時(shí)溫濕度數(shù)據(jù),開(kāi)關(guān)空調(diào)設(shè)備且提供遠(yuǎn)端的洗衣機(jī)開(kāi)關(guān);其二則是在回到家中后,門口的聲控?zé)簟N房的煙霧報(bào)警器、窗口的窗簾、客廳的風(fēng)扇全部自動(dòng)控制,以上包括需要手動(dòng)控制的燈關(guān)皆由Zigbee技術(shù)進(jìn)行組網(wǎng),其中藍(lán)牙模塊HC-05作為手動(dòng)控制設(shè)備的中間媒介;其三是在臥室設(shè)置一個(gè)語(yǔ)音控制系統(tǒng),既可以控制燈光,同時(shí)也能控制風(fēng)扇等設(shè)備。?
具體實(shí)現(xiàn)的軟件功能
?1、地圖定位
一套基于Android 4.0及以上版本設(shè)備的應(yīng)用程序接口,所實(shí)現(xiàn)的功能由普通地圖、衛(wèi)星地圖的切換,可以查看路況圖和熱力圖,同時(shí)可以顯示當(dāng)前所在地區(qū),縮放當(dāng)前地圖視野,且可以點(diǎn)擊地圖查看當(dāng)前地圖的經(jīng)緯度。由于要配合智能家居的遠(yuǎn)程控制系統(tǒng),所以另外添加了家庭地址的設(shè)置功能。
2、藍(lán)牙按鈕
藍(lán)牙按鈕功能程序的本質(zhì)就是藍(lán)牙串口通訊,該通訊的實(shí)現(xiàn)是基于SPP協(xié)議(Serial Port Profile),它能夠建立藍(lán)牙設(shè)備之間串口傳輸數(shù)據(jù)的功能程序而藍(lán)牙串口旨在解決如何確保兩種不同裝置(通信的兩端)應(yīng)用程序間有完整通信路徑的問(wèn)題,其具體實(shí)現(xiàn)功能是完成Android手機(jī)對(duì)藍(lán)牙模塊HC-05的控制,進(jìn)而實(shí)現(xiàn)手動(dòng)控制Zigbee組網(wǎng)的智能家居系統(tǒng),在尚未連接時(shí),彈窗出現(xiàn)提示并給出返回和刷新功能,連接成功后出現(xiàn)按鈕界面可以通過(guò)藍(lán)牙指令控制家居設(shè)備,同時(shí),當(dāng)斷開(kāi)藍(lán)牙設(shè)備后將重新出現(xiàn)藍(lán)牙選擇界面并給出提示。
?
?
3、遠(yuǎn)端控制?
遠(yuǎn)程控制功能程序是用One Net開(kāi)發(fā)平臺(tái)的可視化View,設(shè)計(jì)的一款應(yīng)用,利用MQTT協(xié)議進(jìn)行數(shù)據(jù)的上傳和命令下發(fā),以網(wǎng)頁(yè)的形式下發(fā)和數(shù)據(jù)上傳,即該功能界面不是Android studio設(shè)計(jì)的,是通過(guò)Android端進(jìn)行程序的開(kāi)啟。
核心代碼展示說(shuō)明
關(guān)于地圖定位方面和遠(yuǎn)端控制兩大功能,不做過(guò)多的解釋說(shuō)明,因?yàn)檫h(yuǎn)端控制也只是通過(guò)Android端打開(kāi)一個(gè)網(wǎng)絡(luò)端的應(yīng)用程序,它之所以會(huì)出現(xiàn)閃退的現(xiàn)象,是因?yàn)?/span>它的實(shí)現(xiàn)需要在開(kāi)啟權(quán)限的同時(shí),打開(kāi)證書信用確保打開(kāi)的HTTPS是安全可靠的,否則當(dāng)打開(kāi)云臺(tái)網(wǎng)頁(yè)應(yīng)用時(shí)會(huì)出現(xiàn)閃退現(xiàn)象,且因?yàn)樵贏ndroid 5.0之后,默認(rèn)情況下,不得載入http和https的混合體,有必要設(shè)置webview,讓它可以裝載混合網(wǎng)絡(luò)協(xié)議的內(nèi)容。代碼鏈接如下:
解決Android端打開(kāi)OneNet平臺(tái)的可視化view閃退問(wèn)題
藍(lán)牙控制代碼說(shuō)明
?那么我們的難點(diǎn)來(lái)到了藍(lán)牙控制功能,首先需要明白,它就是一個(gè)藍(lán)牙通訊app,和大家在應(yīng)用商店下載的那些SPP軟件的內(nèi)核沒(méi)有任何區(qū)別,總而言之本質(zhì)是一樣的。而我所做的,只是創(chuàng)建了一個(gè)丑不拉幾的,只適用于我系統(tǒng)的界面而已。這其中,我所解決的難點(diǎn)有,關(guān)于藍(lán)牙數(shù)據(jù)的上傳與手機(jī)數(shù)據(jù)發(fā)送的實(shí)現(xiàn)、藍(lán)牙斷聯(lián)后如何出現(xiàn)彈窗進(jìn)行重新搜索連接、日志的上下滑動(dòng)的實(shí)現(xiàn)等等。
?還有一點(diǎn)需要申明的,我所調(diào)用的,是一位大佬寫的藍(lán)牙工具類,這個(gè)對(duì)我的幫助很大,我忘記是誰(shuí)了,但是不管怎么樣,感恩?。?!
1、藍(lán)牙工具類:
BLESPPUtils.java文件,代碼如下,其中包含了,藍(lán)牙源的搜索、藍(lán)牙開(kāi)啟、保留日志、接受和發(fā)送字節(jié)數(shù)據(jù)等等。代碼我就不貼了,具體可以看源碼
?2、判斷藍(lán)牙是否連接
/**
* 判斷藍(lán)牙是否斷開(kāi)連接
*/
//The BroadcastReceiver that listens for bluetooth broadcasts
private final BroadcastReceiver BTReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action) && menu_flag==0) {
Intent intent_context = getIntent();
finish();
startActivity(intent_context);
//Do something if disconnected
Toast.makeText(getApplicationContext(), "不好意思,檢測(cè)到設(shè)備已經(jīng)斷開(kāi)連接,正在重啟", Toast.LENGTH_SHORT).show();
}
}
};
3、日志的上下滑動(dòng)實(shí)現(xiàn)(TextView)
?這個(gè)是因?yàn)槲也?,所以糾結(jié)了好久,其實(shí)只需要在layout中設(shè)置以下即可,具體位置如圖:
?總結(jié)一下:關(guān)于我智能家居軟件而言,其實(shí)也是我通過(guò)網(wǎng)絡(luò)資源的整合與修改實(shí)現(xiàn)的,所以我認(rèn)為取之于此,回饋于此,想著把我所做的這個(gè)小小項(xiàng)目發(fā)出來(lái),也能夠幫助到一些人。雖然這個(gè)軟件界面做的很丑,很多功能或許還不完善,但也確實(shí)傾盡不少心血,而Android我也只是學(xué)了一些皮毛,這里我也會(huì)放一些我看過(guò)的Android電子書,放在源碼的鏈接里,希望可以與大家一起學(xué)習(xí)進(jìn)步。如果大家覺(jué)得有幫助,可以關(guān)注一波,共勉!文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-742356.html
哦,對(duì)了,我打算后面聊聊cc2530及其相關(guān)的協(xié)議棧,關(guān)于無(wú)線傳感網(wǎng)絡(luò)的,我本科大部分時(shí)間就學(xué)這玩意了,打算好好總結(jié)一下所學(xué)知識(shí),以免出現(xiàn)遺忘。以上文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-742356.html
源碼及相關(guān)Android電子書鏈接:源碼及其Android相關(guān)書籍
到了這里,關(guān)于使用Android studio完成簡(jiǎn)易智能家居APP的制作(含源碼工程包)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!