日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

智能生活 App SDK 开发入门教程【内附代码段 】

發布時間:2023/12/18 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 智能生活 App SDK 开发入门教程【内附代码段 】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

涂鴉智能生活 App SDK 安卓版提供了即全面又靈活的 IoT App 開發模式。大家可以通過本教程在兩小時內快速開發一款自己的 IoT App,并實現如下功能:

  • ?使用手機號碼注冊并登錄一個用戶賬號。
  • ?在登錄狀態下創建一個家庭,并查看和修改家庭信息。
  • ?使用熱點模式為設備配網并連接設備。
  • ?使用自己創建的 App 控制該設備。

大家可以前往 App 開發平臺查看本教程中的示例代碼,本次教程按功能模塊進行分類,方便大家可以快速找到對應的代碼參考學習。

效果展示

學習完本教程,并且結合一定的面板開發后,大家可以創建出一個類似以下安卓 App 的 Demo。

準備工作

在您開始本教程前,請先確保您已經 :

  • 在涂鴉 IoT 平臺注冊賬號并創建 App,獲取 SDK 的 AppKey 和 AppSecret。

  • 使用 Android Studio 將安卓版智能生活 App SDK 集成到項目中。

  • 第一步:注冊用戶賬號

    本模塊中,僅演示使用手機號注冊登錄。除此以外,涂鴉智能生活 App SDK 還提供了郵箱、第三方、匿名等多種注冊登錄方式,按需選擇即可。

    注冊用戶賬號時:

    • 需要提供?countryCode?參數來區分注冊地區,用于就近選擇涂鴉 IoT 平臺的可用區。如中國大陸為?86,美國為?1。

    • 之后將頻繁地調用對象?User。它存儲了當前用戶的所有信息,通過?TuyaHomeSdk.getUserInstance()?獲取到?ITuyaUser,它提供了相關的登錄注冊方法。

    查詢驗證碼服務可用地區

    為了加強用戶信息的數據安全,涂鴉優化驗證碼和添加了賬號限制。只有驗證碼服務可用的地區,才可以發送驗證碼。大家需要先查詢自己的開發者賬號是否已經在涂鴉 IoT 平臺開通驗證碼服務的可用地區列表。

    TuyaHomeSdk.getUserInstance().getWhiteListWhoCanSendMobileCodeSuccess(new IWhiteListCallback() {@Overridepublic void onSuccess(WhiteList whiteList) {Toast.makeText(mContext, "Whitelist Success:" + whiteList.getCountryCodes(), Toast.LENGTH_SHORT).show();}@Overridepublic void onError(String code, String error) {Toast.makeText(mContext, "code: " + code + "error:" + error, Toast.LENGTH_SHORT).show();}});

    返回值?whiteList?表示一個或多個國家或地區,以?,?隔開取值,例如?86?和?01。有關可用區編號列表。

    目前中國大陸默認已開通驗證碼服務。

    獲取注冊賬號的驗證碼

    與大部分注冊流程類似,用戶必須先獲取驗證碼。無論是手機或是郵箱,都可以使用統一的獲取驗證碼接口在注冊及后續密碼修改,驗證碼登錄,信息完善等操作中獲取相應的驗證碼。

    TuyaHomeSdk.getUserInstance().sendVerifyCodeWithUserName(String userName, String region, String countryCode, int type, IResultCallback callback);

    參數說明

    參數說明
    userName手機號碼/郵箱賬號
    region區域,默認填寫:“” 即可
    countryCode手機區號:如 “86”
    callback回調
    type發送驗證碼類型:
    1:注冊
    2:登錄
    3:重置密碼

    TuyaHomeSdk.getUserInstance().sendVerifyCodeWithUserName("xxx6/7825***66@123.com", "", "86", 1/2/3, new IResultCallback() {@Overridepublic void onError(String code, String error) {Toast.makeText(mContext, "code: " + code + "error:" + error, Toast.LENGTH_SHORT).show();}@Overridepublic void onSuccess() {Toast.makeText(mContext, "Get code success:", Toast.LENGTH_SHORT).show();}});

    使用手機號碼注冊賬號

    使用手機號碼注冊賬號前,需要調用獲取驗證碼接口,傳入相應?type。然后調用號碼注冊接口,需要上傳國家碼、手機號碼、密碼以及獲取到的驗證碼。

    TuyaHomeSdk.getUserInstance().registerAccountWithPhone("86","13666666666","123456","124332", new IRegisterCallback() {@Overridepublic void onSuccess(User user) {Toast.makeText(mContext, "Register success", Toast.LENGTH_SHORT).show();}@Overridepublic void onError(String code, String error) {Toast.makeText(mContext, "code: " + code + "error:" + error, Toast.LENGTH_SHORT).show();} });

    使用手機號碼登錄賬號

    注冊成功后,就可以使用國家碼、手機號和密碼登錄賬號。

    TuyaHomeSdk.getUserInstance().loginWithPhonePassword("86", "13666666666", "123456", new ILoginCallback() {@Overridepublic void onSuccess(User user) {Toast.makeText(mContext, "Login success:" +TuyaHomeSdk.getUserInstance().getUser().getUsername(), Toast.LENGTH_SHORT).show();}@Overridepublic void onError(String code, String error) {Toast.makeText(mContext, "code: " + code + "error:" + error, Toast.LENGTH_SHORT).show();} });

    第二步:創建和管理家庭

    家庭是智能生活 App SDK 開發下實際場景的最大單位。IoT 設備的添加、編輯、移除、狀態變化的監聽基于家庭下。可以在用戶賬號下創建任意多個家庭;在指定家庭下,還可以添加并管理多個房間和用戶成員。

    操作家庭模塊時,將頻繁調用對象?ITuyaHomeManager?和?HomeBean。

    對象說明
    HomeBean存放了家庭的基本信息,如 ID、名字、位置等。
    TuyaSmartHome存放了家庭相關的所有功能,如單個家庭信息管理,家庭下的家庭成員管理,房間管理等。ITuyaHomeManager?需要使用正確的?homeId?用?TuyaHomeSdk.getHomeManagerInstance()?進行初始化。

    創建家庭

    在登錄狀態下可以創建家庭。之后對于房間、成員、設備等對象的管理都基于家庭下。創建家庭需要通過?ITuyaHomeManager?調用創建家庭接口

    TuyaHomeSdk.getHomeManagerInstance().createHome(name, lon, lat, geoName, rooms, new ITuyaHomeResultCallback() {@Overridepublic void onSuccess(HomeBean bean) {// do something}@Overridepublic void onError(String errorCode, String errorMsg) {// do something}});

    查詢家庭列表

    在登錄狀態下可以直接獲取家庭列表。如果還沒創建過家庭,將返回?空數組

    TuyaHomeSdk.getHomeManagerInstance().queryHomeList(new ITuyaGetHomeListCallback() {@Overridepublic void onSuccess(List<HomeBean> homeBeans) {// do something}@Overridepublic void onError(String errorCode, String error) {// do something}});

    獲取家庭詳細信息

    在獲取家庭列表或通過?HomeId?初始化得到的?ITuyaHomeManager?的?HomeBean?中?roomList、deviceList、groupList、sharedDeviceList、sharedGroupList?等屬性均為空。需要調用家庭的詳細信息接口獲取上述屬性的具體內容。

    TuyaHomeSdk.newHomeInstance(10000).getHomeDetail(new ITuyaHomeResultCallback() {@Overridepublic void onSuccess(HomeBean bean) {// do something}@Overridepublic void onError(String errorCode, String errorMsg) {// do something}});

    最佳實踐

    在創建了家庭后,后續房間成員、用戶配網等相關操作均需要基于某一特定家庭。因此建議將這一特定家庭作為 App 的全局變量存儲。當然,也可以在本地隨時切換當前家庭,平臺并不會記錄這一信息。在本教程和配套的 Sample 中,默認將列表的第一個家庭設為當前家庭。

    第三步:設備配網

    簡單來說,配網就是將設備連接并注冊到云端,使其擁有與云端遠程通信的能力。涂鴉智能生活 App SDK 提供了豐富的配網方式以支持大部分智能設備。如 Wi-Fi 連接,藍牙連接等。

    配網方式介紹

    本模塊以 Wi-Fi 配網為例介紹如何使用 SDK 將設備配置到云端。Wi-Fi 配網方式包括 快連模式(EZ)、熱點模式(AP)、掃 App 二維碼三種方式。

    相比 EZ 模式,AP 模式成功率高、可靠性好,對手機和路由器的兼容性要求小。配網成功率高于 EZ 模式。因此,在之后的版本中,我們推薦使用?AP 模式?代替?EZ 模式

    獲取配網 Token

    開始配網之前,SDK 需要在聯網狀態下從涂鴉云獲取配網 Token,然后才可以開始熱點模式配網。Token 的有效期為 10 分鐘,且配置成功后就會失效,再次配網需要重新獲取。獲取 Token 需要上傳當前的?homeId,因此您需要確保賬號處于登錄狀態并至少創建了一個家庭。

    TuyaHomeSdk.getActivatorInstance().getActivatorToken(homeId,new ITuyaActivatorGetToken() {@Overridepublic void onSuccess(String token) {}@Overridepublic void onFailure(String s, String s1) {}});

    開始設備配網

    調用配網接口需要提供?builder,builder?中需要路由器的 SSID(即 Wi-Fi 名稱)、密碼、從云端獲取的 Token 等。

    ActivatorBuilder builder = new ActivatorBuilder().setSsid(ssid).setContext(context).setPassword(password).setActivatorModel(ActivatorModelEnum.TY_EZ).setTimeOut(timeout).setToken(token).setListener(new ITuyaSmartActivatorListener() {@Overridepublic void onError(String errorCode, String errorMsg) {}@Overridepublic void onActiveSuccess(DeviceBean devResp) {//多個設備同時配網,將多次回調}@Overridepublic void onStep(String step, Object data) {}})); ITuyaActivator mTuyaActivator = TuyaHomeSdk.getActivatorInstance().newMultiActivator(builder); //開始配網 mTuyaActivator.start();

    使用?AP模式 配網時,需要將?activatorModel?傳入為?ActivatorModelEnum.TY_AP?以監聽配網結果的回調。

    ActivatorBuilder builder = new ActivatorBuilder().setContext(context).setSsid(ssid).setPassword(password).setActivatorModel(ActivatorModelEnum.TY_AP).setTimeOut(timeout).setToken(token).setListener(new ITuyaSmartActivatorListener() {@Overridepublic void onError(String errorCode, String errorMsg) {}@Overridepublic void onActiveSuccess(DeviceBean devResp) {}@Overridepublic void onStep(String step, Object data) {}}));

    (可選)停止配網

    開始配網操作后,App 會持續廣播配網信息,直到配網成功或是超時才停止。如果需要中途取消操作或配網完成,需要調用停止配網接口。

    ITuyaActivator mTuyaActivator = TuyaHomeSdk.getActivatorInstance().newMultiActivator(builder); //停止配網 mTuyaActivator.stop(); //退出頁面銷毀一些緩存和監聽 mTuyaActivator.onDestroy();

    第四步:控制設備

    本章節主要操作對象包含?ITuyaDevice?和?DeviceBean。

    對象說明參考鏈接
    DeviceBean
    • 與?ITuyaHomeManager?和?HomeBean?類似,DeviceBean?存放了設備的基本信息,如 ID、名字、圖標等。
    • DeviceBean?類的?dps?屬性定義了當前設備的狀態,稱作數據點(DP,Data Point)或功能點。每個 DP 都存儲了了一個設備的功能信息。如開關(布爾值),燈泡的亮度(數值型)等。對于設備的控制都通過獲取和修改 DP 值實現。參考。
    設備功能點
    ITuyaDevice存放了設備相關的所有功能,如功能控制,設備固件管理等。您需要用正確的?deviceId?初始化一個?ITuyaDevice。設備管理

    查詢設備列表

    設備成功配網后,可以在對應的家庭下調用獲取家庭詳細信息接口,在 HomeBean?的?getDeviceList?中查看對應的設備列表。

    TuyaHomeSdk.newHomeInstance(10000).getHomeDetail(new ITuyaHomeResultCallback() {@Overridepublic void onSuccess(HomeBean bean) {List<DeviceBean> deviceList = homeBean.getDeviceList();//下文中的deviceBean就是從這里獲取}@Overridepublic void onError(String errorCode, String errorMsg) {// do something}});

    查看設備信息

    設備的功能點信息存放在?dps?中。dps?存放了該設備的所有功能點信息,每個功能點被封裝成一個鍵值對。

    List<DeviceBean> deviceList = homeBean.getDeviceList(); Map<String, Object> dps = TuyaHomeSdk.getDataInstance().getDps(deviceBean.getDevId());

    控制設備

    控制設備需要初始化設備控制接口。接口向設備發送功能點,改變設備狀態或功能,來達到設備控制的目的。

    同樣以燈泡為例,假設開啟一個燈具采用 101 設備功能點,則開燈的代碼如下:

    mDevice.publishDps("{\"101\": true}", new IResultCallback() {@Overridepublic void onError(String code, String error) {Toast.makeText(mContext, "開燈失敗", Toast.LENGTH_SHORT).show();}@Overridepublic void onSuccess() {Toast.makeText(mContext, "開燈成功", Toast.LENGTH_SHORT).show();} });

    如果需要監聽設備狀態的改變,如在線狀態、移除通知、功能點狀態改變等,需要注冊?IDevListener?進行監聽。

    mDevice.registerDevListener(new IDevListener() {/*** DP 數據更新* devId 設備 ID* dpStr 設備發生變動的功能點,為 JSON 字符串,數據格式:{"101": true}*/@Overridepublic void onDpUpdate(String devId, String dpStr){};/*** 設備移除回調* devId 設備 ID*/@Overridepublic void onRemoved(String devId){};/*** 設備上下線回調。如果設備斷電或斷網,服務端將會在3分鐘后回調到此方法。* devId 設備 ID* online 是否在線,在線為 true*/@Overridepublic void onStatusChanged(String devId, boolean online){};/*** 網絡狀態發生變動時的回調* devId 設備 ID* status 網絡狀態是否可用,可用為 true*/@Overridepublic void onNetworkStatusChanged(String devId, boolean status){};/*** 設備信息更新回調* devId 設備 ID*/@Overridepublic void onDevInfoUpdate(String devId){}; }

    (可選)移除設備

    調用?移除設備接口 將當前設備從對應家庭下移除。

    mDevice.removeDevice(new IResultCallback() {@Overridepublic void onError(String errorCode, String errorMsg) {}@Overridepublic void onSuccess() {} });

    (推薦)集成設備面板

    為了減少開發成本,涂鴉針對特定設備提供了一系列的設備控制面板。大家可以參考全品類控制面板 和 空調品類控制面板。

    實踐結果

    好了,教程就到這里,相信大家已經可以創建一個自己的 App 了!感興趣的快去試試吧 👉 涂鴉 IoT 開發平臺。

    總結

    以上是生活随笔為你收集整理的智能生活 App SDK 开发入门教程【内附代码段 】的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。