diff --git a/packages/sensors_plus/sensors_plus/CHANGELOG.md b/packages/sensors_plus/sensors_plus/CHANGELOG.md
index c6e2255bd9..8b0291454f 100644
--- a/packages/sensors_plus/sensors_plus/CHANGELOG.md
+++ b/packages/sensors_plus/sensors_plus/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 1.3.0
+
+- Android: Migrate to Kotlin
+- Android: Update dependencies, build config updates
+
## 1.2.2
- Fix example embedding issues
diff --git a/packages/sensors_plus/sensors_plus/README.md b/packages/sensors_plus/sensors_plus/README.md
index 5278df0ee9..b53c508563 100644
--- a/packages/sensors_plus/sensors_plus/README.md
+++ b/packages/sensors_plus/sensors_plus/README.md
@@ -1,12 +1,11 @@
-# sensors
+# Sensors Plus
[](https://github.com/fluttercommunity/community)
-[](https://pub.dev/packages/sensors_plus)
+[](https://github.com/fluttercommunity/plus_plugins/actions/workflows/sensors_plus.yaml)
+[](https://pub.dev/packages/battery_plus)
-
-
-
+
A Flutter plugin to access the accelerometer, gyroscope, and magnetometer
sensors.
@@ -70,9 +69,3 @@ Also see the `example` subdirectory for an example application that uses the
sensor data.
Check out our website to learn more: [Plus Plugins documentation](https://plus.fluttercommunity.dev/docs/overview)
-
-**Important:** As of January 2021, the Flutter team is no longer accepting
-non-critical PRs for the original set of plugins in `flutter/plugins`, and
-instead they should be submitted in this project.
-[You can read more about this announcement here](https://github.com/flutter/plugins/blob/master/CONTRIBUTING.md#important-note)
-as well as [in the Flutter 2 announcement blog post](https://medium.com/flutter/whats-new-in-flutter-2-0-fe8e95ecc65).
diff --git a/packages/sensors_plus/sensors_plus/android/build.gradle b/packages/sensors_plus/sensors_plus/android/build.gradle
index 99f54fe8b3..ee8047d168 100644
--- a/packages/sensors_plus/sensors_plus/android/build.gradle
+++ b/packages/sensors_plus/sensors_plus/android/build.gradle
@@ -2,13 +2,15 @@ group 'io.flutter.plugins.sensors'
version '1.0-SNAPSHOT'
buildscript {
+ ext.kotlin_version = '1.6.10'
repositories {
google()
mavenCentral()
}
dependencies {
- classpath 'com.android.tools.build:gradle:7.0.2'
+ classpath 'com.android.tools.build:gradle:7.1.1'
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
@@ -20,6 +22,7 @@ rootProject.allprojects {
}
apply plugin: 'com.android.library'
+apply plugin: 'kotlin-android'
android {
compileSdkVersion 31
@@ -31,4 +34,8 @@ android {
lintOptions {
disable 'InvalidPackage'
}
+
+ dependencies {
+ implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
+ }
}
diff --git a/packages/sensors_plus/sensors_plus/android/src/main/AndroidManifest.xml b/packages/sensors_plus/sensors_plus/android/src/main/AndroidManifest.xml
index 8b4504ee4c..36c24719f0 100644
--- a/packages/sensors_plus/sensors_plus/android/src/main/AndroidManifest.xml
+++ b/packages/sensors_plus/sensors_plus/android/src/main/AndroidManifest.xml
@@ -1,2 +1 @@
-
-
+
diff --git a/packages/sensors_plus/sensors_plus/android/src/main/java/dev/fluttercommunity/plus/sensors/SensorsPlugin.java b/packages/sensors_plus/sensors_plus/android/src/main/java/dev/fluttercommunity/plus/sensors/SensorsPlugin.java
deleted file mode 100644
index 0418741057..0000000000
--- a/packages/sensors_plus/sensors_plus/android/src/main/java/dev/fluttercommunity/plus/sensors/SensorsPlugin.java
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package dev.fluttercommunity.plus.sensors;
-
-import android.content.Context;
-import android.hardware.Sensor;
-import android.hardware.SensorManager;
-import androidx.annotation.NonNull;
-import io.flutter.embedding.engine.plugins.FlutterPlugin;
-import io.flutter.plugin.common.BinaryMessenger;
-import io.flutter.plugin.common.EventChannel;
-
-/** SensorsPlugin */
-public class SensorsPlugin implements FlutterPlugin {
- private static final String ACCELEROMETER_CHANNEL_NAME =
- "dev.fluttercommunity.plus/sensors/accelerometer";
- private static final String GYROSCOPE_CHANNEL_NAME =
- "dev.fluttercommunity.plus/sensors/gyroscope";
- private static final String USER_ACCELEROMETER_CHANNEL_NAME =
- "dev.fluttercommunity.plus/sensors/user_accel";
- private static final String MAGNETOMETER_CHANNEL_NAME =
- "dev.fluttercommunity.plus/sensors/magnetometer";
-
- private EventChannel accelerometerChannel;
- private EventChannel userAccelChannel;
- private EventChannel gyroscopeChannel;
- private EventChannel magnetometerChannel;
-
- @Override
- public void onAttachedToEngine(FlutterPluginBinding binding) {
- final Context context = binding.getApplicationContext();
- setupEventChannels(context, binding.getBinaryMessenger());
- }
-
- @Override
- public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) {
- teardownEventChannels();
- }
-
- private void setupEventChannels(Context context, BinaryMessenger messenger) {
- accelerometerChannel = new EventChannel(messenger, ACCELEROMETER_CHANNEL_NAME);
- final StreamHandlerImpl accelerationStreamHandler =
- new StreamHandlerImpl(
- (SensorManager) context.getSystemService(Context.SENSOR_SERVICE),
- Sensor.TYPE_ACCELEROMETER);
- accelerometerChannel.setStreamHandler(accelerationStreamHandler);
-
- userAccelChannel = new EventChannel(messenger, USER_ACCELEROMETER_CHANNEL_NAME);
- final StreamHandlerImpl linearAccelerationStreamHandler =
- new StreamHandlerImpl(
- (SensorManager) context.getSystemService(Context.SENSOR_SERVICE),
- Sensor.TYPE_LINEAR_ACCELERATION);
- userAccelChannel.setStreamHandler(linearAccelerationStreamHandler);
-
- gyroscopeChannel = new EventChannel(messenger, GYROSCOPE_CHANNEL_NAME);
- final StreamHandlerImpl gyroScopeStreamHandler =
- new StreamHandlerImpl(
- (SensorManager) context.getSystemService(Context.SENSOR_SERVICE),
- Sensor.TYPE_GYROSCOPE);
- gyroscopeChannel.setStreamHandler(gyroScopeStreamHandler);
-
- magnetometerChannel = new EventChannel(messenger, MAGNETOMETER_CHANNEL_NAME);
- final StreamHandlerImpl magnetometerStreamHandler =
- new StreamHandlerImpl(
- (SensorManager) context.getSystemService(Context.SENSOR_SERVICE),
- Sensor.TYPE_MAGNETIC_FIELD);
- magnetometerChannel.setStreamHandler(magnetometerStreamHandler);
- }
-
- private void teardownEventChannels() {
- accelerometerChannel.setStreamHandler(null);
- userAccelChannel.setStreamHandler(null);
- gyroscopeChannel.setStreamHandler(null);
- magnetometerChannel.setStreamHandler(null);
- }
-}
diff --git a/packages/sensors_plus/sensors_plus/android/src/main/java/dev/fluttercommunity/plus/sensors/StreamHandlerImpl.java b/packages/sensors_plus/sensors_plus/android/src/main/java/dev/fluttercommunity/plus/sensors/StreamHandlerImpl.java
deleted file mode 100644
index 6a860ce1da..0000000000
--- a/packages/sensors_plus/sensors_plus/android/src/main/java/dev/fluttercommunity/plus/sensors/StreamHandlerImpl.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2019 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package dev.fluttercommunity.plus.sensors;
-
-import android.hardware.Sensor;
-import android.hardware.SensorEvent;
-import android.hardware.SensorEventListener;
-import android.hardware.SensorManager;
-import io.flutter.plugin.common.EventChannel;
-
-class StreamHandlerImpl implements EventChannel.StreamHandler {
-
- private SensorEventListener sensorEventListener;
- private final SensorManager sensorManager;
- private final Sensor sensor;
-
- StreamHandlerImpl(SensorManager sensorManager, int sensorType) {
- this.sensorManager = sensorManager;
- sensor = sensorManager.getDefaultSensor(sensorType);
- }
-
- @Override
- public void onListen(Object arguments, EventChannel.EventSink events) {
- sensorEventListener = createSensorEventListener(events);
- sensorManager.registerListener(sensorEventListener, sensor, SensorManager.SENSOR_DELAY_NORMAL);
- }
-
- @Override
- public void onCancel(Object arguments) {
- sensorManager.unregisterListener(sensorEventListener);
- }
-
- SensorEventListener createSensorEventListener(final EventChannel.EventSink events) {
- return new SensorEventListener() {
- @Override
- public void onAccuracyChanged(Sensor sensor, int accuracy) {}
-
- @Override
- public void onSensorChanged(SensorEvent event) {
- double[] sensorValues = new double[event.values.length];
- for (int i = 0; i < event.values.length; i++) {
- sensorValues[i] = event.values[i];
- }
- events.success(sensorValues);
- }
- };
- }
-}
diff --git a/packages/sensors_plus/sensors_plus/android/src/main/kotlin/dev/fluttercommunity/plus/sensors/SensorsPlugin.kt b/packages/sensors_plus/sensors_plus/android/src/main/kotlin/dev/fluttercommunity/plus/sensors/SensorsPlugin.kt
new file mode 100644
index 0000000000..ed9f7647c0
--- /dev/null
+++ b/packages/sensors_plus/sensors_plus/android/src/main/kotlin/dev/fluttercommunity/plus/sensors/SensorsPlugin.kt
@@ -0,0 +1,71 @@
+package dev.fluttercommunity.plus.sensors
+
+import android.content.Context
+import android.hardware.Sensor
+import android.hardware.SensorManager
+import io.flutter.embedding.engine.plugins.FlutterPlugin
+import io.flutter.embedding.engine.plugins.FlutterPlugin.FlutterPluginBinding
+import io.flutter.plugin.common.BinaryMessenger
+import io.flutter.plugin.common.EventChannel
+
+/** SensorsPlugin */
+class SensorsPlugin : FlutterPlugin {
+ private lateinit var accelerometerChannel: EventChannel
+ private lateinit var userAccelChannel: EventChannel
+ private lateinit var gyroscopeChannel: EventChannel
+ private lateinit var magnetometerChannel: EventChannel
+
+ override fun onAttachedToEngine(binding: FlutterPluginBinding) {
+ setupEventChannels(binding.applicationContext, binding.binaryMessenger)
+ }
+
+ override fun onDetachedFromEngine(binding: FlutterPluginBinding) {
+ teardownEventChannels()
+ }
+
+ private fun setupEventChannels(context: Context, messenger: BinaryMessenger) {
+ val sensorsManager = context.getSystemService(Context.SENSOR_SERVICE) as SensorManager
+
+ accelerometerChannel = EventChannel(messenger, ACCELEROMETER_CHANNEL_NAME)
+ val accelerationStreamHandler = StreamHandlerImpl(
+ sensorsManager,
+ Sensor.TYPE_ACCELEROMETER
+ )
+ accelerometerChannel.setStreamHandler(accelerationStreamHandler)
+
+ userAccelChannel = EventChannel(messenger, USER_ACCELEROMETER_CHANNEL_NAME)
+ val linearAccelerationStreamHandler = StreamHandlerImpl(
+ sensorsManager,
+ Sensor.TYPE_LINEAR_ACCELERATION
+ )
+ userAccelChannel.setStreamHandler(linearAccelerationStreamHandler)
+
+ gyroscopeChannel = EventChannel(messenger, GYROSCOPE_CHANNEL_NAME)
+ val gyroScopeStreamHandler = StreamHandlerImpl(
+ sensorsManager,
+ Sensor.TYPE_GYROSCOPE
+ )
+ gyroscopeChannel.setStreamHandler(gyroScopeStreamHandler)
+
+ magnetometerChannel = EventChannel(messenger, MAGNETOMETER_CHANNEL_NAME)
+ val magnetometerStreamHandler = StreamHandlerImpl(
+ sensorsManager,
+ Sensor.TYPE_MAGNETIC_FIELD
+ )
+ magnetometerChannel.setStreamHandler(magnetometerStreamHandler)
+ }
+
+ private fun teardownEventChannels() {
+ accelerometerChannel.setStreamHandler(null)
+ userAccelChannel.setStreamHandler(null)
+ gyroscopeChannel.setStreamHandler(null)
+ magnetometerChannel.setStreamHandler(null)
+ }
+
+ companion object {
+ private const val ACCELEROMETER_CHANNEL_NAME = "dev.fluttercommunity.plus/sensors/accelerometer"
+ private const val GYROSCOPE_CHANNEL_NAME = "dev.fluttercommunity.plus/sensors/gyroscope"
+ private const val USER_ACCELEROMETER_CHANNEL_NAME = "dev.fluttercommunity.plus/sensors/user_accel"
+ private const val MAGNETOMETER_CHANNEL_NAME = "dev.fluttercommunity.plus/sensors/magnetometer"
+ }
+}
diff --git a/packages/sensors_plus/sensors_plus/android/src/main/kotlin/dev/fluttercommunity/plus/sensors/StreamHandlerImpl.kt b/packages/sensors_plus/sensors_plus/android/src/main/kotlin/dev/fluttercommunity/plus/sensors/StreamHandlerImpl.kt
new file mode 100644
index 0000000000..521e9243e9
--- /dev/null
+++ b/packages/sensors_plus/sensors_plus/android/src/main/kotlin/dev/fluttercommunity/plus/sensors/StreamHandlerImpl.kt
@@ -0,0 +1,42 @@
+package dev.fluttercommunity.plus.sensors
+
+import android.hardware.Sensor
+import android.hardware.SensorEvent
+import android.hardware.SensorEventListener
+import android.hardware.SensorManager
+import io.flutter.plugin.common.EventChannel
+import io.flutter.plugin.common.EventChannel.EventSink
+
+internal class StreamHandlerImpl(
+ private val sensorManager: SensorManager,
+ sensorType: Int
+) : EventChannel.StreamHandler {
+ private lateinit var sensorEventListener: SensorEventListener
+
+ private val sensor: Sensor by lazy {
+ sensorManager.getDefaultSensor(sensorType)
+ }
+
+ override fun onListen(arguments: Any?, events: EventSink) {
+ sensorEventListener = createSensorEventListener(events)
+ sensorManager.registerListener(sensorEventListener, sensor, SensorManager.SENSOR_DELAY_NORMAL)
+ }
+
+ override fun onCancel(arguments: Any?) {
+ sensorManager.unregisterListener(sensorEventListener)
+ }
+
+ private fun createSensorEventListener(events: EventSink): SensorEventListener {
+ return object : SensorEventListener {
+ override fun onAccuracyChanged(sensor: Sensor, accuracy: Int) {}
+
+ override fun onSensorChanged(event: SensorEvent) {
+ val sensorValues = DoubleArray(event.values.size)
+ event.values.forEachIndexed { index, value ->
+ sensorValues[index] = value.toDouble()
+ }
+ events.success(sensorValues)
+ }
+ }
+ }
+}
diff --git a/packages/sensors_plus/sensors_plus/example/android/gradle.properties b/packages/sensors_plus/sensors_plus/example/android/gradle.properties
index 94adc3a3f9..d9cf55df7c 100644
--- a/packages/sensors_plus/sensors_plus/example/android/gradle.properties
+++ b/packages/sensors_plus/sensors_plus/example/android/gradle.properties
@@ -1,3 +1,2 @@
org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true
-android.enableJetifier=true
diff --git a/packages/sensors_plus/sensors_plus/example/android/gradle/wrapper/gradle-wrapper.properties b/packages/sensors_plus/sensors_plus/example/android/gradle/wrapper/gradle-wrapper.properties
index cb2d28054d..c17f829cd3 100644
--- a/packages/sensors_plus/sensors_plus/example/android/gradle/wrapper/gradle-wrapper.properties
+++ b/packages/sensors_plus/sensors_plus/example/android/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,5 @@
-#Tue Oct 05 15:47:01 CEST 2021
distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
diff --git a/packages/sensors_plus/sensors_plus/pubspec.yaml b/packages/sensors_plus/sensors_plus/pubspec.yaml
index dff3e792ea..a19cab6a79 100644
--- a/packages/sensors_plus/sensors_plus/pubspec.yaml
+++ b/packages/sensors_plus/sensors_plus/pubspec.yaml
@@ -2,7 +2,7 @@ name: sensors_plus
description: >
Flutter plugin for accessing accelerometer, gyroscope, and magnetometer
sensors.
-version: 1.2.2
+version: 1.3.0
homepage: https://plus.fluttercommunity.dev/
repository: https://github.com/fluttercommunity/plus_plugins/tree/main/packages/