Smart Camera Pairing in QR Code Mode

Last Updated on : 2023-04-17 09:04:15download

A smart camera can scan a QR code on the app to get the pairing data. Users can pair the smart camera in this way.

Pairing process

Smart Camera Pairing in QR Code Mode

Initialize pairing parameters

API description

ThingCameraActivatorBuilder builder = new ThingCameraActivatorBuilder()
		 .setContext(context)
		 .setSsid(ssid)
		 .setPassword(password)
		 .setToken(token)
		 .setTimeOut(timeout)
		 .setListener(new IThingSmartCameraActivatorListener() {
			 @Override
			 public void onQRCodeSuccess(String qrcodeUrl) {
				 // The URL used to generate a QR code.
			 }

			 @Override
			 public void onError(String errorCode, String errorMsg) {
				 // Failed to pair the device.
			 }

			 @Override
			 public void onActiveSuccess(DeviceBean devResp) {
				// The device is paired.
			 }
		 }));

Parameters

Parameter Description
token The pairing token.
context The context to be set in activity.
ssid The name of the Wi-Fi network to which a paired device is connected.
password The password of the Wi-Fi network to which a paired device is connected.
timeout The timeout value of a pairing task. Default value: 100. Unit: seconds.

Get a token

Before the smart camera pairing process, the SDK must get a pairing token from the cloud in the networked state. The token is valid for 10 minutes and expires immediately after the device is paired. A new token must be generated if the device needs to be paired again.

API description

ThingHomeSdk.getActivatorInstance().getActivatorToken(homeId,
		new IThingActivatorGetToken() {

			@Override
			public void onSuccess(String token) {

			}

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

			}
		});

Parameters

Parameter Description
homeId The home ID. For more information, see Home Management.

Call the pairing method

  • Pairing implementation class.

    IThingCameraDevActivator mThingActivator = ThingHomeSdk.getActivatorInstance().newCameraDevActivator(builder);
    
  • Returns the URL of the QR code.

    mThingActivator.createQRCode(); // The result is returned by the callback of `onQRCodeSuccess`.
    
  • Generates a QR code by using the URL.

    In the following example, this dependency is required: 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;
    	}
    
  • Starts pairing.

    mThingActivator.start();
    
  • Stops pairing.

    mThingActivator.stop();
    
  • Destroys data.

    mThingActivator.onDestory();