0

私は現在、非常に基本的だと思っていたタスクに行き詰まっています。iOS と Android の重力センサーを照会する必要がある Kotlin/Native のライブラリを開発しています。

ほとんどすべてのロジックは共通部分にあり、デバイス センサーとの通信だけがプラットフォーム固有のメソッドに実装されています。驚くべきことに、すべての 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 固有の部分の方が優れていますか?

4

2 に答える 2

2

Android の Kotlin/Native ライブラリとして本当に必要な場合は、SDK ではなく Android NDK に直接アクセスできます。

したがって、センサーの場合、 https://android.googlesource.com/platform/frameworks/native/+/jb-dev/include/android/sensor.hの関数を使用でき ます

Kotlin/Native では、これらの機能をパッケージで利用できますplatform.android.*

しかし、iOS と Android の両方でライブラリを利用できるようにするだけの場合は、"kotlin-multiplatform" gradle プラグインを使用して、Kotlin/Native で iOS に、通常の Kotlin で同じソースを Android にコンパイルする方がはるかに簡単で一般的な方法です。

于 2018-11-20T02:10:27.450 に答える