Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #ifndef __SP_SOFTPIXELDEVICE_ANDROID_H__
00009 #define __SP_SOFTPIXELDEVICE_ANDROID_H__
00010
00011
00012 #include "Base/spStandard.hpp"
00013
00014 #if defined(SP_PLATFORM_ANDROID)
00015
00016
00017 #include "Platform/spSoftPixelDevice.hpp"
00018 #include "Platform/Android/android_native_app_glue.h"
00019
00020 #include <jni.h>
00021 #include <android/log.h>
00022 #include <android/sensor.h>
00023
00024
00025 namespace sp
00026 {
00027
00028
00029 typedef void (*PFNSAVESTATECALLBACKPROC)(void* &SaveState, size_t &SaveStateSize);
00030
00032 class SP_EXPORT SoftPixelDeviceAndroid : public SoftPixelDevice
00033 {
00034
00035 public:
00036
00037 SoftPixelDeviceAndroid(
00038 android_app* App, const video::ERenderSystems RendererType, const io::stringc &Title, bool isFullscreen
00039 );
00040 ~SoftPixelDeviceAndroid();
00041
00042
00043
00044 void processEvent(int32_t Cmd);
00045
00046 bool updateEvents();
00047 void deleteDevice();
00048
00049
00050
00051 static void setSaveStateReadCallback(PFNSAVESTATECALLBACKPROC Callback);
00052 static void setSaveStateWriteCallback(PFNSAVESTATECALLBACKPROC Callback);
00053
00054
00055
00056 inline android_app* getApp() const
00057 {
00058 return App_;
00059 }
00060
00061 private:
00062
00063
00064
00065 bool openGraphicsScreen();
00066
00067 void startActivity();
00068 void stopActivity();
00069
00070 bool updateNextEvent();
00071 void processSensorEvent(s32 Ident);
00072
00073
00074
00075 android_app* App_;
00076
00077 ASensorManager* SensorManager_;
00078 ASensorEventQueue* SensorEventQueue_;
00079
00080 const ASensor* GyroscopeSensor_;
00081 const ASensor* AccelerometerSensor_;
00082 const ASensor* LightSensor_;
00083
00084 bool isActive_;
00085 bool isInitWindow_;
00086 bool isTermWindow_;
00087
00088 static PFNSAVESTATECALLBACKPROC SaveStateRead_, SaveStateWrite_;
00089
00090 };
00091
00092
00093 }
00094
00095
00096 #endif
00097
00098 #endif
00099
00100
00101
00102