【发布时间】:2018-11-19 13:41:29
【问题描述】:
我目前被困在一项我认为非常基本的任务上。我正在使用 Kotlin/Native 开发一个库,该库应该查询 iOS 和 Android 中的重力传感器。
几乎所有的逻辑都在公共部分,只有与设备传感器的通信是在平台特定的方法中实现的。令人惊讶的是,所有 iOS 核心库(在本例中为 CoreMotion)都已被移植,因此实现起来非常容易。
CoreMotion 在这种情况下允许我在重力传感器上添加一个侦听器,只要屏幕的方向相对于 X、Y 或 Z 发生变化(我对 Z 感兴趣),它就会调用回调函数
在 Android 中我会做这样的事情
private lateinit var sensorManager: SensorManager
fun setupSensor() {
this.sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager
sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)?.let {
this.accelerometer = it
}
sensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY)?.let {
this.gravity = it
}
}
但所需的导入在 Kotlin/Native 中不可用
import android.hardware.Sensor;
import android.hardware.SensorManager;
有没有办法在 Kotlin/Native 中访问这种硬件(重力传感器)?还是在 Kotlin/Native 的 Android 特定部分更好?
【问题讨论】:
-
你能问一个更具体的问题吗?你想使用什么传感器,你想用它们做什么?
-
我需要上面所说的重力传感器。具体来说,我需要它的 Z 值来判断屏幕是朝上、朝下还是介于两者之间……我会更新问题
标签: android kotlin cross-platform kotlin-native