教你如何集成HMS Nearby Service 實現智能設備間文件的高速、免流量傳輸!

華爲近距離通信服務(Nearby Service)使用華爲自研協議,應用集成Nearby Service後,即可實現智能設備之間文件的免流量高速快傳,並且集成過程簡單易懂。

隨着智能手機普及率越來越高,人們對智能手機依賴性也越來越強。常用的大多數手機應用具備文件傳輸功能,如:社交類應用(傳圖片、傳文件、傳聊天記錄等)、文件管理應用(傳文件、備份、手機克隆等)、音視頻類應用(分享歌曲、視頻等)。這幾類應用的傳輸文件功能主要是藉助網盤、雲服務器將文件傳輸到另一個設備上。這類方式都需要使用用戶流量或者需要在有Wi-Fi的場景下進行傳輸,並不具備免流量面對面傳輸的能力。有一些開發者可能試圖嘗試通過藍牙或者Wi-Fi來實現近場數據傳輸,但這需要和複雜的網絡協議、硬件設備打交道,且傳輸速度不盡人意。

Nearby Service四大優點

  • 輕鬆集成:僅2個文件傳輸API,無需和複雜的網絡協議打交道。

  • 極速傳輸:最高傳輸速率可超60M/秒,1GB文件傳輸僅需20秒。

  • 無需聯網:無需藉助路由器或其他網絡設備,通過藍牙、Wi-Fi實現數據傳輸,不花費用戶自己的流量。

  • 平臺支持:支持全安卓平臺(華爲設備和非華爲設備),其他平臺將陸續開放。

Demo應用介紹(NearbyTransfer)

爲了讓開發者更好的瞭解如何集成Nearby Service,這裏提供了一個掃碼傳文件的Demo以供參考。NearbyTransfer集成了#HMS Core# Nearby Service和Scan Kit,在兩個智能設備(手機、Pad等)之間通過掃碼即可完成數據傳輸。

開發實戰

NearbyTransfer 開源項目的Github鏈接:

https://github.com/HMS-Core/hms-nearby-demo/tree/master/NearbySimpleconnection

下面爲您介紹如何根據源代碼將這個Demo運行起來,以便於您瞭解實現細節。

開發準備

工具準備

  1. 兩臺華爲手機(效果最佳)

  2. 開發工具 Android Studio(3.X or later)

註冊成爲開發者

註冊成爲華爲開發者。

創建一個應用

參考Nearby Service 開發準備在華爲應用市場創建一個您的應用。

構建Demo應用

導入源代碼到Android Studio(3.X or later)

將華爲應用市場上新建應用的agconnect-services.json文件下載到本地,並將其放在示例代碼的app目錄下(\app)。

運行示例應用

  1. 將Demo應用安裝到測試機A,B

  2. 在測試機A上選擇"Send File", 挑選需要傳輸的文件,生成二維碼

  3. 在測試機B上選擇"Receive File"

  4. 等待文件傳輸結束

在這裏插入圖片描述

關鍵代碼說明

在項目級gradle裏添加華爲maven倉

AndroidStudio項目級build.gradle文件,增量添加如下maven地址:

buildscript {
    repositories {
        maven { url 'http://developer.huawei.com/repo/'}
    }    }allprojects {
    repositories {
        maven { url 'http://developer.huawei.com/repo/'}
    }}

在應用級的build.gradle裏面加上SDK依賴

dependencies {
    implementation 'com.huawei.hms:nearby:5.0.2.300'
    implementation 'com.huawei.hms:scan:1.2.3.300'
}

在AndroidManifest.xml文件裏面聲明系統權限

因Nearby Service是基於藍牙、Wi-Fi、存儲等能力實現,這裏需要聲明藍牙、Wi-Fi、存儲以及位置信息權限。(待增加掃碼權限)

    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <!--相機權限-->
    <uses-permission android:name="android.permission.CAMERA" />

由於ACCESS_FINE_LOCATION,WRITE_EXTERNAL_STORAGE和READ_EXTERNAL_STORAGE是危險的系統權限,因此,您需要動態的申請這些權限。如果權限不足,Nearby Service將會拒絕爲您的應用開啓廣播或者掃描。

關鍵代碼

主要代碼路徑:com\huawei\hms\simpleNearbyDemo\MainActivity.java

如果您的應用需要集成Nearby Service傳輸文件,僅僅需要參考MainActivity將nearbyAgent.sendFile()和nearbyAgent.receiveFile()集成到您的應用中,即可實現掃碼傳文件。

1. 發送文件
發送方選擇文件後調用 nearbyAgent.sendFile(uri) 準備發送文件

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (requestCode) {
        case FILE_SELECT_CODE:
            if (resultCode == RESULT_OK) {
                // Get the Uri of the selected file
                Uri uri = data.getData();
                nearbyAgent.sendFile(uri);
            }
            break;
        case NearbyAgent.REQUEST_CODE_SCAN_ONE:
            nearbyAgent.onScanResult(data);
        default:
            break;
    }
  
    super.onActivityResult(requestCode, resultCode, data);
}

2. 接收文件
接收方調用 nearbyAgent.onScanResult(data) 接收文件

  recvBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            nearbyAgent.receiveFile();
        }
    });

欲瞭解更多詳情,請參閱:

華爲開發者聯盟官網:https://developer.huawei.com/consumer/en/hms/huawei-pushkit

獲取開發指導文檔:https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides/service-introduction-0000001050040060

參與開發者討論請到Reddit社區:https://www.reddit.com/r/HuaweiDevelopers/

下載demo和示例代碼請到Github:https://github.com/HMS-Core

解決集成問題請到Stack Overflow:https://stackoverflow.com/questions/tagged/huawei-mobile-services?tab=Newest


原文鏈接:https://developer.huawei.com/consumer/cn/forum/topicview?tid=0203382449995050417&fid=18
作者:胡椒

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章