厨房秤

Yolanda厨房秤设备对设备分为 广播设备 与 蓝牙设备 两种。

广播厨房秤在测量时,会不断向外发射蓝牙广播信号,里面会包含称重的信息。

该设备的工作流程与广播秤相同:

蓝牙厨房秤在测量时,需要先发现蓝牙厨房秤设备与设备建立连接后,才能正常上传数据。

一、初始化

使用QNBleApi.initSdk进行初始化,前文已有相关介绍,请查看

二、扫描

1. 设置蓝牙扫描回调监听类

在扫描前,需要设置监听类,方法为QNBleApi.setBleDeviceDiscoveryListener,该方法只需要调用一次即可,在确定不需要扫描记得设置为null/nil

android示例:

QNBleApi.getInstance(context).setBleDeviceDiscoveryListener(new QNBleDeviceDiscoveryListener() {
    @Override
    public void onDeviceDiscover(QNBleDevice device) {
        //该设备不用处理该处的回调
    }

    @Override
    public void onStartScan() {
        //开始扫描的回到
    }

    @Override
    public void onStopScan() {
        //结束扫描的回到
    }

    @Override
    public void onScanFail(int code) {
        //扫描失败的回调,会有错误码返回,具体可以参考 错误码详情页
    }

    @Override
    public void onBroadcastDeviceDiscover(QNBleBroadcastDevice device) {
        //广播秤,该类设备需要在这个回调中处理事件
    }
     @Override
    public void onKitchenDeviceDiscover(QNBleKitchenDevice device) {
        if (device.isBluetooth()) {
          //此处需保存蓝牙厨房秤对象,留待后续连接
        }
    }
});

//(蓝牙厨房秤专属)数据监听器
QNBleApi.getInstance(context).setKitchenDataListener(new QNBleKitchenDataListener() {
    @Override
    public void onGetBleKitchenWeight(QNBleKitchenDevice device, double weight) {
    }

    @Override
    public void onBleKitchenConnecting(QNBleKitchenDevice device) {
        setBleStatus(QNScaleStatus.STATE_CONNECTING);
    }

    @Override
    public void onBleKitchenConnected(QNBleKitchenDevice device) {
        setBleStatus(QNScaleStatus.STATE_CONNECTED);
    }

    @Override
    public void onBleKitchenDisconnected(QNBleKitchenDevice device) {
        setBleStatus(QNScaleStatus.STATE_DISCONNECTED);
    }

    @Override
    public void onBleKitchenError(QNBleKitchenDevice device, int errorCode) {
        Log.d("ConnectActivity", "onConnectError:" + errorCode);
        setBleStatus(QNScaleStatus.STATE_DISCONNECTED);
    }
});

iOS示例:

//设置代理
QNBleApi *bleApi = [QNBleApi sharedBleApi];
bleApi.discoveryListener = self;
bleApi.bleKitchenDataListener = self; //(蓝牙厨房秤专属)数据监听器

//实现代理方法
- (void)onDeviceDiscover:(QNBleDevice *)device {
    //该设备不用处理该处的回调
}

- (void)onBroadcastDeviceDiscover:(QNBleBroadcastDevice *)device {
    //广播秤,该类设备需要在这个回调中处理事件

}

- (void)onKitchenDeviceDiscover:(QNBleKitchenDevice *)device {
    //厨房秤,该类设备需要在这个回调中处理事件

}

- (void)onGetBleKitchenWeight:(QNBleKitchenDevice *)device weight:(double)weight {
    //蓝牙厨房秤专属, 测量数据回调
}

- (void)onStopScan {
    //停止扫描时回调 
}

- (void)onStartScan {
    //开始扫描时回调 
}

2. 启动扫描

确认蓝牙已打开,安卓这边还需要检查下定位权限定位开关。如果确认蓝牙已打开,定位权限已授权,定位服务开关已打开,则可以开始蓝牙扫描

安卓6.0以后,对targetSdkVersion>=23以上的APP,进行蓝牙扫描需要获取定位权限,详细说明查看关于 定位服务开关不是强制性的,但是某些手机不打开这个开关,也无法扫描到设备,跟各家的手机系统相关 iOS13系统增加了蓝牙使用权限,需要检查是否有使用权限,确认已授权并且蓝牙已打开的情况下,开始扫描

扫描方法为QNBleApi.startBleDeviceDiscovery,扫描到的设备数据,会在上面设置的扫描接口中QNBleDeviceDiscoveryListener回调。

另外有关扫描的一些特性设置,可以在QNConfig进行设置,这些选项应该足够使用。

通常APP会有个专门用于测量的界面,我们一般是在界面显示之后进行蓝牙扫描,界面消失的时候停止扫描。

android示例:

QNBleApi.getInstance(context).startBleDeviceDiscovery(new QNResultCallback() {
            @Override
            public void onResult(int code, String msg) {
                //该方法并不回到设备,而是表示扫描是否启动成功
                if (code != CheckStatus.OK.getCode()) {
                   ToastMaker.show(ScanActivity.this,code+":"+msg);
                }
            }
        });

iOS示例:

//启动扫描
[[QNBleApi sharedBleApi] startBleDeviceDiscovery:^(NSError *error) {
    //该处回调表示启动扫描方法是否成功
    if (error) {
        NSLog([NSString stringWithFormat:@"启动扫描方法失败,原因: %@",error]);
    }
}];

3. 连接设备(蓝牙厨房秤专用)

调用连接方法连接onKitchenDeviceDiscover中回调的蓝牙厨房秤设备对象

android示例:

QNBleApi.getInstance(context).connectBleKitchenDevice(device, new QNResultCallback() {
    @Override
    public void onResult(int code, String msg) {

    }
});

iOS示例:

[_bleApi connectBleKitchenDevice:kitchenDevice callback:^(NSError *error) {

        }];

三、结果处理

android示例:

//广播厨房秤数据处理
public void onKitchenDeviceDiscover(QNBleKitchenDevice device) {
    if (null != device && device.getMac().equals(mBleDevice.getMac())) {
       //处理数据
    }
}

//蓝牙厨房秤数据处理
public void onGetBleKitchenWeight(QNBleKitchenDevice device, double weight) {
}

iOS示例:

#pragma mark - 广播厨房秤处理逻辑
- (void)onKitchenDeviceDiscover:(QNBleKitchenDevice *)device {
    //处理数据
}

#pragma mark - 蓝牙厨房秤处理逻辑
- (void)onGetBleKitchenWeight:(QNBleKitchenDevice *)device weight:(double)weight  {
    //处理数据
}

至此,厨房秤的基本流程已经走完,APP可以在收到解析数据后自行保存数据和展示数据。 其他问题可以先参考Demo中的代码,如果有问题还可以查看常见问题。常见问题还未找到相关问题,可以尝试在SDK中搜索下是否有相关API或说明,如果还是没有,请联系我司技术人员进行协助对接。

Demo地址如下: iOSDemo

AndroidDemo

results matching ""

    No results matching ""