Получение позиции осей геймпада

Я пытался сделать простое приложение, которым можно управлять с помощью моего геймпада (dualshock 4), и я застрял при получении оси текущих позиций и кнопок моего геймпада. Ниже код, который я уже пробовал:

class MainActivity : AppCompatActivity(), OnGenericMotionListener{

    override fun onGenericMotion(p0: View?, p1: MotionEvent?): Boolean {
        if (p1!!.getSource() and InputDevice.SOURCE_CLASS_JOYSTICK !== 0 && p1!!.getAction() === MotionEvent.ACTION_MOVE) {
            val motionRanges = p1!!.getDevice().getMotionRanges()
            for (mr in motionRanges) {
                val axis = mr.getAxis()
                if (p1.getAxisValue(axis) > 0.5 || p1.getAxisValue(axis) < -0.5) {
                    Log.d("JOY_DEBUG", "Axis found: " + MotionEvent.axisToString(axis))
                }
            }
        } else {
            Log.i("JOY_DEBUG", "Not a joystick event.")
        }
        return true
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}

Метод "onGenericMotion" не работает, потому что он не вызывается, даже если я сделал это:

class MainActivity : AppCompatActivity(), OnGenericMotionListener{

    override fun onGenericMotion(p0: View?, p1: MotionEvent?): Boolean {

        Log.i("JOY_DEBUG", "method was called")

        if (p1!!.getSource() and InputDevice.SOURCE_CLASS_JOYSTICK !== 0 && p1!!.getAction() === MotionEvent.ACTION_MOVE) {
            val motionRanges = p1!!.getDevice().getMotionRanges()
            for (mr in motionRanges) {
                val axis = mr.getAxis()
                if (p1.getAxisValue(axis) > 0.5 || p1.getAxisValue(axis) < -0.5) {
                    Log.d("JOY_DEBUG", "Axis found: " + MotionEvent.axisToString(axis))
                }
            }
        } else {
            Log.i("JOY_DEBUG", "Not a joystick event.")
        }
        return true
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}

И в logcat'е ничего не появляется


Ответы (0 шт):