0

该设备是配备 Android 8.1.0 的 LG LM-X410PM。该代码作为客户端运行良好,能够从其他设备读取特征。但是当我将它用作服务器进行广告时,它会成功返回但不会出现在其他设备扫描上?这是我的广告方式:

            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 );
4

1 回答 1

0

可能您需要添加ServiceUuid而不是通过addServiceData添加uuid,如果您想连接到广告设备,您需要将可连接设置为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);

            
于 2020-06-11T14:47:37.410 回答