diff --git a/packages/sensors_plus/sensors_plus/lib/src/web_sensors.dart b/packages/sensors_plus/sensors_plus/lib/src/web_sensors.dart index 36d8dc6dc8e12851f7ffcbdef34d85deed19c91f..89477cbc5c89d577101ab2ea7c1a09951fceb131 100644 --- a/packages/sensors_plus/sensors_plus/lib/src/web_sensors.dart +++ b/packages/sensors_plus/sensors_plus/lib/src/web_sensors.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'dart:developer' as developer; import 'dart:html' as html show LinearAccelerationSensor, Accelerometer, Gyroscope, Magnetometer; +import 'dart:js'; import 'dart:js_util'; import 'package:flutter_web_plugins/flutter_web_plugins.dart'; diff --git a/packages/sensors_plus/sensors_plus/ohos/example/ohos/hvigor/hvigor-config.json5 b/packages/sensors_plus/sensors_plus/ohos/example/ohos/hvigor/hvigor-config.json5 index 541ba35711b75986f9295410ee38fdb8f2572878..336eb6122cb69c62fc06ea0c75366f27a7b327b7 100644 --- a/packages/sensors_plus/sensors_plus/ohos/example/ohos/hvigor/hvigor-config.json5 +++ b/packages/sensors_plus/sensors_plus/ohos/example/ohos/hvigor/hvigor-config.json5 @@ -13,8 +13,11 @@ * limitations under the License. */ -{ +{ "modelVersion": "5.0.0", "dependencies": { + }, + "properties": { + "ohos.nativeResolver": false } -} \ No newline at end of file +} diff --git a/packages/sensors_plus/sensors_plus/ohos/example/ohos/oh-package.json5 b/packages/sensors_plus/sensors_plus/ohos/example/ohos/oh-package.json5 index 6a0918696894e78ad886034142f32f90eaecd039..e71a4003f01baaeec5665bf077e74cade60cee03 100644 --- a/packages/sensors_plus/sensors_plus/ohos/example/ohos/oh-package.json5 +++ b/packages/sensors_plus/sensors_plus/ohos/example/ohos/oh-package.json5 @@ -14,7 +14,7 @@ }, "overrides": { "@ohos/flutter_ohos": "file:./har/flutter.har", - "sensors_plus_ohos": "file:F:./har/sensors_plus_ohos.har", + "sensors_plus_ohos": "file:./har/sensors_plus_ohos.har", "@ohos/flutter_module": "file:./entry" } -} \ No newline at end of file +} diff --git a/packages/sensors_plus/sensors_plus/ohos/lib/sensors_plus_ohos.dart b/packages/sensors_plus/sensors_plus/ohos/lib/sensors_plus_ohos.dart index bfa305f721882bf188277cbeef8c55bf4ec5aedb..0608eaec31583e34949a292f0d2d0f0741115464 100644 --- a/packages/sensors_plus/sensors_plus/ohos/lib/sensors_plus_ohos.dart +++ b/packages/sensors_plus/sensors_plus/ohos/lib/sensors_plus_ohos.dart @@ -10,20 +10,20 @@ final _sensors = Sensors(); /// A broadcast stream of events from the device accelerometer. Stream get accelerometerEvents { - return _sensors.accelerometerEvents; + return _sensors.accelerometerEventStream(); } /// A broadcast stream of events from the device gyroscope. Stream get gyroscopeEvents { - return _sensors.gyroscopeEvents; + return _sensors.gyroscopeEventStream(); } /// Events from the device accelerometer with gravity removed. Stream get userAccelerometerEvents { - return _sensors.userAccelerometerEvents; + return _sensors.userAccelerometerEventStream(); } /// A broadcast stream of events from the device magnetometer. Stream get magnetometerEvents { - return _sensors.magnetometerEvents; + return _sensors.magnetometerEventStream(); } diff --git a/packages/sensors_plus/sensors_plus/ohos/lib/src/sensors_ohos.dart b/packages/sensors_plus/sensors_plus/ohos/lib/src/sensors_ohos.dart index 59ac78cb8fa9dce35bec47c816a3ea632d722272..a07d23db124fa9728b111cc8b7296ea558691110 100644 --- a/packages/sensors_plus/sensors_plus/ohos/lib/src/sensors_ohos.dart +++ b/packages/sensors_plus/sensors_plus/ohos/lib/src/sensors_ohos.dart @@ -15,25 +15,35 @@ class Sensors extends SensorsPlatform { /// A broadcast stream of events from the device accelerometer. @override - Stream get accelerometerEvents { - return _platform.accelerometerEvents; + Stream accelerometerEventStream({ + Duration samplingPeriod = SensorInterval.normalInterval, + }) { + return _platform.accelerometerEventStream(samplingPeriod: samplingPeriod); } /// A broadcast stream of events from the device gyroscope. @override - Stream get gyroscopeEvents { - return _platform.gyroscopeEvents; + Stream gyroscopeEventStream({ + Duration samplingPeriod = SensorInterval.normalInterval, + }) { + return _platform.gyroscopeEventStream(samplingPeriod: samplingPeriod); } /// Events from the device accelerometer with gravity removed. @override - Stream get userAccelerometerEvents { - return _platform.userAccelerometerEvents; + Stream userAccelerometerEventStream({ + Duration samplingPeriod = SensorInterval.normalInterval, + }) { + return _platform.userAccelerometerEventStream( + samplingPeriod: samplingPeriod); } /// A broadcast stream of events from the device magnetometer. @override - Stream get magnetometerEvents { - return _platform.magnetometerEvents; + Stream magnetometerEventStream({ + Duration samplingPeriod = SensorInterval.normalInterval, + }) { + return _platform.magnetometerEventStream(samplingPeriod: samplingPeriod); } + } diff --git a/packages/sensors_plus/sensors_plus/ohos/lib/src/sensors_plus_web_ohos.dart b/packages/sensors_plus/sensors_plus/ohos/lib/src/sensors_plus_web_ohos.dart deleted file mode 100644 index 0d762c9e09ed88c2661d3d296426481512369db4..0000000000000000000000000000000000000000 --- a/packages/sensors_plus/sensors_plus/ohos/lib/src/sensors_plus_web_ohos.dart +++ /dev/null @@ -1,29 +0,0 @@ -import 'package:sensors_plus_platform_interface/sensors_plus_platform_interface.dart'; - -import 'web_sensors_ohos.dart'; - -export 'package:sensors_plus_platform_interface/sensors_plus_platform_interface.dart'; - -export 'web_sensors_ohos.dart'; - -final _sensors = WebSensorsPlugin(); - -/// A broadcast stream of events from the device accelerometer. -Stream get accelerometerEvents { - return _sensors.accelerometerEvents; -} - -/// A broadcast stream of events from the device gyroscope. -Stream get gyroscopeEvents { - return _sensors.gyroscopeEvents; -} - -/// Events from the device accelerometer with gravity removed. -Stream get userAccelerometerEvents { - return _sensors.userAccelerometerEvents; -} - -/// A broadcast stream of events from the device magnetometer. -Stream get magnetometerEvents { - return _sensors.magnetometerEvents; -} diff --git a/packages/sensors_plus/sensors_plus/ohos/lib/src/web_sensors_ohos.dart b/packages/sensors_plus/sensors_plus/ohos/lib/src/web_sensors_ohos.dart deleted file mode 100644 index 2f886b0192cd8bad64c123efe4a7b7996a465247..0000000000000000000000000000000000000000 --- a/packages/sensors_plus/sensors_plus/ohos/lib/src/web_sensors_ohos.dart +++ /dev/null @@ -1,252 +0,0 @@ -import 'dart:async'; -import 'dart:developer' as developer; -import 'dart:html' as html - show LinearAccelerationSensor, Accelerometer, Gyroscope, Magnetometer; -import 'dart:js_util'; - -import 'package:flutter_web_plugins/flutter_web_plugins.dart'; -import 'package:sensors_plus_platform_interface/sensors_plus_platform_interface.dart'; - -/// The sensors plugin. -class WebSensorsPlugin extends SensorsPlatform { - /// Factory method that initializes the Sensors plugin platform with an instance - /// of the plugin for the web. - static void registerWith(Registrar registrar) { - SensorsPlatform.instance = WebSensorsPlugin(); - } - - void _featureDetected( - Function initSensor, { - String? apiName, - String? permissionName, - Function? onError, - }) { - try { - initSensor(); - } catch (error) { - if (onError != null) { - onError(); - } - - /// Handle construction errors. - /// - /// If a feature policy blocks use of a feature it is because your code - /// is inconsistent with the policies set on your server. - /// This is not something that would ever be shown to a user. - /// See Feature-Policy for implementation instructions in the browsers. - if (error.toString().contains('SecurityError')) { - /// See the note above about feature policy. - developer.log('$apiName construction was blocked by a feature policy.', - error: error); - - /// if this feature is not supported or Flag is not enabled yet! - } else if (error.toString().contains('ReferenceError')) { - developer.log('$apiName is not supported by the User Agent.', - error: error); - - /// if this is unknown error, rethrow it - } else { - developer.log('Unknown error happened, rethrowing.'); - rethrow; - } - } - } - - StreamController? _accelerometerStreamController; - late Stream _accelerometerResultStream; - - @override - Stream get accelerometerEvents { - if (_accelerometerStreamController == null) { - _accelerometerStreamController = StreamController(); - _featureDetected( - () { - final accelerometer = html.Accelerometer(); - - setProperty( - accelerometer, - 'onreading', - allowInterop( - (_) { - _accelerometerStreamController!.add( - AccelerometerEvent( - accelerometer.x as double, - accelerometer.y as double, - accelerometer.z as double, - ), - ); - }, - ), - ); - - accelerometer.start(); - - accelerometer.onError.forEach( - (e) => developer.log( - 'The accelerometer API is supported but something is wrong!', - error: e), - ); - }, - apiName: 'Accelerometer()', - permissionName: 'accelerometer', - onError: () { - _accelerometerStreamController!.add(AccelerometerEvent(0, 0, 0)); - }, - ); - _accelerometerResultStream = - _accelerometerStreamController!.stream.asBroadcastStream(); - } - - return _accelerometerResultStream; - } - - StreamController? _gyroscopeEventStreamController; - late Stream _gyroscopeEventResultStream; - - @override - Stream get gyroscopeEvents { - if (_gyroscopeEventStreamController == null) { - _gyroscopeEventStreamController = StreamController(); - _featureDetected( - () { - final gyroscope = html.Gyroscope(); - - setProperty( - gyroscope, - 'onreading', - allowInterop( - (_) { - _gyroscopeEventStreamController!.add( - GyroscopeEvent( - gyroscope.x as double, - gyroscope.y as double, - gyroscope.z as double, - ), - ); - }, - ), - ); - - gyroscope.start(); - - gyroscope.onError.forEach( - (e) => developer.log( - 'The gyroscope API is supported but something is wrong!', - error: e), - ); - }, - apiName: 'Gyroscope()', - permissionName: 'gyroscope', - onError: () { - _gyroscopeEventStreamController!.add(GyroscopeEvent(0, 0, 0)); - }, - ); - _gyroscopeEventResultStream = - _gyroscopeEventStreamController!.stream.asBroadcastStream(); - - _gyroscopeEventStreamController!.onCancel = () { - _gyroscopeEventStreamController!.close(); - }; - } - - return _gyroscopeEventResultStream; - } - - StreamController? _userAccelerometerStreamController; - late Stream _userAccelerometerResultStream; - - @override - Stream get userAccelerometerEvents { - if (_userAccelerometerStreamController == null) { - _userAccelerometerStreamController = - StreamController(); - _featureDetected( - () { - final linearAccelerationSensor = html.LinearAccelerationSensor(); - - setProperty( - linearAccelerationSensor, - 'onreading', - allowInterop( - (_) { - _userAccelerometerStreamController!.add( - UserAccelerometerEvent( - linearAccelerationSensor.x as double, - linearAccelerationSensor.y as double, - linearAccelerationSensor.z as double, - ), - ); - }, - ), - ); - - linearAccelerationSensor.start(); - - linearAccelerationSensor.onError.forEach( - (e) => developer.log( - 'The linear acceleration API is supported but something is wrong!', - error: e), - ); - }, - apiName: 'LinearAccelerationSensor()', - permissionName: 'accelerometer', - onError: () { - _userAccelerometerStreamController! - .add(UserAccelerometerEvent(0, 0, 0)); - }, - ); - _userAccelerometerResultStream = - _userAccelerometerStreamController!.stream.asBroadcastStream(); - } - - return _userAccelerometerResultStream; - } - - StreamController? _magnetometerStreamController; - late Stream _magnetometerResultStream; - - @override - Stream get magnetometerEvents { - if (_magnetometerStreamController == null) { - _magnetometerStreamController = StreamController(); - _featureDetected( - () { - final magnetometerSensor = html.Magnetometer(); - - setProperty( - magnetometerSensor, - 'onreading', - allowInterop( - (_) { - _magnetometerStreamController!.add( - MagnetometerEvent( - magnetometerSensor.x as double, - magnetometerSensor.y as double, - magnetometerSensor.z as double, - ), - ); - }, - ), - ); - - magnetometerSensor.start(); - - magnetometerSensor.onError.forEach( - (e) => developer.log( - 'The magnetometer API is supported but something is wrong!', - error: e), - ); - }, - apiName: 'Magnetometer()', - permissionName: 'magnetometer', - onError: () { - _magnetometerStreamController!.add(MagnetometerEvent(0, 0, 0)); - }, - ); - _magnetometerResultStream = - _magnetometerStreamController!.stream.asBroadcastStream(); - } - - return _magnetometerResultStream; - } -}