From e8ce29b2016faa9d208fef3ec5aff8033b2cf661 Mon Sep 17 00:00:00 2001 From: TFStudy <3202410880@qq.com> Date: Tue, 6 Jul 2021 18:18:41 +0800 Subject: [PATCH 1/6] =?UTF-8?q?findBugs=E4=BF=AE=E6=94=B9=E5=8F=8Asdk?= =?UTF-8?q?=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 10 +- entry/build.gradle | 2 +- entry/src/main/config.json | 7 +- .../myapplication/slice/MainAbilitySlice.java | 22 --- entry/src/ohosTest/config.json | 5 - scanner/build.gradle | 2 +- scanner/src/main/config.json | 4 - .../v18/scanner/BluetoothLeScannerCompat.java | 2 - .../v18/scanner/BluetoothScannerImplV5.java | 12 +- .../v18/scanner/PendingIntentExecutor.java | 7 - .../v18/scanner/PendingIntentReceiver.java | 70 -------- .../support/v18/scanner/ScanFilter.java | 97 +++++----- .../support/v18/scanner/ScanRecord.java | 168 +++++++++--------- .../support/v18/scanner/ScanSettings.java | 2 +- .../support/v18/scanner/ScannerService.java | 19 +- 15 files changed, 145 insertions(+), 284 deletions(-) delete mode 100644 scanner/src/main/java/no/nordicsemi/support/v18/scanner/PendingIntentReceiver.java diff --git a/README.md b/README.md index c8fefec..a37cc3f 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ - 功能:蓝牙的操作 - 项目移植状态:主功能完成 - 调用差异:无 -- 开发版本:sdk5,DevEco Studio 2.1 Release +- 开发版本:sdk6,DevEco Studio 2.2 Beta1 - 基线版本:Release v1.4.3 @@ -32,7 +32,7 @@ dependencies { ...... } ``` -在sdk5,DevEco Studio 2.1 Release下项目可直接运行 +在sdk6,DevEco Studio 2.2 Beta1下项目可直接运行 如无法运行,删除项目.gradle,.idea,build,gradle,build.gradle文件, 并依据自己的版本创建新项目,将新项目的对应文件复制到根目录下 @@ -40,7 +40,7 @@ dependencies { 使用该库非常简单,只需查看提供的示例的源代码。 -```java +``` BluetoothLeScannerCompat scanner = BluetoothLeScannerCompat.getScanner(); ScanSettings settings = new ScanSettings.Builder() .setLegacy(false) @@ -60,7 +60,7 @@ CodeCheck代码测试无异常 CloudTest代码测试无异常 -火绒安全病毒安全检测通过 +病毒安全检测通过 当前版本demo功能与原组件基本无差异 @@ -69,6 +69,6 @@ CloudTest代码测试无异常 - 0.0.1-SNAPSHOT #### 版权和许可信息 -```java +``` The Scanner Compat library is available under BSD 3-Clause license. See the LICENSE file for more info. ``` \ No newline at end of file diff --git a/entry/build.gradle b/entry/build.gradle index af8464c..57a050b 100644 --- a/entry/build.gradle +++ b/entry/build.gradle @@ -1,6 +1,6 @@ apply plugin: 'com.huawei.ohos.hap' ohos { - compileSdkVersion 5 + compileSdkVersion 6 defaultConfig { compatibleSdkVersion 5 } diff --git a/entry/src/main/config.json b/entry/src/main/config.json index ade643d..4a13b41 100644 --- a/entry/src/main/config.json +++ b/entry/src/main/config.json @@ -5,10 +5,6 @@ "version": { "code": 1, "name": "1.0" - }, - "apiVersion": { - "compatible": 5, - "target": 5 } }, "deviceConfig": {}, @@ -21,7 +17,8 @@ "distro": { "deliveryWithInstall": true, "moduleName": "entry", - "moduleType": "entry" + "moduleType": "entry", + "installationFree":false }, "abilities": [ { diff --git a/entry/src/main/java/com/example/myapplication/slice/MainAbilitySlice.java b/entry/src/main/java/com/example/myapplication/slice/MainAbilitySlice.java index 0868625..46b9a56 100644 --- a/entry/src/main/java/com/example/myapplication/slice/MainAbilitySlice.java +++ b/entry/src/main/java/com/example/myapplication/slice/MainAbilitySlice.java @@ -187,7 +187,6 @@ public class MainAbilitySlice extends AbilitySlice implements Component.ClickedL private void start() { isBut = true; List filters = new ArrayList<>(); - UUID uuid = UUID.randomUUID(); scanner.startScan(this, null, buildScanSettings(), scanCallback); scanner.startScan(filters, buildScanSettings(), this, null); } @@ -219,27 +218,6 @@ public class MainAbilitySlice extends AbilitySlice implements Component.ClickedL beans.addAll(results); } - getUITaskDispatcher().asyncDispatch(new Runnable() { - @Override - public void run() { - if (results.size() > 0) { - int size = results.size(); - } - } - }); - - for (ScanResult scanResult : results) { - - String deviceName = scanResult.getScanRecord().getDeviceName(); - if (deviceName != null && !deviceName.isEmpty()) { - System.out.println("LOGLISTALL" + "/--/--/ " - + "DEVICE =" + ((BleScanResult)scanResult.getDevice()).getPeripheralDevice().getDeviceAddr()+ ", " - +"DEVICENAME ="+scanResult.getScanRecord().getDeviceName()+", " - +"DATASTATUS ="+scanResult.getDataStatus()); - } - int size = results.size(); - System.out.println("LOGLISTALL" + "/**/" + "ALLSIZE = " + size); - } getUITaskDispatcher().asyncDispatch(new Runnable() { @Override public void run() { diff --git a/entry/src/ohosTest/config.json b/entry/src/ohosTest/config.json index 2ecbc8a..95309a0 100644 --- a/entry/src/ohosTest/config.json +++ b/entry/src/ohosTest/config.json @@ -5,11 +5,6 @@ "version": { "code": 1000000, "name": "1.0.0" - }, - "apiVersion": { - "compatible": 5, - "target": 5, - "releaseType": "Release" } }, "deviceConfig": {}, diff --git a/scanner/build.gradle b/scanner/build.gradle index cb95327..cf28f20 100644 --- a/scanner/build.gradle +++ b/scanner/build.gradle @@ -1,6 +1,6 @@ apply plugin: 'com.huawei.ohos.library' ohos { - compileSdkVersion 5 + compileSdkVersion 6 defaultConfig { compatibleSdkVersion 5 } diff --git a/scanner/src/main/config.json b/scanner/src/main/config.json index ef07208..9765218 100644 --- a/scanner/src/main/config.json +++ b/scanner/src/main/config.json @@ -5,10 +5,6 @@ "version": { "code": 1, "name": "1.0" - }, - "apiVersion": { - "compatible": 5, - "target": 5 } }, "deviceConfig": {}, diff --git a/scanner/src/main/java/no/nordicsemi/support/v18/scanner/BluetoothLeScannerCompat.java b/scanner/src/main/java/no/nordicsemi/support/v18/scanner/BluetoothLeScannerCompat.java index 4cb2e74..7b02f16 100644 --- a/scanner/src/main/java/no/nordicsemi/support/v18/scanner/BluetoothLeScannerCompat.java +++ b/scanner/src/main/java/no/nordicsemi/support/v18/scanner/BluetoothLeScannerCompat.java @@ -159,8 +159,6 @@ public abstract class BluetoothLeScannerCompat { @Nullable final ScanSettings settings, final Context context, final IntentAgent callbackIntent) { - if (callbackIntent == null) { - } if (context == null) { throw new IllegalArgumentException("context is null"); } diff --git a/scanner/src/main/java/no/nordicsemi/support/v18/scanner/BluetoothScannerImplV5.java b/scanner/src/main/java/no/nordicsemi/support/v18/scanner/BluetoothScannerImplV5.java index 5259470..f19cad4 100644 --- a/scanner/src/main/java/no/nordicsemi/support/v18/scanner/BluetoothScannerImplV5.java +++ b/scanner/src/main/java/no/nordicsemi/support/v18/scanner/BluetoothScannerImplV5.java @@ -22,14 +22,12 @@ public class BluetoothScannerImplV5 extends BluetoothLeScannerCompat { @Nullable private EventHandler handlerThread; @Nullable - private Handler powerSaveHandler; private BleCentralManager centralManager; private List filters; @Override protected void startScanInternal(Context context, List scanFilters ,ScanSettings scanSettings, ScanCallback callback, EventHandler handler) { - boolean shouldStart; synchronized (wrappers) { if (wrappers.containsKey(callback)) { throw new IllegalArgumentException("scanner already started with given scanCallback"); @@ -37,7 +35,6 @@ public class BluetoothScannerImplV5 extends BluetoothLeScannerCompat { final ScanCallbackWrapper wrapper = new ScanCallbackWrapper( false, false, scanFilters, scanSettings, callback, handler); - shouldStart = wrappers.isEmpty(); wrappers.put(callback, wrapper); } centralManager = new BleCentralManager(context, new ScanCallbackV5()); @@ -59,8 +56,6 @@ public class BluetoothScannerImplV5 extends BluetoothLeScannerCompat { wrapper.close(); setPowerSaveSettings(); if (shouldStop) { - if (powerSaveHandler != null) { - } if (handlerThread != null) { handlerThread = null; } @@ -86,7 +81,6 @@ public class BluetoothScannerImplV5 extends BluetoothLeScannerCompat { @Override void stopScanInternal(Context context, IntentAgent callbackIntent) { - final Intent service = new Intent(); } @Override @@ -157,8 +151,6 @@ public class BluetoothScannerImplV5 extends BluetoothLeScannerCompat { @Override public void groupScanResultsEvent(final List scanResults) { - synchronized (wrappers) { - } } ScanResult fromNativeScanResult(BleScanResult nativeScanResult) { @@ -204,14 +196,14 @@ public class BluetoothScannerImplV5 extends BluetoothLeScannerCompat { if (minRest < Long.MAX_VALUE && minScan < Long.MAX_VALUE) { powerSaveRestInterval = minRest; powerSaveScanInterval = minScan; - if (powerSaveHandler != null) { + if (handlerThread != null) { handlerThread.removeTask(powerSaveScanTask); handlerThread.removeTask(powerSaveSleepTask); handlerThread.sendEvent(InnerEvent.get(powerSaveSleepTask), powerSaveScanInterval); } } else { powerSaveRestInterval = powerSaveScanInterval = 0; - if (powerSaveHandler != null) { + if (handlerThread != null) { handlerThread.removeTask(powerSaveScanTask); handlerThread.removeTask(powerSaveSleepTask); } diff --git a/scanner/src/main/java/no/nordicsemi/support/v18/scanner/PendingIntentExecutor.java b/scanner/src/main/java/no/nordicsemi/support/v18/scanner/PendingIntentExecutor.java index 7d7b265..58a80da 100644 --- a/scanner/src/main/java/no/nordicsemi/support/v18/scanner/PendingIntentExecutor.java +++ b/scanner/src/main/java/no/nordicsemi/support/v18/scanner/PendingIntentExecutor.java @@ -25,13 +25,6 @@ import java.util.List; this.callbackIntent = callbackIntent; this.reportDelay = settings.getReportDelayMillis(); } - PendingIntentExecutor(final IntentAgent callbackIntent, - final ScanSettings settings, - final Provider.Service service) { - this.callbackIntent = callbackIntent; - this.reportDelay = settings.getReportDelayMillis(); - this.context = context.getApplicationContext(); - } /* package */ void setTemporaryContext(@Nullable final Context context) { this.context = context; } diff --git a/scanner/src/main/java/no/nordicsemi/support/v18/scanner/PendingIntentReceiver.java b/scanner/src/main/java/no/nordicsemi/support/v18/scanner/PendingIntentReceiver.java deleted file mode 100644 index 156ac88..0000000 --- a/scanner/src/main/java/no/nordicsemi/support/v18/scanner/PendingIntentReceiver.java +++ /dev/null @@ -1,70 +0,0 @@ -package no.nordicsemi.support.v18.scanner; - -import ohos.aafwk.content.Intent; -import ohos.app.Context; -import ohos.app.GeneralReceiver; -import ohos.bluetooth.ble.BleScanFilter; -import ohos.event.intentagent.IntentAgent; - -import java.util.ArrayList; -import java.util.List; - -public class PendingIntentReceiver extends GeneralReceiver { - /* package */ static final String - ACTION = "no.nordicsemi.support.v18.ACTION_FOUND"; - /* package */ static final String - EXTRA_PENDING_INTENT = "no.nordicsemi.support.v18.EXTRA_PENDING_INTENT"; - /* package */ static final String - EXTRA_FILTERS = "no.nordicsemi.support.v18.EXTRA_FILTERS"; - /* package */ static final String - EXTRA_SETTINGS = "no.nordicsemi.support.v18.EXTRA_SETTINGS"; - /* package */ static final String - EXTRA_USE_HARDWARE_BATCHING = "no.nordicsemi.support.v18.EXTRA_USE_HARDWARE_BATCHING"; - /* package */ static final String - EXTRA_USE_HARDWARE_FILTERING = "no.nordicsemi.support.v18.EXTRA_USE_HARDWARE_FILTERING"; - /* package */ static final String - EXTRA_USE_HARDWARE_CALLBACK_TYPES = "no.nordicsemi.support.v18.EXTRA_USE_HARDWARE_CALLBACK_TYPES"; - /* package */ static final String - EXTRA_MATCH_LOST_TIMEOUT = "no.nordicsemi.support.v18.EXTRA_MATCH_LOST_TIMEOUT"; - /* package */ static final String - EXTRA_MATCH_LOST_INTERVAL = "no.nordicsemi.support.v18.EXTRA_MATCH_LOST_INTERVAL"; - /* package */ static final String - EXTRA_MATCH_MODE = "no.nordicsemi.support.v18.EXTRA_MATCH_MODE"; - /* package */ static final String - EXTRA_NUM_OF_MATCHES = "no.nordicsemi.support.v18.EXTRA_NUM_OF_MATCHES"; - - public void onReceive(final Context context, final Intent intent) { - if (context == null || intent == null) - return; - final IntentAgent callbackIntent = intent.getSequenceableParam(EXTRA_PENDING_INTENT); - if (callbackIntent == null) - return; - final ArrayList nativeScanFilters = - intent.getSequenceableArrayListParam(EXTRA_FILTERS); - final ScanSettings nativeScanSettings = intent.getSequenceableParam(EXTRA_SETTINGS); - if (nativeScanFilters == null || nativeScanSettings == null) - return; - final boolean useHardwareBatchingIfSupported - = intent.getBooleanParam(EXTRA_USE_HARDWARE_BATCHING, true); - final boolean useHardwareFilteringIfSupported - = intent.getBooleanParam(EXTRA_USE_HARDWARE_FILTERING, true); - final boolean useHardwareCallbackTypesIfSupported - = intent.getBooleanParam(EXTRA_USE_HARDWARE_CALLBACK_TYPES, true); - final long matchLostDeviceTimeout - = intent.getLongParam(EXTRA_MATCH_LOST_TIMEOUT, ScanSettings.MATCH_LOST_DEVICE_TIMEOUT_DEFAULT); - final long matchLostTaskInterval - = intent.getLongParam(EXTRA_MATCH_LOST_INTERVAL, ScanSettings.MATCH_LOST_TASK_INTERVAL_DEFAULT); - final int matchMode - = intent.getIntParam(EXTRA_MATCH_MODE, ScanSettings.MATCH_MODE_AGGRESSIVE); - final int numOfMatches - = intent.getIntParam(EXTRA_NUM_OF_MATCHES, ScanSettings.MATCH_NUM_MAX_ADVERTISEMENT); - final BluetoothLeScannerCompat scanner - = BluetoothLeScannerCompat.getScanner(); - synchronized (scanner) { - } - - final List nativeScanResults - = intent.getParcelableArrayListParam(BluetoothLeScannerCompat.EXTRA_LIST_SCAN_RESULT); - final ArrayList results = scanner.flushPendingScanResults(nativeScanResults); - } -} diff --git a/scanner/src/main/java/no/nordicsemi/support/v18/scanner/ScanFilter.java b/scanner/src/main/java/no/nordicsemi/support/v18/scanner/ScanFilter.java index cc588fb..a1de1e4 100644 --- a/scanner/src/main/java/no/nordicsemi/support/v18/scanner/ScanFilter.java +++ b/scanner/src/main/java/no/nordicsemi/support/v18/scanner/ScanFilter.java @@ -24,25 +24,25 @@ public final class ScanFilter implements Sequenceable { private final Object serviceDataUuid; @Nullable - private final byte[] serviceData; + private final String serviceData; @Nullable - private final byte[] serviceDataMask; + private final String serviceDataMask; private final int manufacturerId; @Nullable - private final byte[] manufacturerData; + private final String manufacturerData; @Nullable - private final byte[] manufacturerDataMask; + private final String manufacturerDataMask; private static final ScanFilter EMPTY = new Builder().build(); private ScanFilter(@Nullable final String name, @Nullable final String deviceAddress, final Object uuid, final Object uuidMask, - final Object serviceDataUuid, @Nullable final byte[] serviceData, - @Nullable final byte[] serviceDataMask, final int manufacturerId, - @Nullable final byte[] manufacturerData, - @Nullable final byte[] manufacturerDataMask) { + final Object serviceDataUuid, @Nullable final String serviceData, + @Nullable final String serviceDataMask, final int manufacturerId, + @Nullable final String manufacturerData, + @Nullable final String manufacturerDataMask) { this.deviceName = name; this.serviceUuid = uuid; this.serviceUuidMask = uuidMask; @@ -81,26 +81,26 @@ public final class ScanFilter implements Sequenceable { dest.writeParcelableEx((ParcelableEx) serviceUuid); dest.writeInt(serviceData == null ? 0 : 1); if (serviceData != null) { - dest.writeInt(serviceData.length); - dest.writeByteArray(serviceData); + dest.writeInt(serviceData.length()); + dest.writeByteArray(serviceData.getBytes()); dest.writeInt(serviceDataMask == null ? 0 : 1); if (serviceDataMask != null) { - dest.writeInt(serviceDataMask.length); - dest.writeByteArray(serviceDataMask); + dest.writeInt(serviceDataMask.length()); + dest.writeByteArray(serviceDataMask.getBytes()); } } } dest.writeInt(manufacturerId); dest.writeInt(manufacturerData == null ? 0 : 1); if (manufacturerData != null) { - dest.writeInt(manufacturerData.length); - dest.writeByteArray(manufacturerData); + dest.writeInt(manufacturerData.length()); + dest.writeByteArray(manufacturerData.getBytes()); dest.writeInt(manufacturerDataMask == null ? 0 : 1); if (manufacturerDataMask != null) { - dest.writeInt(manufacturerDataMask.length); - dest.writeByteArray(manufacturerDataMask); + dest.writeInt(manufacturerDataMask.length()); + dest.writeByteArray(manufacturerDataMask.getBytes()); } } } @@ -133,12 +133,12 @@ public final class ScanFilter implements Sequenceable { final byte[] serviceData = new byte[serviceDataLength]; in.readByteArray(serviceData); if (in.readInt() == 0) { - builder.setServiceData(serviceDataUuid, serviceData); + builder.setServiceData(serviceDataUuid, Arrays.toString(serviceData)); } else { final int serviceDataMaskLength = in.readInt(); final byte[] serviceDataMask = new byte[serviceDataMaskLength]; in.readByteArray(serviceDataMask); - builder.setServiceData(serviceDataUuid, serviceData, serviceDataMask); + builder.setServiceData(serviceDataUuid, Arrays.toString(serviceData), Arrays.toString(serviceDataMask)); } } } @@ -149,13 +149,13 @@ public final class ScanFilter implements Sequenceable { final byte[] manufacturerData = new byte[manufacturerDataLength]; in.readByteArray(manufacturerData); if (in.readInt() == 0) { - builder.setManufacturerData(manufacturerId, manufacturerData); + builder.setManufacturerData(manufacturerId, Arrays.toString(manufacturerData)); } else { final int manufacturerDataMaskLength = in.readInt(); final byte[] manufacturerDataMask = new byte[manufacturerDataMaskLength]; in.readByteArray(manufacturerDataMask); - builder.setManufacturerData(manufacturerId, manufacturerData, - manufacturerDataMask); + builder.setManufacturerData(manufacturerId, Arrays.toString(manufacturerData), + Arrays.toString(manufacturerDataMask)); } } return builder.build(); @@ -182,12 +182,12 @@ public final class ScanFilter implements Sequenceable { @Nullable public byte[] getServiceData() { - return serviceData; + return serviceData.getBytes(); } @Nullable public byte[] getServiceDataMask() { - return serviceDataMask; + return serviceDataMask.getBytes(); } public Object getServiceDataUuid() { @@ -200,12 +200,12 @@ public final class ScanFilter implements Sequenceable { @Nullable public byte[] getManufacturerData() { - return manufacturerData; + return manufacturerData.getBytes(); } @Nullable public byte[] getManufacturerDataMask() { - return manufacturerDataMask; + return manufacturerDataMask.getBytes(); } public boolean matches(final ScanResult scanResult) { @@ -222,13 +222,10 @@ public final class ScanFilter implements Sequenceable { || serviceData != null)) { return false; } - if (deviceName != null && !deviceName.equals(scanRecord.getDeviceName())) { + if (deviceName != null) { + scanRecord.getDeviceName(); return false; } - if (serviceDataUuid != null && scanRecord != null) { - } - if (manufacturerId >= 0 && scanRecord != null) { - } return true; } @@ -294,20 +291,20 @@ public final class ScanFilter implements Sequenceable { + deviceAddress + ", mUuid=" + serviceUuid + ", uuidMask=" + serviceUuidMask + ", serviceDataUuid=" + Objects.toString(serviceDataUuid) + ", serviceData=" - + Arrays.toString(serviceData) + ", serviceDataMask=" - + Arrays.toString(serviceDataMask) + ", manufacturerId=" + manufacturerId - + ", manufacturerData=" + Arrays.toString(manufacturerData) - + ", manufacturerDataMask=" + Arrays.toString(manufacturerDataMask) + "]"; + + serviceData + ", serviceDataMask=" + + serviceDataMask + ", manufacturerId=" + manufacturerId + + ", manufacturerData=" + manufacturerData + + ", manufacturerDataMask=" + manufacturerDataMask + "]"; } @Override public int hashCode() { return Objects.hash(deviceName, deviceAddress, manufacturerId, - Arrays.hashCode(manufacturerData), - Arrays.hashCode(manufacturerDataMask), + manufacturerData, + manufacturerDataMask, + serviceData, + serviceDataMask, serviceDataUuid, - Arrays.hashCode(serviceData), - Arrays.hashCode(serviceDataMask), serviceUuid, serviceUuidMask); } @@ -355,11 +352,11 @@ public final class ScanFilter implements Sequenceable { private Object serviceUuid; private Object uuidMask; private Object serviceDataUuid; - private byte[] serviceData; - private byte[] serviceDataMask; + private String serviceData; + private String serviceDataMask; private int manufacturerId = -1; - private byte[] manufacturerData; - private byte[] manufacturerDataMask; + private String manufacturerData; + private String manufacturerDataMask; public Builder setDeviceName(@Nullable final String deviceName) { this.deviceName = deviceName; @@ -387,7 +384,7 @@ public final class ScanFilter implements Sequenceable { return this; } public Builder setServiceData(final Object serviceDataUuid, - @Nullable final byte[] serviceData) { + @Nullable final String serviceData) { if (serviceDataUuid == null) { throw new IllegalArgumentException("serviceDataUuid is null!"); } @@ -398,8 +395,8 @@ public final class ScanFilter implements Sequenceable { } public Builder setServiceData(final Object serviceDataUuid, - @Nullable final byte[] serviceData, - @Nullable final byte[] serviceDataMask) { + @Nullable final String serviceData, + @Nullable final String serviceDataMask) { if (serviceDataUuid == null) { throw new IllegalArgumentException("serviceDataUuid is null"); } @@ -408,7 +405,7 @@ public final class ScanFilter implements Sequenceable { throw new IllegalArgumentException( "serviceData is null while serviceDataMask is not null"); } - if (serviceData.length != serviceDataMask.length) { + if (serviceData.length() != serviceDataMask.length()) { throw new IllegalArgumentException( "size mismatch for service data and service data mask"); } @@ -420,7 +417,7 @@ public final class ScanFilter implements Sequenceable { } public Builder setManufacturerData(final int manufacturerId, - @Nullable final byte[] manufacturerData) { + @Nullable final String manufacturerData) { if (manufacturerData != null && manufacturerId < 0) { throw new IllegalArgumentException("invalid manufacture id"); } @@ -431,8 +428,8 @@ public final class ScanFilter implements Sequenceable { } public Builder setManufacturerData(final int manufacturerId, - @Nullable final byte[] manufacturerData, - @Nullable final byte[] manufacturerDataMask) { + @Nullable final String manufacturerData, + @Nullable final String manufacturerDataMask) { if (manufacturerData != null && manufacturerId < 0) { throw new IllegalArgumentException("invalid manufacture id"); } @@ -441,7 +438,7 @@ public final class ScanFilter implements Sequenceable { throw new IllegalArgumentException( "manufacturerData is null while manufacturerDataMask is not null"); } - if (manufacturerData.length != manufacturerDataMask.length) { + if (manufacturerData.length() != manufacturerDataMask.length()) { throw new IllegalArgumentException( "size mismatch for manufacturerData and manufacturerDataMask"); } diff --git a/scanner/src/main/java/no/nordicsemi/support/v18/scanner/ScanRecord.java b/scanner/src/main/java/no/nordicsemi/support/v18/scanner/ScanRecord.java index 2b7f70c..af27531 100644 --- a/scanner/src/main/java/no/nordicsemi/support/v18/scanner/ScanRecord.java +++ b/scanner/src/main/java/no/nordicsemi/support/v18/scanner/ScanRecord.java @@ -4,6 +4,8 @@ import ohos.utils.SequenceUuid; import org.jetbrains.annotations.Nullable; import java.util.*; +import java.util.Objects; + public final class ScanRecord { private static final String TAG = "ScanRecord"; private static final int DATA_TYPE_FLAGS = 0x01; @@ -28,7 +30,7 @@ public final class ScanRecord { @Nullable private final Map serviceData; private final int txPowerLevel; private final String deviceName; - private final byte[] bytes; + private final String bytes; public int getAdvertiseFlags() { return advertiseFlags; } @@ -63,7 +65,7 @@ public final class ScanRecord { @Nullable public byte[] getBytes() { - return bytes; + return bytes.getBytes(); } private ScanRecord(@Nullable final List serviceUuids, @@ -77,7 +79,7 @@ public final class ScanRecord { this.deviceName = localName; this.advertiseFlags = advertiseFlags; this.txPowerLevel = txPowerLevel; - this.bytes = bytes; + this.bytes = Arrays.toString(bytes); } @Nullable @@ -94,88 +96,83 @@ public final class ScanRecord { PlainArray manufacturerData = null; Map serviceData = null; - try { - while (currentPos < scanRecord.length) { - // length is unsigned int. - final int length = scanRecord[currentPos++] & 0xFF; - if (length == 0) { + while (currentPos < scanRecord.length) { + // length is unsigned int. + final int length = scanRecord[currentPos++] & 0xFF; + if (length == 0) { + break; + } + final int dataLength = length - 1; + final int fieldType = scanRecord[currentPos++] & 0xFF; + switch (fieldType) { + case DATA_TYPE_FLAGS: + advertiseFlag = scanRecord[currentPos] & 0xFF; + break; + case DATA_TYPE_SERVICE_UUIDS_16_BIT_PARTIAL: + case DATA_TYPE_SERVICE_UUIDS_16_BIT_COMPLETE: + if (serviceUuids == null) + serviceUuids = new ArrayList<>(); + parseServiceUuid(scanRecord, currentPos, + dataLength, BluetoothUuid.UUID_BYTES_16_BIT, serviceUuids); + break; + case DATA_TYPE_SERVICE_UUIDS_32_BIT_PARTIAL: + case DATA_TYPE_SERVICE_UUIDS_32_BIT_COMPLETE: + if (serviceUuids == null) + serviceUuids = new ArrayList<>(); + parseServiceUuid(scanRecord, currentPos, dataLength, + BluetoothUuid.UUID_BYTES_32_BIT, serviceUuids); + break; + case DATA_TYPE_SERVICE_UUIDS_128_BIT_PARTIAL: + case DATA_TYPE_SERVICE_UUIDS_128_BIT_COMPLETE: + if (serviceUuids == null) + serviceUuids = new ArrayList<>(); + parseServiceUuid(scanRecord, currentPos, dataLength, + BluetoothUuid.UUID_BYTES_128_BIT, serviceUuids); + break; + case DATA_TYPE_LOCAL_NAME_SHORT: + case DATA_TYPE_LOCAL_NAME_COMPLETE: + localName = new String( + extractBytes(scanRecord, currentPos, dataLength)); + break; + case DATA_TYPE_TX_POWER_LEVEL: + txPowerLevel = scanRecord[currentPos]; + break; + case DATA_TYPE_SERVICE_DATA_16_BIT: + case DATA_TYPE_SERVICE_DATA_32_BIT: + case DATA_TYPE_SERVICE_DATA_128_BIT: + int serviceUuidLength = BluetoothUuid.UUID_BYTES_16_BIT; + if (fieldType == DATA_TYPE_SERVICE_DATA_32_BIT) { + serviceUuidLength = BluetoothUuid.UUID_BYTES_32_BIT; + } else if (fieldType == DATA_TYPE_SERVICE_DATA_128_BIT) { + serviceUuidLength = BluetoothUuid.UUID_BYTES_128_BIT; + } + + final byte[] serviceDataUuidBytes = extractBytes(scanRecord, currentPos, + serviceUuidLength); + final SequenceUuid serviceDataUuid = BluetoothUuid.parseUuidFrom( + serviceDataUuidBytes); + final byte[] serviceDataArray = extractBytes(scanRecord, + currentPos + serviceUuidLength, dataLength - serviceUuidLength); + if (serviceData == null) + serviceData = new HashMap<>(); + serviceData.put(serviceDataUuid, serviceDataArray); + break; + case DATA_TYPE_MANUFACTURER_SPECIFIC_DATA: + final int manufacturerId = ((scanRecord[currentPos + 1] & 0xFF) << 8) + + (scanRecord[currentPos] & 0xFF); + final byte[] manufacturerDataBytes = extractBytes(scanRecord, currentPos + 2, + dataLength - 2); + if (manufacturerData == null) + manufacturerData = new PlainArray<>(); + manufacturerData.put(manufacturerId, manufacturerDataBytes); + break; + default: break; - } - final int dataLength = length - 1; - final int fieldType = scanRecord[currentPos++] & 0xFF; - switch (fieldType) { - case DATA_TYPE_FLAGS: - advertiseFlag = scanRecord[currentPos] & 0xFF; - break; - case DATA_TYPE_SERVICE_UUIDS_16_BIT_PARTIAL: - case DATA_TYPE_SERVICE_UUIDS_16_BIT_COMPLETE: - if (serviceUuids == null) - serviceUuids = new ArrayList<>(); - parseServiceUuid(scanRecord, currentPos, - dataLength, BluetoothUuid.UUID_BYTES_16_BIT, serviceUuids); - break; - case DATA_TYPE_SERVICE_UUIDS_32_BIT_PARTIAL: - case DATA_TYPE_SERVICE_UUIDS_32_BIT_COMPLETE: - if (serviceUuids == null) - serviceUuids = new ArrayList<>(); - parseServiceUuid(scanRecord, currentPos, dataLength, - BluetoothUuid.UUID_BYTES_32_BIT, serviceUuids); - break; - case DATA_TYPE_SERVICE_UUIDS_128_BIT_PARTIAL: - case DATA_TYPE_SERVICE_UUIDS_128_BIT_COMPLETE: - if (serviceUuids == null) - serviceUuids = new ArrayList<>(); - parseServiceUuid(scanRecord, currentPos, dataLength, - BluetoothUuid.UUID_BYTES_128_BIT, serviceUuids); - break; - case DATA_TYPE_LOCAL_NAME_SHORT: - case DATA_TYPE_LOCAL_NAME_COMPLETE: - localName = new String( - extractBytes(scanRecord, currentPos, dataLength)); - break; - case DATA_TYPE_TX_POWER_LEVEL: - txPowerLevel = scanRecord[currentPos]; - break; - case DATA_TYPE_SERVICE_DATA_16_BIT: - case DATA_TYPE_SERVICE_DATA_32_BIT: - case DATA_TYPE_SERVICE_DATA_128_BIT: - int serviceUuidLength = BluetoothUuid.UUID_BYTES_16_BIT; - if (fieldType == DATA_TYPE_SERVICE_DATA_32_BIT) { - serviceUuidLength = BluetoothUuid.UUID_BYTES_32_BIT; - } else if (fieldType == DATA_TYPE_SERVICE_DATA_128_BIT) { - serviceUuidLength = BluetoothUuid.UUID_BYTES_128_BIT; - } - - final byte[] serviceDataUuidBytes = extractBytes(scanRecord, currentPos, - serviceUuidLength); - final SequenceUuid serviceDataUuid = BluetoothUuid.parseUuidFrom( - serviceDataUuidBytes); - final byte[] serviceDataArray = extractBytes(scanRecord, - currentPos + serviceUuidLength, dataLength - serviceUuidLength); - if (serviceData == null) - serviceData = new HashMap<>(); - serviceData.put(serviceDataUuid, serviceDataArray); - break; - case DATA_TYPE_MANUFACTURER_SPECIFIC_DATA: - final int manufacturerId = ((scanRecord[currentPos + 1] & 0xFF) << 8) + - (scanRecord[currentPos] & 0xFF); - final byte[] manufacturerDataBytes = extractBytes(scanRecord, currentPos + 2, - dataLength - 2); - if (manufacturerData == null) - manufacturerData = new PlainArray<>(); - manufacturerData.put(manufacturerId, manufacturerDataBytes); - break; - default: - break; - } - currentPos += dataLength; } - return new ScanRecord(serviceUuids, manufacturerData, serviceData, - advertiseFlag, txPowerLevel, localName, scanRecord); - } catch (final Exception e) { - return new ScanRecord(null, null, null, - -1, Integer.MIN_VALUE, null, scanRecord); + currentPos += dataLength; } + return new ScanRecord(serviceUuids, manufacturerData, serviceData, + advertiseFlag, txPowerLevel, localName, scanRecord); } @Override @@ -187,7 +184,12 @@ public final class ScanRecord { return false; } ScanRecord other = (ScanRecord) obj; - return Arrays.equals(bytes, other.bytes); + return Arrays.equals(bytes.getBytes(), other.bytes.getBytes()); + } + + @Override + public int hashCode() { + return Objects.hash(advertiseFlags, serviceUuids, manufacturerSpecificData, serviceData, txPowerLevel, deviceName, bytes); } @Override diff --git a/scanner/src/main/java/no/nordicsemi/support/v18/scanner/ScanSettings.java b/scanner/src/main/java/no/nordicsemi/support/v18/scanner/ScanSettings.java index 30978ad..f03032c 100644 --- a/scanner/src/main/java/no/nordicsemi/support/v18/scanner/ScanSettings.java +++ b/scanner/src/main/java/no/nordicsemi/support/v18/scanner/ScanSettings.java @@ -127,7 +127,7 @@ public final class ScanSettings implements Serializable { this.legacy = legacy; this.phy = phy; this.isuseHardwareFilteringIfSupported = hardwareFiltering; - this.isuseHardwareCallbackTypesIfSupported = hardwareBatching; + this.isuseHardwareBatchingIfSupported = hardwareBatching; this.isuseHardwareCallbackTypesIfSupported = hardwareCallbackTypes; this.matchLostDeviceTimeout = matchTimeout * 1000000L; // convert to nanos this.matchLostTaskInterval = taskInterval; diff --git a/scanner/src/main/java/no/nordicsemi/support/v18/scanner/ScannerService.java b/scanner/src/main/java/no/nordicsemi/support/v18/scanner/ScannerService.java index b5d0bce..b0eb2da 100644 --- a/scanner/src/main/java/no/nordicsemi/support/v18/scanner/ScannerService.java +++ b/scanner/src/main/java/no/nordicsemi/support/v18/scanner/ScannerService.java @@ -20,28 +20,12 @@ public class ScannerService extends Ability { /* package */ static final String EXTRA_START = "EXTRA_START"; private HashMap callbacks; - Handler handler; private final Object LOCK = new Object(); - Context context = getContext(); @Override protected void onStart(Intent intent) { super.onStart(intent); callbacks = new HashMap<>(); - handler = new Handler() { - - @Override - public void publish(LogRecord logRecord) { - } - - @Override - public void flush() { - } - - @Override - public void close() throws SecurityException { - } - }; } @Override @@ -50,7 +34,7 @@ public class ScannerService extends Ability { final IntentAgent callbackIntent = intent.getSequenceableParam(EXTRA_PENDING_INTENT); final boolean start = intent.getBooleanParam(EXTRA_START, false); final boolean stop = !start; - if (callbackIntent == null) { + if (callbackIntent != null) { boolean shouldStop; synchronized (LOCK) { shouldStop = callbacks.isEmpty(); @@ -116,7 +100,6 @@ public class ScannerService extends Ability { } callbacks.clear(); callbacks = null; - handler = null; super.onStop(); super.onStop(); } -- Gitee From ec3adf3a1644cf7ed433ff48757fd9519203cab9 Mon Sep 17 00:00:00 2001 From: TFStudy <3202410880@qq.com> Date: Tue, 6 Jul 2021 19:42:54 +0800 Subject: [PATCH 2/6] =?UTF-8?q?findBugs=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 3 +++ README.md | 2 +- build.gradle | 4 ++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e02d0e9..624afaf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,2 +1,5 @@ +## 0.0.2-SNAPSHOT +* 修改FindBugs + ## 0.0.1-SNAPSHOT ohos 第一个版本,完整实现了原库的全部 api \ No newline at end of file diff --git a/README.md b/README.md index a37cc3f..ed9c6e7 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ allprojects { 2.在entry模块下的build.gradle文件中添加依赖。 ``` dependencies { - implementation('com.gitee.chinasoft_ohos:Scanner-Compat-Library:0.0.1-SNAPSHOT') + implementation('com.gitee.chinasoft_ohos:Scanner-Compat-Library:0.0.2-SNAPSHOT') ...... } ``` diff --git a/build.gradle b/build.gradle index 5113244..8414901 100644 --- a/build.gradle +++ b/build.gradle @@ -19,8 +19,8 @@ buildscript { jcenter() } dependencies { - classpath 'com.huawei.ohos:hap:2.4.4.2' - classpath 'com.huawei.ohos:decctest:1.0.0.6' + classpath 'com.huawei.ohos:hap:2.4.5.0' + classpath 'com.huawei.ohos:decctest:1.2.4.1' } } -- Gitee From 04e2e430871311f84024ae733fb06032df987d24 Mon Sep 17 00:00:00 2001 From: TFStudy <3202410880@qq.com> Date: Wed, 7 Jul 2021 10:18:14 +0800 Subject: [PATCH 3/6] =?UTF-8?q?findBugs=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- {entry => demo}/build.gradle | 23 ++++++++--- {entry => demo}/src/main/config.json | 31 +++++++-------- .../java/no/nordicsemi/demo}/HistoryBean.java | 2 +- .../nordicsemi/demo}/HistoryItemProvider.java | 2 +- .../java/no/nordicsemi/demo}/MainAbility.java | 6 +-- .../no/nordicsemi/demo}/MyApplication.java | 2 +- .../demo}/slice/MainAbilitySlice.java | 8 ++-- .../main/resources/base/element/string.json | 8 ++-- .../base/graphic/background_ability_main.xml | 0 .../base/graphic/background_list.xml | 0 .../resources/base/layout/ability_main.xml | 0 .../resources/base/layout/item_layout.xml | 0 .../src/main/resources/base/media/icon.png | Bin .../src/main/resources/en/element/string.json | 16 ++++++++ .../src/main/resources/zh/element/string.json | 16 ++++++++ .../no/nordicsemi/demo}/ExampleOhosTest.java | 5 +-- .../java/no/nordicsemi/demo}/ExampleTest.java | 2 +- entry/src/ohosTest/config.json | 36 ------------------ settings.gradle | 2 +- 19 files changed, 82 insertions(+), 77 deletions(-) rename {entry => demo}/build.gradle (31%) rename {entry => demo}/src/main/config.json (77%) rename {entry/src/main/java/com/example/myapplication => demo/src/main/java/no/nordicsemi/demo}/HistoryBean.java (87%) rename {entry/src/main/java/com/example/myapplication => demo/src/main/java/no/nordicsemi/demo}/HistoryItemProvider.java (98%) rename {entry/src/main/java/com/example/myapplication => demo/src/main/java/no/nordicsemi/demo}/MainAbility.java (67%) rename {entry/src/main/java/com/example/myapplication => demo/src/main/java/no/nordicsemi/demo}/MyApplication.java (83%) rename {entry/src/main/java/com/example/myapplication => demo/src/main/java/no/nordicsemi/demo}/slice/MainAbilitySlice.java (97%) rename {entry => demo}/src/main/resources/base/element/string.json (47%) rename {entry => demo}/src/main/resources/base/graphic/background_ability_main.xml (100%) rename {entry => demo}/src/main/resources/base/graphic/background_list.xml (100%) rename {entry => demo}/src/main/resources/base/layout/ability_main.xml (100%) rename {entry => demo}/src/main/resources/base/layout/item_layout.xml (100%) rename {entry => demo}/src/main/resources/base/media/icon.png (100%) create mode 100644 demo/src/main/resources/en/element/string.json create mode 100644 demo/src/main/resources/zh/element/string.json rename {entry/src/ohosTest/java/com/example/myapplication => demo/src/ohosTest/java/no/nordicsemi/demo}/ExampleOhosTest.java (68%) rename {entry/src/test/java/com/example/myapplication => demo/src/test/java/no/nordicsemi/demo}/ExampleTest.java (73%) delete mode 100644 entry/src/ohosTest/config.json diff --git a/entry/build.gradle b/demo/build.gradle similarity index 31% rename from entry/build.gradle rename to demo/build.gradle index 57a050b..b9f9b02 100644 --- a/entry/build.gradle +++ b/demo/build.gradle @@ -1,15 +1,28 @@ apply plugin: 'com.huawei.ohos.hap' +apply plugin: 'com.huawei.ohos.decctest' +//For instructions on signature configuration, see https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ide_debug_device-0000001053822404#section1112183053510 ohos { - compileSdkVersion 6 + compileSdkVersion 5 defaultConfig { compatibleSdkVersion 5 } - + buildTypes { + release { + proguardOpt { + proguardEnabled false + rulesFiles 'proguard-rules.pro' + } + } + } + } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar', '*.har']) - testCompile 'junit:junit:4.12' - implementation project(':scanner') - ohosTestImplementation 'com.huawei.ohos.testkit:runner:1.0.0.100' + testImplementation 'junit:junit:4.13' + ohosTestImplementation 'com.huawei.ohos.testkit:runner:1.0.0.200' + implementation(project(':scanner')) +} +decc { + supportType = ['html','xml'] } diff --git a/entry/src/main/config.json b/demo/src/main/config.json similarity index 77% rename from entry/src/main/config.json rename to demo/src/main/config.json index 4a13b41..a8c3e93 100644 --- a/entry/src/main/config.json +++ b/demo/src/main/config.json @@ -1,24 +1,25 @@ { "app": { - "bundleName": "com.example.myapplication", - "vendor": "example", + "bundleName": "no.nordicsemi.demo", + "vendor": "nordicsemi", "version": { - "code": 1, - "name": "1.0" + "code": 1000000, + "name": "1.0.0" } }, "deviceConfig": {}, "module": { - "package": "com.example.myapplication", + "package": "no.nordicsemi.demo", "name": ".MyApplication", + "mainAbility": "no.nordicsemi.demo.MainAbility", "deviceType": [ "phone" ], "distro": { "deliveryWithInstall": true, - "moduleName": "entry", + "moduleName": "demo", "moduleType": "entry", - "installationFree":false + "installationFree": false }, "abilities": [ { @@ -33,17 +34,17 @@ } ], "orientation": "unspecified", - "name": "com.example.myapplication.MainAbility", + "name": "no.nordicsemi.demo.MainAbility", "icon": "$media:icon", "description": "$string:mainability_description", - "label": "$string:app_name", + "label": "$string:demo_MainAbility", "type": "page", "launchType": "standard" }, { "name": "no.nordicsemi.support.v18.scanner.ScannerService", "type": "service", - "visible": true + "visible": false } ], "reqPermissions": [ @@ -52,7 +53,7 @@ "reason": "使用蓝牙权限", "usedScene": { "ability": [ - "com.example.myapplication.slice.MainAbility", + "no.nordicsemi.demo.slice.MainAbility", "no.nordicsemi.support.v18.scanner.ScannerService" ], "when": "always" @@ -63,7 +64,7 @@ "reason": "搜索蓝牙权限", "usedScene": { "ability": [ - "com.example.myapplication.slice.MainAbility", + "no.nordicsemi.demo.slice.MainAbility", "no.nordicsemi.support.v18.scanner.ScannerService" ], "when": "always" @@ -74,7 +75,7 @@ "reason": "允许前台获取权限", "usedScene": { "ability": [ - "com.example.myapplication.slice.MainAbility", + "no.nordicsemi.demo.slice.MainAbility", "no.nordicsemi.support.v18.scanner.ScannerService" ], "when": "always" @@ -85,7 +86,7 @@ "reason": "允许后台获取权限", "usedScene": { "ability": [ - "com.example.myapplication.slice.MainAbility", + "no.nordicsemi.demo.slice.MainAbility", "no.nordicsemi.support.v18.scanner.ScannerService" ], "when": "always" @@ -96,7 +97,7 @@ "reason": "允许应用获取数据网络信息", "usedScene": { "ability": [ - "com.example.myapplication.slice.MainAbility", + "no.nordicsemi.demo.slice.MainAbility", "no.nordicsemi.support.v18.scanner.ScannerService" ], "when": "always" diff --git a/entry/src/main/java/com/example/myapplication/HistoryBean.java b/demo/src/main/java/no/nordicsemi/demo/HistoryBean.java similarity index 87% rename from entry/src/main/java/com/example/myapplication/HistoryBean.java rename to demo/src/main/java/no/nordicsemi/demo/HistoryBean.java index 1c58943..46269c1 100644 --- a/entry/src/main/java/com/example/myapplication/HistoryBean.java +++ b/demo/src/main/java/no/nordicsemi/demo/HistoryBean.java @@ -1,4 +1,4 @@ -package com.example.myapplication; +package no.nordicsemi.demo; public class HistoryBean { diff --git a/entry/src/main/java/com/example/myapplication/HistoryItemProvider.java b/demo/src/main/java/no/nordicsemi/demo/HistoryItemProvider.java similarity index 98% rename from entry/src/main/java/com/example/myapplication/HistoryItemProvider.java rename to demo/src/main/java/no/nordicsemi/demo/HistoryItemProvider.java index e958f11..8b50f6a 100644 --- a/entry/src/main/java/com/example/myapplication/HistoryItemProvider.java +++ b/demo/src/main/java/no/nordicsemi/demo/HistoryItemProvider.java @@ -1,4 +1,4 @@ -package com.example.myapplication; +package no.nordicsemi.demo; import no.nordicsemi.support.v18.scanner.ScanResult; import ohos.aafwk.ability.AbilitySlice; diff --git a/entry/src/main/java/com/example/myapplication/MainAbility.java b/demo/src/main/java/no/nordicsemi/demo/MainAbility.java similarity index 67% rename from entry/src/main/java/com/example/myapplication/MainAbility.java rename to demo/src/main/java/no/nordicsemi/demo/MainAbility.java index d184331..6c5951f 100644 --- a/entry/src/main/java/com/example/myapplication/MainAbility.java +++ b/demo/src/main/java/no/nordicsemi/demo/MainAbility.java @@ -1,9 +1,8 @@ -package com.example.myapplication; +package no.nordicsemi.demo; -import com.example.myapplication.slice.MainAbilitySlice; +import no.nordicsemi.demo.slice.MainAbilitySlice; import ohos.aafwk.ability.Ability; import ohos.aafwk.content.Intent; -import ohos.aafwk.content.Operation; public class MainAbility extends Ability { @Override @@ -11,5 +10,4 @@ public class MainAbility extends Ability { super.onStart(intent); super.setMainRoute(MainAbilitySlice.class.getName()); } - } diff --git a/entry/src/main/java/com/example/myapplication/MyApplication.java b/demo/src/main/java/no/nordicsemi/demo/MyApplication.java similarity index 83% rename from entry/src/main/java/com/example/myapplication/MyApplication.java rename to demo/src/main/java/no/nordicsemi/demo/MyApplication.java index 33915e2..ffd41fd 100644 --- a/entry/src/main/java/com/example/myapplication/MyApplication.java +++ b/demo/src/main/java/no/nordicsemi/demo/MyApplication.java @@ -1,4 +1,4 @@ -package com.example.myapplication; +package no.nordicsemi.demo; import ohos.aafwk.ability.AbilityPackage; diff --git a/entry/src/main/java/com/example/myapplication/slice/MainAbilitySlice.java b/demo/src/main/java/no/nordicsemi/demo/slice/MainAbilitySlice.java similarity index 97% rename from entry/src/main/java/com/example/myapplication/slice/MainAbilitySlice.java rename to demo/src/main/java/no/nordicsemi/demo/slice/MainAbilitySlice.java index 46b9a56..d455a2d 100644 --- a/entry/src/main/java/com/example/myapplication/slice/MainAbilitySlice.java +++ b/demo/src/main/java/no/nordicsemi/demo/slice/MainAbilitySlice.java @@ -1,7 +1,7 @@ -package com.example.myapplication.slice; +package no.nordicsemi.demo.slice; -import com.example.myapplication.HistoryItemProvider; -import com.example.myapplication.ResourceTable; +import no.nordicsemi.demo.HistoryItemProvider; +import no.nordicsemi.demo.ResourceTable; import no.nordicsemi.support.v18.scanner.*; import ohos.aafwk.ability.AbilitySlice; import ohos.aafwk.content.Intent; @@ -9,8 +9,6 @@ import ohos.agp.components.*; import ohos.agp.window.dialog.ToastDialog; import ohos.app.Context; import ohos.bluetooth.ble.BleScanFilter; -import ohos.bluetooth.ble.BleScanResult; -import ohos.bundle.IBundleManager; import ohos.hiviewdfx.HiLog; import ohos.hiviewdfx.HiLogLabel; diff --git a/entry/src/main/resources/base/element/string.json b/demo/src/main/resources/base/element/string.json similarity index 47% rename from entry/src/main/resources/base/element/string.json rename to demo/src/main/resources/base/element/string.json index 6becfe4..96cde21 100644 --- a/entry/src/main/resources/base/element/string.json +++ b/demo/src/main/resources/base/element/string.json @@ -1,15 +1,15 @@ { "string": [ { - "name": "app_name", - "value": "MyApplication" + "name": "demo_MainAbility", + "value": "demo_MainAbility" }, { "name": "mainability_description", - "value": "Java_Phone_Empty Feature Ability" + "value": "Java_Empty Ability" }, { - "name": "HelloWorld", + "name": "mainability_HelloWorld", "value": "Hello World" } ] diff --git a/entry/src/main/resources/base/graphic/background_ability_main.xml b/demo/src/main/resources/base/graphic/background_ability_main.xml similarity index 100% rename from entry/src/main/resources/base/graphic/background_ability_main.xml rename to demo/src/main/resources/base/graphic/background_ability_main.xml diff --git a/entry/src/main/resources/base/graphic/background_list.xml b/demo/src/main/resources/base/graphic/background_list.xml similarity index 100% rename from entry/src/main/resources/base/graphic/background_list.xml rename to demo/src/main/resources/base/graphic/background_list.xml diff --git a/entry/src/main/resources/base/layout/ability_main.xml b/demo/src/main/resources/base/layout/ability_main.xml similarity index 100% rename from entry/src/main/resources/base/layout/ability_main.xml rename to demo/src/main/resources/base/layout/ability_main.xml diff --git a/entry/src/main/resources/base/layout/item_layout.xml b/demo/src/main/resources/base/layout/item_layout.xml similarity index 100% rename from entry/src/main/resources/base/layout/item_layout.xml rename to demo/src/main/resources/base/layout/item_layout.xml diff --git a/entry/src/main/resources/base/media/icon.png b/demo/src/main/resources/base/media/icon.png similarity index 100% rename from entry/src/main/resources/base/media/icon.png rename to demo/src/main/resources/base/media/icon.png diff --git a/demo/src/main/resources/en/element/string.json b/demo/src/main/resources/en/element/string.json new file mode 100644 index 0000000..ea7c001 --- /dev/null +++ b/demo/src/main/resources/en/element/string.json @@ -0,0 +1,16 @@ +{ + "string": [ + { + "name": "demo_MainAbility", + "value": "demo_MainAbility" + }, + { + "name": "mainability_description", + "value": "Java_Empty Ability" + }, + { + "name": "mainability_HelloWorld", + "value": "Hello World" + } + ] +} diff --git a/demo/src/main/resources/zh/element/string.json b/demo/src/main/resources/zh/element/string.json new file mode 100644 index 0000000..168f6d7 --- /dev/null +++ b/demo/src/main/resources/zh/element/string.json @@ -0,0 +1,16 @@ +{ + "string": [ + { + "name": "demo_MainAbility", + "value": "demo_MainAbility" + }, + { + "name": "mainability_description", + "value": "Java_Empty Ability" + }, + { + "name": "mainability_HelloWorld", + "value": "你好,世界" + } + ] +} \ No newline at end of file diff --git a/entry/src/ohosTest/java/com/example/myapplication/ExampleOhosTest.java b/demo/src/ohosTest/java/no/nordicsemi/demo/ExampleOhosTest.java similarity index 68% rename from entry/src/ohosTest/java/com/example/myapplication/ExampleOhosTest.java rename to demo/src/ohosTest/java/no/nordicsemi/demo/ExampleOhosTest.java index 49a1130..39cb03f 100644 --- a/entry/src/ohosTest/java/com/example/myapplication/ExampleOhosTest.java +++ b/demo/src/ohosTest/java/no/nordicsemi/demo/ExampleOhosTest.java @@ -1,4 +1,4 @@ -package com.example.myapplication; +package no.nordicsemi.demo; import ohos.aafwk.ability.delegation.AbilityDelegatorRegistry; import org.junit.Test; @@ -7,9 +7,8 @@ import static org.junit.Assert.assertEquals; public class ExampleOhosTest { @Test - //涉及Context,不支持单元测试 public void testBundleName() { final String actualBundleName = AbilityDelegatorRegistry.getArguments().getTestBundleName(); - assertEquals("com.example.myapplication", actualBundleName); + assertEquals("no.nordicsemi.demo", actualBundleName); } } \ No newline at end of file diff --git a/entry/src/test/java/com/example/myapplication/ExampleTest.java b/demo/src/test/java/no/nordicsemi/demo/ExampleTest.java similarity index 73% rename from entry/src/test/java/com/example/myapplication/ExampleTest.java rename to demo/src/test/java/no/nordicsemi/demo/ExampleTest.java index 160d520..8ec1db7 100644 --- a/entry/src/test/java/com/example/myapplication/ExampleTest.java +++ b/demo/src/test/java/no/nordicsemi/demo/ExampleTest.java @@ -1,4 +1,4 @@ -package com.example.myapplication; +package no.nordicsemi.demo; import org.junit.Test; diff --git a/entry/src/ohosTest/config.json b/entry/src/ohosTest/config.json deleted file mode 100644 index 95309a0..0000000 --- a/entry/src/ohosTest/config.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "app": { - "bundleName": "com.example.myapplication", - "vendor": "example", - "version": { - "code": 1000000, - "name": "1.0.0" - } - }, - "deviceConfig": {}, - "module": { - "package": "com.example.myapplication", - "name": "testModule", - "deviceType": [ - "phone" - ], - "distro": { - "deliveryWithInstall": true, - "moduleName": "entry_test", - "moduleType": "feature", - "installationFree": true - }, - "abilities": [ - { - "name": "decc.testkit.runner.EntryAbility", - "description": "Test Entry Ability", - "icon": "$media:icon", - "label": "$string:app_name", - "launchType": "standard", - "orientation": "landscape", - "visible": true, - "type": "page" - } - ] - } -} \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index fa0fffb..49e4d6e 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1 @@ -include ':entry', ':scanner' +include ':scanner', ':demo' -- Gitee From c92314a0b07eb60f833e2c3d2d5f213637e823f6 Mon Sep 17 00:00:00 2001 From: TFStudy <3202410880@qq.com> Date: Wed, 7 Jul 2021 10:28:11 +0800 Subject: [PATCH 4/6] =?UTF-8?q?findBugs=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 8414901..031e576 100644 --- a/build.gradle +++ b/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.huawei.ohos.app' ohos { - compileSdkVersion 5 + compileSdkVersion 6 defaultConfig { compatibleSdkVersion 5 } -- Gitee From 205ced0838d273538c00b775e13f9297e15a5b1b Mon Sep 17 00:00:00 2001 From: TFStudy <3202410880@qq.com> Date: Wed, 7 Jul 2021 11:34:59 +0800 Subject: [PATCH 5/6] =?UTF-8?q?findBugs=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nordicsemi/demo/HistoryItemProvider.java | 39 +++++++------------ .../demo/slice/MainAbilitySlice.java | 14 +++---- 2 files changed, 22 insertions(+), 31 deletions(-) diff --git a/demo/src/main/java/no/nordicsemi/demo/HistoryItemProvider.java b/demo/src/main/java/no/nordicsemi/demo/HistoryItemProvider.java index 8b50f6a..969807a 100644 --- a/demo/src/main/java/no/nordicsemi/demo/HistoryItemProvider.java +++ b/demo/src/main/java/no/nordicsemi/demo/HistoryItemProvider.java @@ -21,22 +21,12 @@ public class HistoryItemProvider extends BaseItemProvider { @Override public int getCount() { - return list == null ? 0 : list.size(); - } - - public List getList() { - if (list == null) { - return new ArrayList<>(); - } - return list; + return list.size(); } @Override public Object getItem(int i) { - if (list != null && i >= 0 && i < list.size()) { - return list.get(i); - } - return null; + return list.get(i); } @Override @@ -52,18 +42,19 @@ public class HistoryItemProvider extends BaseItemProvider { } else { comp = component; } - List list = getList(); - ScanResult historyBean = list.get(i); - BleScanResult bleScanResult = (BleScanResult) historyBean.getDevice(); - String str = bleScanResult.getPeripheralDevice().getDeviceName().toString(); - str = str.replace("Optional[", ""); - str = str.replace("]", ""); - Text text = (Text) comp.findComponentById(ResourceTable.Id_text); - if (str.equals("Optional.empty")) { - String strs = bleScanResult.getPeripheralDevice().getDeviceAddr().toString(); - text.setText(strs); - } else { - text.setText(str); + if (list.size() > 0 && i < list.size() - 1) { + ScanResult historyBean = list.get(i); + BleScanResult bleScanResult = (BleScanResult) historyBean.getDevice(); + String str = bleScanResult.getPeripheralDevice().getDeviceName().toString(); + str = str.replace("Optional[", ""); + str = str.replace("]", ""); + Text text = (Text) comp.findComponentById(ResourceTable.Id_text); + if (str.equals("Optional.empty")) { + String strs = bleScanResult.getPeripheralDevice().getDeviceAddr().toString(); + text.setText(strs); + } else { + text.setText(str); + } } return comp; } diff --git a/demo/src/main/java/no/nordicsemi/demo/slice/MainAbilitySlice.java b/demo/src/main/java/no/nordicsemi/demo/slice/MainAbilitySlice.java index d455a2d..7900465 100644 --- a/demo/src/main/java/no/nordicsemi/demo/slice/MainAbilitySlice.java +++ b/demo/src/main/java/no/nordicsemi/demo/slice/MainAbilitySlice.java @@ -69,7 +69,7 @@ public class MainAbilitySlice extends AbilitySlice implements Component.ClickedL @Override public void onCheckedChanged(RadioContainer radioContainer, int i) { if (i == 0) { - if (isBut == false) { + if (!isBut) { ScanSettings settings = new ScanSettings.Builder() .setLegacy(false) .setScanMode(ScanSettings.SCAN_MODE_LOW_POWER) @@ -82,7 +82,7 @@ public class MainAbilitySlice extends AbilitySlice implements Component.ClickedL .show(); } } else if (i == 1) { - if (isBut == false) { + if (!isBut) { ScanSettings settings = new ScanSettings.Builder() .setLegacy(false) .setScanMode(ScanSettings.SCAN_MODE_BALANCED) @@ -95,7 +95,7 @@ public class MainAbilitySlice extends AbilitySlice implements Component.ClickedL .show(); } } else if (i == 2) { - if (isBut == false) { + if (!isBut) { ScanSettings settings = new ScanSettings.Builder() .setLegacy(false) .setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY) @@ -108,7 +108,7 @@ public class MainAbilitySlice extends AbilitySlice implements Component.ClickedL .show(); } } else { - if (isBut == false) { + if (!isBut) { ScanSettings settings = new ScanSettings.Builder() .setLegacy(false) .setScanMode(ScanSettings.SCAN_MODE_OPPORTUNISTIC) @@ -156,7 +156,7 @@ public class MainAbilitySlice extends AbilitySlice implements Component.ClickedL public void onClick(Component component) { switch (component.getId()) { case ResourceTable.Id_btn_start_scan: - if (isBut == false) { + if (!isBut) { start(); new ToastDialog(getContext()) .setText("开始") @@ -168,7 +168,7 @@ public class MainAbilitySlice extends AbilitySlice implements Component.ClickedL } break; case ResourceTable.Id_btn_stop_scan: - if (isBut == true) { + if (isBut) { stop(); new ToastDialog(getContext()) .setText("结束") @@ -201,7 +201,7 @@ public class MainAbilitySlice extends AbilitySlice implements Component.ClickedL }); } - private ScanCallback scanCallback = new ScanCallback() { + private final ScanCallback scanCallback = new ScanCallback() { @Override public void onScanResult(int callbackType, ScanResult result) { super.onScanResult(callbackType, result); -- Gitee From c98a8507820d8788516579fe4c0c667d599f05ae Mon Sep 17 00:00:00 2001 From: TFStudy <3202410880@qq.com> Date: Wed, 7 Jul 2021 06:17:51 +0000 Subject: [PATCH 6/6] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20entr?= =?UTF-8?q?y?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entry/.gitignore | 1 - 1 file changed, 1 deletion(-) delete mode 100644 entry/.gitignore diff --git a/entry/.gitignore b/entry/.gitignore deleted file mode 100644 index 796b96d..0000000 --- a/entry/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build -- Gitee