在Polidea中记录scanResult - RxAndroidBle扫描

时间:2016-10-05 17:43:12

标签: android android-activity android-bluetooth android-ble

我正在尝试使用RxAndroidBle lib(https://github.com/Polidea/RxAndroidBle)。我希望应用程序启动并扫描BLE设备。我想在LogCat中打印找到的设备。我怎么能这样做?

function addImage() {

    extent = [-13602803.9769, 4920816.12423, -13599949.5192, 4923458.74552]; // [left, bottom, right, top]

    var projection = new ol.proj.Projection({
        code: 'xkcd-image',
        units: 'pixels',
        extent: extent
    });

    var StaticImage = new ol.layer.Image({
        source: new ol.source.ImageStatic({
        attributions: 'yada yada',
        url: /robs/gis_data/LiDAR Elevations2.png',
        projection: projection,
        imageExtent: extent
        })
    });    

    map.addLayer(StaticImage);
    map.getView().fit(extent, map.getSize());    
} 

2 个答案:

答案 0 :(得分:1)

来自http://polidea.github.io/RxAndroidBle/

Subscription scanSubscription = rxBleClient.scanBleDevices().subscribe(
        rxBleScanResult -> {
            // Process scan result here.
            Log.e("MainActivity","FOUND :"+ rxBleScanResult.getBleDevice().getName());
        },
        throwable -> {
            // Handle an error here.
        }
    );

// When done, just unsubscribe.
scanSubscription.unsubscribe();

编辑: 我注意到,这打破了扫描。甚至可以比较BleScanResult.getBleDevice().getName().equals("BleName") 打破扫描。它只返回3或5个设备,然后没有其他任何东西。

编辑2: 我将离开上一个编辑。有人可能会遇到同样的问题。某些手机​​(LG G4 Android 6)对某些蓝牙设备返回null。但其他一些(三星J5 Android 6)不返回空值。这就是让我在不同的地方寻找bug的原因。但它很简单,只需添加

if(BleScanResult.getBleDevice().getName()!=null) 

现在它不再破坏扫描。

答案 1 :(得分:0)

在科特林,您可以这样做:

Customer.findOrCreate({
    where: {
      email: req.body.email,
    },
    // other datas needs to inserted
    defaults: {
      name: req.body.name,
      username: req.body.username,
    },
  }).spread((data, created) => {
    if (created) {
      // your logics
    } else {
      res.status(400).send(`${req.body.email} already exists.`);
    }
});