Как создать MotionEvent с определенным значением оси контроллера? - PullRequest
0 голосов
/ 16 сентября 2018

Я пытаюсь переназначить некоторые неправильные значения оси из контроллера PS4 при подключении через Bluetooth.Правильный аналог контроллера PS4 возвращает значения оси MotionEvent.AXIS_Z и MotionEvent.AXIS_RZ, когда правильные значения должны быть MotionEvent.AXIS_RX и MotionEvent.AXIS_RY.

Я подумал, что должен написать IME, перехватить событие движенияи заменить неправильные значения на правильные значения, но как его заменить я так и не выяснил.Мой пример кода:

public class PS4RemapperKeyboard extends InputMethodService {
    private static final String TAG = PS4RemapperKeyboard.class.getSimpleName();

    @Override
    public boolean onGenericMotionEvent(MotionEvent event) {
        float zAxis = event.getAxisValue(MotionEvent.AXIS_RX);
        float rzAxis = event.getAxisValue(MotionEvent.AXIS_RY);

        MotionEvent newEvent = MotionEvent.obtain(event);

        Log.d(TAG, String.format("z = %.2f, rz = %.2f", zAxis, rzAxis));

        if (zAxis > 0.3 || rzAxis > 0.3) {
            // How to replace rx and ry axis values by z and rz axis values???
        }

        return super.onGenericMotionEvent(newEvent);
    }
}

Может кто-нибудь показать мне, как это сделать правильно?Спасибо всем.

...