Как определить укол телефона Android? - PullRequest
0 голосов
/ 01 августа 2020

На устройстве Android (Kotlin) я хочу определять, когда пользователь «колет» или «колет» телефон - он держит его в руке и быстро перемещает устройство в одном направлении. .

Когда пользователь заканчивает свой джеб в воздухе, я хочу получить уведомление с помощью обратного вызова о том, был ли это сильный или слабый джеб (сильный или слабый джеб настраивается и не ограничивается только сильным или слабый - может это процент, где 100% безумно огромный джеб). См., Например, код ниже.

Мой текущий код (Kotlin) обнаруживает удар в любом направлении, однако, когда телефон возвращается в исходное стационарное положение, он также определяет это движение как удар (что для меча нехорошо - я не хочу убивать себя!).

    override fun onSensorChanged(event: SensorEvent) {
        if (event.sensor.type === Sensor.TYPE_ACCELEROMETER) {
            mGravity = event.values.clone()
            val x: Float = mGravity[0]
            val y: Float = mGravity[1]
            val z: Float = mGravity[2]
            mAccelLast = mAccelCurrent
            mAccelCurrent = Math.sqrt(x * x + y * y + (z * z).toDouble()).toFloat()
            val delta: Float = mAccelCurrent - mAccelLast
            mAccel = mAccel * 0.9f + delta
            if (mAccel > 3) {
                Log.d(TAG, "onLargeMovement")
                onLargeMovement()
            } else if (mAccel > 1.5) {
                Log.d(TAG, "onMediumMovement")
                onMediumMovement()
            } else if (mAccel > 0.5) {
                Log.d(TAG, "onSmallMovement")
                onSmallMovement()
            }
        }
    }

Как я могу sh это сделать?

...