簡體   English   中英

Android中的Gatt服務器設備名稱長度

[英]Gatt server device name length in Android

我正在使Gatt服務器應用程序在android設備上運行,並且效果很好。

但是我對設備名稱有疑問。

我使用“ Nexus 5X”創建了此應用程序,其默認設備名稱為“ Nexus 5x”,Gatt客戶端可以很好地掃描此設備。

但是,如果服務器在“ Galaxy S7”上運行,則客戶端找不到服務器設備。

因此,我檢查了服務器的設備名稱,默認情況下為“ Samsung Galaxy S7”。 將名稱更改為“ gal7”后,它可以正常工作。

在我的測試中,android gatt服務器允許設備名稱的最大長度為8個字符。

“ Nexus 5x”->很好

“ Galaxy S7”->不好

“ Nexus”->很好

“長名稱設備”->不好

gatt服務器設備名稱長度限制是否有任何原因(錯誤與否)?

您的問題是廣告數據包最多可以是31個字節。 刪除一些標頭后,設備名稱剩下8(假設廣告客戶中包含服務UUID)。 如果要在廣告中包括設備名稱,則執行此操作的正確方法如下所示:

AdvertiseSettings mAdvertiseSettings = new AdvertiseSettings.Builder()
        .setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_LOW_LATENCY)
        .setConnectable(true)
        .setTimeout(0)
        .setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_MEDIUM)
        .build();
AdvertiseData mAdvertiseData = new AdvertiseData.Builder()
        .setIncludeDeviceName(false)
        .addServiceUuid(new ParcelUuid(MY_SERVICE_UUID))
        .build();
AdvertiseData mScanResponseData = new AdvertiseData.Builder()
        .setIncludeDeviceName(true)
        .build();
BluetoothAdapter.getDefaultAdapter().getBluetoothLeAdvertiser()
        .startAdvertising(mAdvertiseSettings, mAdvertiseData,
                mScanResponseData, this /* AdvertiseCallback */);

這是在發送帶有打包廣告的主服務的UUID時,同時保持Rx通道打開以進行掃描響應請求,該請求將發送名稱(我認為最多27個字符)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM