JoystickAndroid.h 1.18 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
#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 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);

    int *btnCode;
    int *axisCode;
    bool *btnValue;
    int *axisValue;

    static void _buttonList();
    static int * _androidBtnList; //list of all possible android buttons
    static int _androidBtnListCount;

    static QMutex m_mutex;

    int deviceId;
};

#endif // JOYSTICKANDROID_H