如何在Android L中的StartAvertising()中将广告数据设置为外设的scanResponse

如何在Android L中的StartAvertising()中将广告数据设置为外设的scanResponse,android,bluetooth,android-5.0-lollipop,peripherals,Android,Bluetooth,Android 5.0 Lollipop,Peripherals,如Android L中API参考中所述,此处提供: 有两种方法可以使用蓝牙低能量启动Android L中的广告数据: public void startAvertising(广告设置、广告设置、广告数据、广告回调) public void startAvertising(广告设置、广告设置、广告数据、广告数据扫描响应、广告回调) 第二个方法包含另一个参数:scanResponse 当我使用第一种方法时,一切正常,我可以扫描广告数据中的信息集。但是,当我测试第二种方法时,我只能在scanRespo

如Android L中API参考中所述,此处提供:

有两种方法可以使用蓝牙低能量启动Android L中的广告数据:

  • public void startAvertising(广告设置、广告设置、广告数据、广告回调)

  • public void startAvertising(广告设置、广告设置、广告数据、广告数据扫描响应、广告回调)

  • 第二个方法包含另一个参数:scanResponse

    当我使用第一种方法时,一切正常,我可以扫描广告数据中的信息集。但是,当我测试第二种方法时,我只能在scanResponse中扫描并获取数据,从LogCat中,我得到以下错误:

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

    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启动(成功)(可能)后关闭(成功)

    我用错了这个方法吗?我使用Nexus5和Android L预览版,还是它是当前Android系统的bug

    参考

    方法:public void startAvertising(广告设置、广告数据、广告数据扫描响应、广告回调)

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

    需要蓝牙管理

    参数

    蓝牙广告的设置

    要在广告包中广告的广告数据

    扫描响应与广告数据关联的扫描响应

    广告状态的回调