该设备是搭载Android 8.1.0的LG LM-X410 LM。该代码作为客户端工作良好,能够从其他设备读取特征。但是当我使用它作为服务器发布广告时,它会成功返回,但不会出现在其他设备扫描中?我是这样做广告的:
btAdvertiser = btAdapter.getBluetoothLeAdvertiser();
AdvertiseSettings advertiseSettings = new AdvertiseSettings.Builder()
.setAdvertiseMode( AdvertiseSettings.ADVERTISE_MODE_LOW_LATENCY )
.setTxPowerLevel( AdvertiseSettings.ADVERTISE_TX_POWER_HIGH )
.setConnectable( false )
.build();
ParcelUuid pUuid = new ParcelUuid( UUID.fromString( getString( R.string.ble_uuid ) ) );
AdvertiseData data = new AdvertiseData.Builder()
.setIncludeDeviceName( true )
.addServiceData( pUuid, "Data".getBytes( Charset.forName( "UTF-8" ) ) )
.build();
btAdvertiser.startAdvertising( advertiseSettings, data, advertisingCallback );发布于 2020-06-11 22:47:37
您可能需要通过addServiceData连接而不是添加uuid,如果您想连接到广告设备,则需要将addServiceUuid设置为true,使用此代码我没有问题
AdvertiseSettings advertiseSettings = new AdvertiseSettings.Builder()
.setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_LOW_LATENCY) //alto
.setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_HIGH) //alto
.setConnectable(true)
.setTimeout(0)
.build();
AdvertiseData advertiseData = new AdvertiseData.Builder()
.addServiceUuid(new ParcelUuid(UUID.fromString(getString(R.string.ble_uuid))))
.setIncludeDeviceName(true)
.build();
BluetoothLeAdvertiser advertiser = bluetoothAdapter.getBluetoothLeAdvertiser();
advertiser.startAdvertising(advertiseSettings, advertiseData, advertiseCallback);https://stackoverflow.com/questions/62314677
复制相似问题