简体中文
简体中文
English
联系我们
注册
登录
layout空间导航

摄像头二维码配网

更新时间:2022-02-17 06:14:37下载pdf

通过摄像头设备扫描 App 二维码来传递配网信息的方式来实现配网设备。

摄像头二维码配网

获取 Token

开始配网之前,SDK 需要在联网状态下从涂鸦云获取配网 Token,Token 的有效期为10分钟,且配置成功后就会失效(再次配网需要重新获取)。

接口说明

配网 Token 获取接口

TuyaOSActivator.deviceActivator().getActivatorToken(final long homeId, final ITuyaActivatorGetToken activatorGetToken);

参数说明

参数 说明
homeId 家庭 ID,详情参考家庭管理章节
activatorGetToken 配网 Token 获取回调

示例代码

TuyaOSActivator.deviceActivator().getActivatorToken(homeId,
		new ITuyaActivatorGetToken() {

			@Override
			public void onSuccess(String token) {

			}

			@Override
			public void onFailure(String s, String s1) {

			}
		});

初始化配网参数

示例代码

TuyaCameraActivatorBuilder builder = new TuyaCameraActivatorBuilder()
		 .setContext(context)
		 .setSsid(ssid)
		 .setPassword(password)
		 .setToken(token)
		 .setTimeOut(timeout)
		 .setListener(new ITuyaSmartCameraActivatorListener() {
			 @Override
			 public void onQRCodeSuccess(String qrcodeUrl) {
				 //返回生成二维码的 URL 链接
			 }

			 @Override
			 public void onError(String errorCode, String errorMsg) {
				 //配网失败
			 }

			 @Override
			 public void onActiveSuccess(DeviceBean devResp) {
				//配网成功
			 }
		 }));

参数说明

参数 说明
token 配网所需要的激活 key
context 需要传入 activity 的 context
ssid 配网之后,设备工作 Wi-Fi 的名称(家庭网络)
password 配网之后,设备工作 Wi-Fi 的密码(家庭网络)
timeout 配网的超时时间设置,默认是 100s ,单位是秒

配网方法调用

  • 配网实现类

    ITuyaCameraDevActivator mTuyaActivator = TuyaOSActivator.deviceActivator().newCameraDevActivator(builder);
    
  • 获取二维码URL链接

    mTuyaActivator.createQRCode(); //通过 onQRCodeSuccess 回调返回
    
  • 根据URL生成二维码

    示例:需要依赖 zxing( implementation ‘com.google.zxing:core:3.2.1’ )

    public static Bitmap createQRCode(String url, int widthAndHeight)
    			throws WriterException {
    		Hashtable hints = new Hashtable();
    		hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
    		hints.put(EncodeHintType.MARGIN,0);
    		BitMatrix matrix = new MultiFormatWriter().encode(url,
    				BarcodeFormat.QR_CODE, widthAndHeight, widthAndHeight, hints);
    
    		int width = matrix.getWidth();
    		int height = matrix.getHeight();
    		int[] pixels = new int[width * height];
    
    		for (int y = 0; y < height; y++) {
    			for (int x = 0; x < width; x++) {
    				if (matrix.get(x, y)) {
    					pixels[y * width + x] = BLACK;
    				}
    			}
    		}
    		Bitmap bitmap = Bitmap.createBitmap(width, height,
    				Bitmap.Config.ARGB_8888);
    		bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
    		return bitmap;
    	}
    
  • 开始配网

    mTuyaActivator.start();
    
  • 停止配网

    mTuyaActivator.stop();
    
  • 销毁数据

    mTuyaActivator.onDestory();