diff --git a/boofcv/src/main/java/boofcv/ohos/BOverrideConvertOhos.java b/boofcv/src/main/java/boofcv/ohos/BOverrideConvertOhos.java index c8296288abb219f78b122cc3155111d6f6bbbc4f..57e2dc1d1565cb92516f523d1066af18332eec91 100644 --- a/boofcv/src/main/java/boofcv/ohos/BOverrideConvertOhos.java +++ b/boofcv/src/main/java/boofcv/ohos/BOverrideConvertOhos.java @@ -36,9 +36,9 @@ public class BOverrideConvertOhos extends BOverrideClass { BOverrideManager.register(BOverrideConvertOhos.class); } - public static YuvToBoof_420888 yuv420ToBoof; - public static BitmapToBoof bitmapToBoof; - public static BoofToBitmap boofToBitmap; + public static final YuvToBoof_420888 yuv420ToBoof = null; + public static final BitmapToBoof bitmapToBoof = null; + public static final BoofToBitmap boofToBitmap = null; public interface YuvToBoof_420888> { void yuvToBoof420(Image input, ColorFormat color, ImageBase output); diff --git a/boofcv/src/main/java/boofcv/ohos/ImplConvertBitmap.java b/boofcv/src/main/java/boofcv/ohos/ImplConvertBitmap.java index fdc75f75b1573722e93395b36f9342e1b3bf78d7..1d3da8a7983bc6d25bd728d5ddc6467a1b4cb4fe 100644 --- a/boofcv/src/main/java/boofcv/ohos/ImplConvertBitmap.java +++ b/boofcv/src/main/java/boofcv/ohos/ImplConvertBitmap.java @@ -540,7 +540,7 @@ public class ImplConvertBitmap { int g = ((value & 0x07E0) >> 5) * 256 / 64; int b = (value & 0x001F) * 256 / 32; - output.data[indexDst++] = (r + g + b) / 3; + output.data[indexDst++] = (r + g + b) / (float) 3; } } } diff --git a/boofcv/src/main/java/boofcv/ohos/VisualizeImageData.java b/boofcv/src/main/java/boofcv/ohos/VisualizeImageData.java index 9cc905089807d0d8054d4bddb4edcdeaf3d799d6..fb8a24f92df6f8b3fd79ee21cd69ba7eadf1f7ad 100644 --- a/boofcv/src/main/java/boofcv/ohos/VisualizeImageData.java +++ b/boofcv/src/main/java/boofcv/ohos/VisualizeImageData.java @@ -550,7 +550,7 @@ public class VisualizeImageData { int[] colors = new int[numRegions]; byte[] seed = new byte[]{1, 2, 3}; - Random rand = new SecureRandom(seed); + SecureRandom rand = new SecureRandom(seed); for (int i = 0; i < colors.length; i++) { colors[i] = rand.nextInt(); } diff --git a/boofcv/src/main/java/boofcv/ohos/camera/VisualizeCameraSlice.java b/boofcv/src/main/java/boofcv/ohos/camera/VisualizeCameraSlice.java index 7ea4bb5e1bcd1f058040d9d26ebb21c3968a2a94..315a70fa9533fa43aa6750c859930a85d9545eb0 100644 --- a/boofcv/src/main/java/boofcv/ohos/camera/VisualizeCameraSlice.java +++ b/boofcv/src/main/java/boofcv/ohos/camera/VisualizeCameraSlice.java @@ -315,7 +315,10 @@ public abstract class VisualizeCameraSlice extends SimpleCameraSlice { DisplayManager displayManager = DisplayManager.getInstance(); Optional display = displayManager.getDefaultDisplay(this); - int rotation = display.get().getRotation(); + int rotation = 0; + if (display.isPresent()) { + rotation = display.get().getRotation(); + } final int ro = 90; videoToDisplayMatrix(new Size(cameraWidth, cameraHeight), new Size(viewWidth, viewHeight), @@ -376,7 +379,7 @@ public abstract class VisualizeCameraSlice extends SimpleCameraSlice { return; } - imageToView.postRotate(-displayRotation + cameraRotation, cameraSize.width / half, cameraSize.height / half); + imageToView.postRotate(-displayRotation + cameraRotation, cameraSize.width / (float) half, cameraSize.height / (float) half); imageToView.postTranslate(offsetX, offsetY); imageToView.postScale(scale, scale); if (isStretchToFill) { diff --git a/entry/src/main/config.json b/entry/src/main/config.json index 823710cc66eebb12e4b8bca91e238e0056fd020e..c061f1403a269b64e8ad6e5d8411101ea506a233 100644 --- a/entry/src/main/config.json +++ b/entry/src/main/config.json @@ -50,36 +50,24 @@ "launchType": "standard" }, { - "permissions": [ - "com.huawei.hm_boofcv.DataAbilityShellProvider.PROVIDER" - ], "name": "org.boofcv.video.ExposureAbility", "icon": "$media:icon", "description": "$string:exposureability_description", "type": "page" }, { - "permissions": [ - "com.org.boofcv.video.DataAbilityShellProvider.PROVIDER" - ], "name": "org.boofcv.video.BitmapAbility", "icon": "$media:icon", "description": "$string:bitmapability_description", "type": "page" }, { - "permissions": [ - "com.org.boofcv.video.DataAbilityShellProvider.PROVIDER" - ], "name": "org.boofcv.video.GradientAbility", "icon": "$media:icon", "description": "$string:gradientability_description", "type": "page" }, { - "permissions": [ - "com.org.boofcv.video.DataAbilityShellProvider.PROVIDER" - ], "name": "org.boofcv.video.QrCodeAbility", "icon": "$media:icon", "description": "$string:qrcodeability_description", @@ -88,19 +76,69 @@ ], "reqPermissions": [ { - "name": "ohos.permission.CAMERA" + "name": "ohos.permission.CAMERA", + "reason": "CAMERA", + "usedScene": { + "ability": [ + "org.boofcv.video.ExposureAbility", + "org.boofcv.video.BitmapAbility", + "org.boofcv.video.GradientAbility", + "org.boofcv.video.QrCodeAbility" + ], + "when": "always" + } }, { - "name": "ohos.permission.WRITE_USER_STORAGE" + "name": "ohos.permission.WRITE_USER_STORAGE", + "reason": "WRITE_USER_STORAGE", + "usedScene": { + "ability": [ + "org.boofcv.video.ExposureAbility", + "org.boofcv.video.BitmapAbility", + "org.boofcv.video.GradientAbility", + "org.boofcv.video.QrCodeAbility" + ], + "when": "always" + } }, { - "name": "ohos.permission.MICROPHONE" + "name": "ohos.permission.MICROPHONE", + "reason": "MICROPHONE", + "usedScene": { + "ability": [ + "org.boofcv.video.ExposureAbility", + "org.boofcv.video.BitmapAbility", + "org.boofcv.video.GradientAbility", + "org.boofcv.video.QrCodeAbility" + ], + "when": "always" + } }, { - "name": "ohos.permission.READ_USER_STORAGE" + "name": "ohos.permission.READ_USER_STORAGE", + "reason": "READ_USER_STORAGE", + "usedScene": { + "ability": [ + "org.boofcv.video.ExposureAbility", + "org.boofcv.video.BitmapAbility", + "org.boofcv.video.GradientAbility", + "org.boofcv.video.QrCodeAbility" + ], + "when": "always" + } }, { - "name": "ohos.permission.DISTRIBUTED_DATASYNC" + "name": "ohos.permission.DISTRIBUTED_DATASYNC", + "reason": "DISTRIBUTED_DATASYNC", + "usedScene": { + "ability": [ + "org.boofcv.video.ExposureAbility", + "org.boofcv.video.BitmapAbility", + "org.boofcv.video.GradientAbility", + "org.boofcv.video.QrCodeAbility" + ], + "when": "always" + } }, { "name": "ohos.permission.DISTRIBUTED_DEVICE_STATE_CHANGE" diff --git a/entry/src/main/java/org/boofcv/video/slice/BitmapSlice.java b/entry/src/main/java/org/boofcv/video/slice/BitmapSlice.java index 68673f11bbbc8e5627a66b3b9f17df05bac69422..1ca7c5bbb5eabc4e3a5cc22113ea3c9d1ce7e3c9 100644 --- a/entry/src/main/java/org/boofcv/video/slice/BitmapSlice.java +++ b/entry/src/main/java/org/boofcv/video/slice/BitmapSlice.java @@ -3,9 +3,8 @@ package org.boofcv.video.slice; import boofcv.abst.fiducial.QrCodeDetector; import boofcv.alg.fiducial.qrcode.QrCode; import boofcv.factory.fiducial.FactoryFiducial; -import boofcv.struct.image.GrayU8; import boofcv.ohos.ConvertBitmap; -import org.boofcv.video.ResourceTable; +import boofcv.struct.image.GrayU8; import ohos.aafwk.ability.AbilitySlice; import ohos.aafwk.ability.DataAbilityHelper; import ohos.aafwk.ability.DataAbilityRemoteException; @@ -18,6 +17,7 @@ import ohos.media.image.ImageSource; import ohos.media.image.PixelMap; import ohos.utils.IntentConstants; import ohos.utils.net.Uri; +import org.boofcv.video.ResourceTable; import java.io.FileNotFoundException; import java.io.InputStream; @@ -92,12 +92,17 @@ public class BitmapSlice extends AbilitySlice { QrCodeDetector detector = FactoryFiducial.qrcode(null, GrayU8.class); detector.process(gray); - String text = "Total Detected = " + detector.getDetections().size() + "\n"; + StringBuilder text = new StringBuilder(); + text.append("Total Detected = "); + text.append(detector.getDetections().size()); + text.append("\n"); + for (QrCode qr : detector.getDetections()) { - text += qr.message + "\n"; + text.append(qr.message); + text.append("\n"); } - textView.setText(text); + textView.setText(text.toString()); } catch (FileNotFoundException | DataAbilityRemoteException e) { e.printStackTrace(); }