mirror of
https://github.com/flutter/samples.git
synced 2025-11-08 13:58:47 +00:00
[platform_channels] adds EventChannel Demo (#462)
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
// Copyright 2020 The Flutter team. 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.flutter.platform_channels
|
||||
|
||||
import android.hardware.Sensor
|
||||
import android.hardware.SensorEvent
|
||||
import android.hardware.SensorEventListener
|
||||
import android.hardware.SensorManager
|
||||
import io.flutter.plugin.common.EventChannel
|
||||
|
||||
class AccelerometerStreamHandler(sManager: SensorManager, s: Sensor) : EventChannel.StreamHandler, SensorEventListener {
|
||||
private val sensorManager: SensorManager = sManager
|
||||
private val accelerometerSensor: Sensor = s
|
||||
private lateinit var eventSink: EventChannel.EventSink
|
||||
|
||||
override fun onListen(arguments: Any?, events: EventChannel.EventSink?) {
|
||||
if (events != null) {
|
||||
eventSink = events
|
||||
sensorManager.registerListener(this, accelerometerSensor, SensorManager.SENSOR_DELAY_UI)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCancel(arguments: Any?) {
|
||||
sensorManager.unregisterListener(this)
|
||||
}
|
||||
|
||||
override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) {}
|
||||
|
||||
override fun onSensorChanged(sensorEvent: SensorEvent?) {
|
||||
if (sensorEvent != null) {
|
||||
val axisValues = listOf(sensorEvent.values[0], sensorEvent.values[1], sensorEvent.values[2])
|
||||
eventSink.success(axisValues)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,15 @@
|
||||
// Copyright 2020 The Flutter team. 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.flutter.platform_channels
|
||||
|
||||
import android.content.Context
|
||||
import android.hardware.Sensor
|
||||
import android.hardware.SensorManager
|
||||
import io.flutter.embedding.android.FlutterActivity
|
||||
import io.flutter.embedding.engine.FlutterEngine
|
||||
import io.flutter.plugin.common.EventChannel
|
||||
import io.flutter.plugin.common.MethodChannel
|
||||
|
||||
class MainActivity : FlutterActivity() {
|
||||
@@ -27,5 +35,10 @@ class MainActivity : FlutterActivity() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
val sensorManger: SensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager
|
||||
val accelerometerSensor: Sensor = sensorManger.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)
|
||||
EventChannel(flutterEngine.dartExecutor, "eventChannelDemo")
|
||||
.setStreamHandler(AccelerometerStreamHandler(sensorManger, accelerometerSensor))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user