Я пытаюсь создать простое приложение, которым можно управлять с помощью моего геймпада (dualshok 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 ничего не вижу.
Пожалуйста, помогите