[DEV] support multiple android version

This commit is contained in:
Edouard DUPIN 2012-10-18 18:17:14 +02:00
parent f9f619b90d
commit ace466b7bd
2 changed files with 121 additions and 55 deletions

View File

@ -82,7 +82,6 @@ public class __PROJECT_NAME__ extends Activity {
{ {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
// set the java evironement in the C sources : // set the java evironement in the C sources :
ActivitySetJavaVortualMachineStart(this); ActivitySetJavaVortualMachineStart(this);
@ -198,8 +197,7 @@ public class __PROJECT_NAME__ extends Activity {
public void CPP_keyboardShow() public void CPP_keyboardShow()
{ {
interfaceJNI.TouchEvent(); //interfaceJNI.TouchEvent();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
} }
@ -208,6 +206,7 @@ public class __PROJECT_NAME__ extends Activity {
{ {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0 ,InputMethodManager.HIDE_IMPLICIT_ONLY + InputMethodManager.HIDE_NOT_ALWAYS); imm.toggleSoftInput(0 ,InputMethodManager.HIDE_IMPLICIT_ONLY + InputMethodManager.HIDE_NOT_ALWAYS);
//imm.hideSoftInputFromWindow(view.getWindowToken(),0);
} }
public static void eventFromCPP(String[] args) public static void eventFromCPP(String[] args)

View File

@ -42,11 +42,34 @@ import android.view.KeyEvent;
public class interfaceSurfaceView extends GLSurfaceView { public class interfaceSurfaceView extends GLSurfaceView {
private interfaceOpenGL m_ewolDrawer; private interfaceOpenGL m_ewolDrawer;
private int M_SDK_VERSION;
public interfaceSurfaceView(Context context, int OpenGlVersion) { public interfaceSurfaceView(Context context, int OpenGlVersion) {
// super must be first statement in constructor // super must be first statement in constructor
super(context); super(context);
M_SDK_VERSION = android.os.Build.VERSION.SDK_INT;
/*
List of the Android API :
Android 4.1, 4.1.1 16 JELLY_BEAN Platform Highlights
Android 4.0.3, 4.0.4 15 ICE_CREAM_SANDWICH_MR1 Platform Highlights
Android 4.0, 4.0.1, 4.0.2 14 ICE_CREAM_SANDWICH
Android 3.2 13 HONEYCOMB_MR2
Android 3.1.x 12 HONEYCOMB_MR1 Platform Highlights
Android 3.0.x 11 HONEYCOMB Platform Highlights
Android 2.3.4
Android 2.3.3 10 GINGERBREAD_MR1 Platform Highlights
Android 2.3.2
Android 2.3.1
Android 2.3 9 GINGERBREAD
Android 2.2.x 8 FROYO Platform Highlights
Android 2.1.x 7 ECLAIR_MR1 Platform Highlights
Android 2.0.1 6 ECLAIR_0_1
Android 2.0 5 ECLAIR
Android 1.6 4 DONUT Platform Highlights
Android 1.5 3 CUPCAKE Platform Highlights
Android 1.1 2 BASE_1_1
Android 1.0 1 BASE
*/
// Create an OpenGL ES 2.0 context // Create an OpenGL ES 2.0 context
if (OpenGlVersion == 2) { if (OpenGlVersion == 2) {
setEGLContextClientVersion(2); setEGLContextClientVersion(2);
@ -67,101 +90,141 @@ public class interfaceSurfaceView extends GLSurfaceView {
public boolean onTouchEvent(final MotionEvent event) { public boolean onTouchEvent(final MotionEvent event) {
// Wrapper on input events : // Wrapper on input events :
int tmpActionType = event.getAction(); int tmpActionType = event.getAction();
if (tmpActionType == MotionEvent.ACTION_MOVE) { if (tmpActionType == MotionEvent.ACTION_MOVE) {
final int pointerCount = event.getPointerCount(); final int pointerCount = event.getPointerCount();
for (int p = 0; p < pointerCount; p++) { for (int p = 0; p < pointerCount; p++) {
final int typeOfPointer = event.getToolType(p); if (M_SDK_VERSION>=14) {
if( typeOfPointer == MotionEvent.TOOL_TYPE_FINGER final int typeOfPointer = event.getToolType(p);
|| typeOfPointer == MotionEvent.TOOL_TYPE_STYLUS) { if( typeOfPointer == MotionEvent.TOOL_TYPE_FINGER
|| typeOfPointer == MotionEvent.TOOL_TYPE_STYLUS) {
interfaceJNI.IOInputEventMotion(event.getPointerId(p), (float)event.getX(p), (float)event.getY(p));
} else if(typeOfPointer == MotionEvent.TOOL_TYPE_MOUSE) {
interfaceJNI.IOMouseEventMotion(event.getPointerId(p), (float)event.getX(p), (float)event.getY(p));
}
} else {
interfaceJNI.IOInputEventMotion(event.getPointerId(p), (float)event.getX(p), (float)event.getY(p)); interfaceJNI.IOInputEventMotion(event.getPointerId(p), (float)event.getX(p), (float)event.getY(p));
} else if(typeOfPointer == MotionEvent.TOOL_TYPE_MOUSE) {
interfaceJNI.IOMouseEventMotion(event.getPointerId(p), (float)event.getX(p), (float)event.getY(p));
} }
} }
} else if( tmpActionType == MotionEvent.ACTION_POINTER_1_DOWN } else if( tmpActionType == MotionEvent.ACTION_POINTER_1_DOWN
|| tmpActionType == MotionEvent.ACTION_DOWN) { || tmpActionType == MotionEvent.ACTION_DOWN) {
final int typeOfPointer = event.getToolType(0); if (M_SDK_VERSION>=14) {
if( typeOfPointer == MotionEvent.TOOL_TYPE_FINGER final int typeOfPointer = event.getToolType(0);
|| typeOfPointer == MotionEvent.TOOL_TYPE_STYLUS) { if( typeOfPointer == MotionEvent.TOOL_TYPE_FINGER
|| typeOfPointer == MotionEvent.TOOL_TYPE_STYLUS) {
interfaceJNI.IOInputEventState(event.getPointerId(0), true, (float)event.getX(0), (float)event.getY(0));
} else if(typeOfPointer == MotionEvent.TOOL_TYPE_MOUSE) {
interfaceJNI.IOMouseEventState(event.getPointerId(0), true, (float)event.getX(0), (float)event.getY(0));
}
} else {
interfaceJNI.IOInputEventState(event.getPointerId(0), true, (float)event.getX(0), (float)event.getY(0)); interfaceJNI.IOInputEventState(event.getPointerId(0), true, (float)event.getX(0), (float)event.getY(0));
} else if(typeOfPointer == MotionEvent.TOOL_TYPE_MOUSE) {
interfaceJNI.IOMouseEventState(event.getPointerId(0), true, (float)event.getX(0), (float)event.getY(0));
} }
InputDown1 = true; InputDown1 = true;
} else if(tmpActionType == MotionEvent.ACTION_POINTER_1_UP) { } else if(tmpActionType == MotionEvent.ACTION_POINTER_1_UP) {
final int typeOfPointer = event.getToolType(0); if (M_SDK_VERSION>=14) {
if( typeOfPointer == MotionEvent.TOOL_TYPE_FINGER final int typeOfPointer = event.getToolType(0);
|| typeOfPointer == MotionEvent.TOOL_TYPE_STYLUS) { if( typeOfPointer == MotionEvent.TOOL_TYPE_FINGER
|| typeOfPointer == MotionEvent.TOOL_TYPE_STYLUS) {
interfaceJNI.IOInputEventState(event.getPointerId(0), false, (float)event.getX(0), (float)event.getY(0));
} else if(typeOfPointer == MotionEvent.TOOL_TYPE_MOUSE) {
interfaceJNI.IOMouseEventState(event.getPointerId(0), false, (float)event.getX(0), (float)event.getY(0));
}
} else {
interfaceJNI.IOInputEventState(event.getPointerId(0), false, (float)event.getX(0), (float)event.getY(0)); interfaceJNI.IOInputEventState(event.getPointerId(0), false, (float)event.getX(0), (float)event.getY(0));
} else if(typeOfPointer == MotionEvent.TOOL_TYPE_MOUSE) {
interfaceJNI.IOMouseEventState(event.getPointerId(0), false, (float)event.getX(0), (float)event.getY(0));
} }
InputDown1 = false; InputDown1 = false;
} else if (tmpActionType == MotionEvent.ACTION_POINTER_2_DOWN) { } else if (tmpActionType == MotionEvent.ACTION_POINTER_2_DOWN) {
final int typeOfPointer = event.getToolType(1); if (M_SDK_VERSION>=14) {
if( typeOfPointer == MotionEvent.TOOL_TYPE_FINGER final int typeOfPointer = event.getToolType(1);
|| typeOfPointer == MotionEvent.TOOL_TYPE_STYLUS) { if( typeOfPointer == MotionEvent.TOOL_TYPE_FINGER
|| typeOfPointer == MotionEvent.TOOL_TYPE_STYLUS) {
interfaceJNI.IOInputEventState(event.getPointerId(1), true, (float)event.getX(1), (float)event.getY(1));
} else if(typeOfPointer == MotionEvent.TOOL_TYPE_MOUSE) {
interfaceJNI.IOMouseEventState(event.getPointerId(1), true, (float)event.getX(1), (float)event.getY(1));
}
} else {
interfaceJNI.IOInputEventState(event.getPointerId(1), true, (float)event.getX(1), (float)event.getY(1)); interfaceJNI.IOInputEventState(event.getPointerId(1), true, (float)event.getX(1), (float)event.getY(1));
} else if(typeOfPointer == MotionEvent.TOOL_TYPE_MOUSE) {
interfaceJNI.IOMouseEventState(event.getPointerId(1), true, (float)event.getX(1), (float)event.getY(1));
} }
InputDown2 = true; InputDown2 = true;
} else if (tmpActionType == MotionEvent.ACTION_POINTER_2_UP) { } else if (tmpActionType == MotionEvent.ACTION_POINTER_2_UP) {
final int typeOfPointer = event.getToolType(1); if (M_SDK_VERSION>=14) {
if( typeOfPointer == MotionEvent.TOOL_TYPE_FINGER final int typeOfPointer = event.getToolType(1);
|| typeOfPointer == MotionEvent.TOOL_TYPE_STYLUS) { if( typeOfPointer == MotionEvent.TOOL_TYPE_FINGER
|| typeOfPointer == MotionEvent.TOOL_TYPE_STYLUS) {
interfaceJNI.IOInputEventState(event.getPointerId(1), false, (float)event.getX(1), (float)event.getY(1));
} else if(typeOfPointer == MotionEvent.TOOL_TYPE_MOUSE) {
interfaceJNI.IOMouseEventState(event.getPointerId(1), false, (float)event.getX(1), (float)event.getY(1));
}
} else {
interfaceJNI.IOInputEventState(event.getPointerId(1), false, (float)event.getX(1), (float)event.getY(1)); interfaceJNI.IOInputEventState(event.getPointerId(1), false, (float)event.getX(1), (float)event.getY(1));
} else if(typeOfPointer == MotionEvent.TOOL_TYPE_MOUSE) {
interfaceJNI.IOMouseEventState(event.getPointerId(1), false, (float)event.getX(1), (float)event.getY(1));
} }
InputDown2 = false; InputDown2 = false;
} else if (tmpActionType == MotionEvent.ACTION_POINTER_3_DOWN) { } else if (tmpActionType == MotionEvent.ACTION_POINTER_3_DOWN) {
final int typeOfPointer = event.getToolType(2); if (M_SDK_VERSION>=14) {
if( typeOfPointer == MotionEvent.TOOL_TYPE_FINGER final int typeOfPointer = event.getToolType(2);
|| typeOfPointer == MotionEvent.TOOL_TYPE_STYLUS) { if( typeOfPointer == MotionEvent.TOOL_TYPE_FINGER
|| typeOfPointer == MotionEvent.TOOL_TYPE_STYLUS) {
interfaceJNI.IOInputEventState(event.getPointerId(2), true, (float)event.getX(2), (float)event.getY(2));
} else if(typeOfPointer == MotionEvent.TOOL_TYPE_MOUSE) {
interfaceJNI.IOMouseEventState(event.getPointerId(2), true, (float)event.getX(2), (float)event.getY(2));
}
} else {
interfaceJNI.IOInputEventState(event.getPointerId(2), true, (float)event.getX(2), (float)event.getY(2)); interfaceJNI.IOInputEventState(event.getPointerId(2), true, (float)event.getX(2), (float)event.getY(2));
} else if(typeOfPointer == MotionEvent.TOOL_TYPE_MOUSE) {
interfaceJNI.IOMouseEventState(event.getPointerId(2), true, (float)event.getX(2), (float)event.getY(2));
} }
InputDown3 = true; InputDown3 = true;
} else if (tmpActionType == MotionEvent.ACTION_POINTER_3_UP) { } else if (tmpActionType == MotionEvent.ACTION_POINTER_3_UP) {
final int typeOfPointer = event.getToolType(2); if (M_SDK_VERSION>=14) {
if( typeOfPointer == MotionEvent.TOOL_TYPE_FINGER final int typeOfPointer = event.getToolType(2);
|| typeOfPointer == MotionEvent.TOOL_TYPE_STYLUS) { if( typeOfPointer == MotionEvent.TOOL_TYPE_FINGER
|| typeOfPointer == MotionEvent.TOOL_TYPE_STYLUS) {
interfaceJNI.IOInputEventState(event.getPointerId(2), false, (float)event.getX(2), (float)event.getY(2));
} else if(typeOfPointer == MotionEvent.TOOL_TYPE_MOUSE) {
interfaceJNI.IOMouseEventState(event.getPointerId(2), false, (float)event.getX(2), (float)event.getY(2));
}
} else {
interfaceJNI.IOInputEventState(event.getPointerId(2), false, (float)event.getX(2), (float)event.getY(2)); interfaceJNI.IOInputEventState(event.getPointerId(2), false, (float)event.getX(2), (float)event.getY(2));
} else if(typeOfPointer == MotionEvent.TOOL_TYPE_MOUSE) {
interfaceJNI.IOMouseEventState(event.getPointerId(2), false, (float)event.getX(2), (float)event.getY(2));
} }
InputDown3 = false; InputDown3 = false;
} else if(tmpActionType == MotionEvent.ACTION_UP){ } else if(tmpActionType == MotionEvent.ACTION_UP){
if (InputDown1) { if (InputDown1) {
final int typeOfPointer = event.getToolType(0); if (M_SDK_VERSION>=14) {
if( typeOfPointer == MotionEvent.TOOL_TYPE_FINGER final int typeOfPointer = event.getToolType(0);
|| typeOfPointer == MotionEvent.TOOL_TYPE_STYLUS) { if( typeOfPointer == MotionEvent.TOOL_TYPE_FINGER
|| typeOfPointer == MotionEvent.TOOL_TYPE_STYLUS) {
interfaceJNI.IOInputEventState(event.getPointerId(0), false, (float)event.getX(0), (float)event.getY(0));
} else if(typeOfPointer == MotionEvent.TOOL_TYPE_MOUSE) {
interfaceJNI.IOMouseEventState(event.getPointerId(0), false, (float)event.getX(0), (float)event.getY(0));
}
} else {
interfaceJNI.IOInputEventState(event.getPointerId(0), false, (float)event.getX(0), (float)event.getY(0)); interfaceJNI.IOInputEventState(event.getPointerId(0), false, (float)event.getX(0), (float)event.getY(0));
} else if(typeOfPointer == MotionEvent.TOOL_TYPE_MOUSE) {
interfaceJNI.IOMouseEventState(event.getPointerId(0), false, (float)event.getX(0), (float)event.getY(0));
} }
InputDown1 = false; InputDown1 = false;
} else if (InputDown2) { } else if (InputDown2) {
final int typeOfPointer = event.getToolType(0); if (M_SDK_VERSION>=14) {
if( typeOfPointer == MotionEvent.TOOL_TYPE_FINGER final int typeOfPointer = event.getToolType(0);
|| typeOfPointer == MotionEvent.TOOL_TYPE_STYLUS) { if( typeOfPointer == MotionEvent.TOOL_TYPE_FINGER
|| typeOfPointer == MotionEvent.TOOL_TYPE_STYLUS) {
interfaceJNI.IOInputEventState(event.getPointerId(0), false, (float)event.getX(0), (float)event.getY(0));
} else if(typeOfPointer == MotionEvent.TOOL_TYPE_MOUSE) {
interfaceJNI.IOMouseEventState(event.getPointerId(0), false, (float)event.getX(0), (float)event.getY(0));
}
} else {
interfaceJNI.IOInputEventState(event.getPointerId(0), false, (float)event.getX(0), (float)event.getY(0)); interfaceJNI.IOInputEventState(event.getPointerId(0), false, (float)event.getX(0), (float)event.getY(0));
} else if(typeOfPointer == MotionEvent.TOOL_TYPE_MOUSE) {
interfaceJNI.IOMouseEventState(event.getPointerId(0), false, (float)event.getX(0), (float)event.getY(0));
} }
InputDown2 = false; InputDown2 = false;
} else { } else {
final int typeOfPointer = event.getToolType(0); if (M_SDK_VERSION>=14) {
if( typeOfPointer == MotionEvent.TOOL_TYPE_FINGER final int typeOfPointer = event.getToolType(0);
|| typeOfPointer == MotionEvent.TOOL_TYPE_STYLUS) { if( typeOfPointer == MotionEvent.TOOL_TYPE_FINGER
|| typeOfPointer == MotionEvent.TOOL_TYPE_STYLUS) {
interfaceJNI.IOInputEventState(event.getPointerId(0), false, (float)event.getX(0), (float)event.getY(0));
} else if(typeOfPointer == MotionEvent.TOOL_TYPE_MOUSE) {
interfaceJNI.IOMouseEventState(event.getPointerId(0), false, (float)event.getX(0), (float)event.getY(0));
}
} else {
interfaceJNI.IOInputEventState(event.getPointerId(0), false, (float)event.getX(0), (float)event.getY(0)); interfaceJNI.IOInputEventState(event.getPointerId(0), false, (float)event.getX(0), (float)event.getY(0));
} else if(typeOfPointer == MotionEvent.TOOL_TYPE_MOUSE) {
interfaceJNI.IOMouseEventState(event.getPointerId(0), false, (float)event.getX(0), (float)event.getY(0));
} }
InputDown3 = false; InputDown3 = false;
} }
@ -229,6 +292,10 @@ public class interfaceSurfaceView extends GLSurfaceView {
{ {
// convert the key in UniChar to prevent errors ... // convert the key in UniChar to prevent errors ...
int uchar = event.getUnicodeChar(); int uchar = event.getUnicodeChar();
// pb on the return methode ... in java it is like windows ...
if (uchar == '\r') {
uchar = '\n';
}
// send it to ewol ... // send it to ewol ...
interfaceJNI.IOKeyboardEventKey(uchar, isDown); interfaceJNI.IOKeyboardEventKey(uchar, isDown);
return true; return true;