Я пытаюсь переназначить некоторые неправильные значения оси из контроллера 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);
}
}
Может кто-нибудь показать мне, как это сделать правильно?Спасибо всем.