教你如何集成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
作者:胡椒


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM