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


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

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

Nearby Service四大優點

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

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

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

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

Demo應用介紹(NearbyFileTransfer)

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

開發實戰

NearbyFileTransfer項目開源地址:GitHub。下面為您介紹如何根據源代碼將這個Demo運行起來,以便於您了解實現細節。

開發准備

工具准備

  1. 兩台華為手機(效果最佳)。

  2. 開發工具 Android Studio(3.X或更高版本)。

注冊成為開發者

注冊成為華為開發者

創建一個應用

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

構建Demo應用

  • 參考Nearby Service 開發准備將您的應用對應的agconnect-services.json文件下載到本地,並將其放在示例代碼的app目錄下。

  • 同步工程,構建您的應用。

運行示例應用

  1. 將Demo應用分別安裝到測試機A和B。

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

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

  4. 等待文件傳輸結束

在這里插入圖片描述

關鍵代碼說明

在項目級gradle里添加華為maven倉

Android Studio項目級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.1.0.300'
    implementation 'com.huawei.hms:scan:1.2.3.300'
}

請參考Nearby Service的版本更新說明,使用最新的SDK版本。

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

該示例代碼工程需要藍牙、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是危險的系統權限,因此,您需要動態的申請這些權限,詳情請查看示例代碼中NearbyAgent.java文件中的requestPermissions函數。

關鍵代碼

文件發送和接收的關鍵代碼在 FileMainActivity.java文件中。
如果您的應用需要集成Nearby Service傳輸文件,僅僅需要參考FileMainActivity.java文件調用nearbyAgent.sendFile函數和nearbyAgent.receiveFile函數,即可實現掃碼傳文件。

1. 發送文件
發送方選擇文件后調用 **nearbyAgent.sendFile ** 准備發送文件

@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(new File(uri.getPath()));
            }
            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/cn/hms/huawei-nearbyservice?ha_source=hms1

• 獲取開發指導文檔:
https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides-V5/connection-preparations-0000001050040586-V5

• 參與開發者討論請到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