You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.3 KiB
50 lines
1.3 KiB
#ifndef JOYSTICKANDROID_H |
|
#define JOYSTICKANDROID_H |
|
|
|
#include "Joystick.h" |
|
#include "Vehicle.h" |
|
#include "MultiVehicleManager.h" |
|
|
|
#include <jni.h> |
|
#include <QtCore/private/qjni_p.h> |
|
#include <QtCore/private/qjnihelpers_p.h> |
|
#include <QtAndroidExtras/QtAndroidExtras> |
|
#include <QtAndroidExtras/QAndroidJniObject> |
|
|
|
|
|
class JoystickAndroid : public Joystick, public QtAndroidPrivate::GenericMotionEventListener, public QtAndroidPrivate::KeyEventListener |
|
{ |
|
public: |
|
JoystickAndroid(const QString& name, int axisCount, int buttonCount, int id, MultiVehicleManager* multiVehicleManager); |
|
~JoystickAndroid(); |
|
|
|
static QMap<QString, Joystick*> discover(MultiVehicleManager* _multiVehicleManager); |
|
|
|
private: |
|
bool handleKeyEvent(jobject event); |
|
bool handleGenericMotionEvent(jobject event); |
|
|
|
virtual bool _open(); |
|
virtual void _close(); |
|
virtual bool _update(); |
|
|
|
virtual bool _getButton(int i); |
|
virtual int _getAxis(int i); |
|
virtual uint8_t _getHat(int hat,int i); |
|
|
|
int *btnCode; |
|
int *axisCode; |
|
bool *btnValue; |
|
int *axisValue; |
|
|
|
static void _initStatic(); |
|
static int * _androidBtnList; //list of all possible android buttons |
|
static int _androidBtnListCount; |
|
|
|
static int ACTION_DOWN, ACTION_UP; |
|
static QMutex m_mutex; |
|
|
|
int deviceId; |
|
}; |
|
|
|
#endif // JOYSTICKANDROID_H
|
|
|