如何在Android L中的startAdvertising()中设置scanResponse,以便将数据作为外围设备进行广告宣传

时间:2014-08-15 07:28:37

标签: android bluetooth android-5.0-lollipop peripherals

如Android L中的API参考中所述,可在此处获取:https://developer.android.com/preview/reference.html

有两种方法可以使用蓝牙低功耗在Android L中开始宣传数据:

  
      
  1. public void startAdvertising(AdvertiseSettings settings,AdvertisementData advertiseData,AdvertiseCallback callback)

  2.   
  3. public void startAdvertising(AdvertiseSettings settings,AdvertisementData advertiseData,AdvertisementData scanResponse,AdvertiseCallback callback)

  4.   

第二种方法还包含一个参数:scanResponse

当我使用第一种方法时,一切正常,我可以扫描advertiseData中设置的信息。但是,当我测试第二种方法时,我只能扫描并获取scanResponse中的数据,而且从LogCat中,我收到以下错误: enter image description here

enter image description here

这似乎是一个蓝牙缓冲区问题,在我的(广告)回调对象中,我记录了一句话:

advertiseCallback = new AdvertiseCallback() {
            @Override
            public void onSuccess(AdvertiseSettings advertiseSettings) {

                Log.i(TAG, "Adv Success");
                // Other operations
            }

            @Override
            public void onFailure(int i) {
                // Other operations
            }
        };

从LogCat可以看出,onSuccess()方法被调用了两次,我认为它可能是以下两个原因之一: 1. advertiseData和scanResponse数据,而advertiseData可能导致蓝牙问题,因此无法广播; 2. advertiseData在启动(成功)之后关闭(成功)(可能);

我是否以错误的方式使用此方法?我使用的是Nexus 5和Android L预览版,还是当前Android系统的bug?

参考

  

方法:public void startAdvertising(AdvertiseSettings settings,AdvertisementData advertiseData,AdvertisementData scanResponse,AdvertiseCallback callback)

     

启动蓝牙LE广告。在操作成功后,广播数据将被广播。 扫描设备发送活动扫描请求时将返回scanResponse 。方法立即返回,操作状态通过回调传递。

     

需要BLUETOOTH_ADMIN

     

参数

     

设置蓝牙LE广告的设置。

     

advertiseData要在广告包中公布的广告数据。

     

scanResponse扫描与广告数据相关的响应。

     

回调广告状态回调。

0 个答案:

没有答案