Add Soft keyboard and wrapper of the key event (first step ==> can really be better)
This commit is contained in:
parent
751a0712d8
commit
7cc9076ab8
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
PROJECT_PACKAGE=$(PROJECT_NAME)package
|
PROJECT_PACKAGE=$(PROJECT_NAME)package
|
||||||
JAVA_FOLDER=src/com/$(PROJECT_VENDOR)/$(PROJECT_NAME)
|
JAVA_FOLDER=src/com/$(PROJECT_VENDOR)/$(PROJECT_NAME)
|
||||||
|
EWOL_JAVA_FOLDER=src/org/ewol
|
||||||
|
|
||||||
|
|
||||||
all:
|
all:
|
||||||
@ -16,19 +17,22 @@ all:
|
|||||||
|
|
||||||
@echo " (sh) Clear previous sources "
|
@echo " (sh) Clear previous sources "
|
||||||
@rm -rf src jni/ewolAndroidAbstraction.cpp
|
@rm -rf src jni/ewolAndroidAbstraction.cpp
|
||||||
@echo " (sh) Create folder : $(JAVA_FOLDER)/ "
|
@echo " (sh) Create folder : $(JAVA_FOLDER)/ & $(EWOL_JAVA_FOLDER)"
|
||||||
@mkdir -p $(JAVA_FOLDER)/
|
@mkdir -p $(JAVA_FOLDER)/
|
||||||
|
@mkdir -p $(EWOL_JAVA_FOLDER)/
|
||||||
|
|
||||||
@echo " (sh) copy the java File : "
|
@echo " (sh) copy the java Files & Replace __XXX__ element with project properties"
|
||||||
@cp $(EWOL_FOLDER)/Java/PROJECT_NAME.java $(JAVA_FOLDER)/$(PROJECT_NAME).java
|
@cp $(EWOL_FOLDER)/Java/PROJECT_NAME.java $(JAVA_FOLDER)/$(PROJECT_NAME).java
|
||||||
@echo " (sh) Replace __PROJECT_VENDOR__, __PROJECT_NAME__ and __PROJECT_PACKAGE__ with the correct intance "
|
|
||||||
@sed -i "s|__PROJECT_VENDOR__|$(PROJECT_VENDOR)|" $(JAVA_FOLDER)/$(PROJECT_NAME).java
|
@sed -i "s|__PROJECT_VENDOR__|$(PROJECT_VENDOR)|" $(JAVA_FOLDER)/$(PROJECT_NAME).java
|
||||||
@sed -i "s|__PROJECT_NAME__|$(PROJECT_NAME)|" $(JAVA_FOLDER)/$(PROJECT_NAME).java
|
@sed -i "s|__PROJECT_NAME__|$(PROJECT_NAME)|" $(JAVA_FOLDER)/$(PROJECT_NAME).java
|
||||||
@sed -i "s|__PROJECT_PACKAGE__|$(PROJECT_PACKAGE)|" $(JAVA_FOLDER)/$(PROJECT_NAME).java
|
@sed -i "s|__PROJECT_PACKAGE__|$(PROJECT_PACKAGE)|" $(JAVA_FOLDER)/$(PROJECT_NAME).java
|
||||||
|
# copy the Ewol java files :
|
||||||
|
@cp $(EWOL_FOLDER)/Java/interfaceJNI.java $(EWOL_JAVA_FOLDER)/
|
||||||
|
@cp $(EWOL_FOLDER)/Java/interfaceOpenGL.java $(EWOL_JAVA_FOLDER)/
|
||||||
|
@cp $(EWOL_FOLDER)/Java/interfaceSurfaceView.java $(EWOL_JAVA_FOLDER)/
|
||||||
|
|
||||||
@echo " (sh) copy the cpp for jni File : $(EWOL_FOLDER)/SourcesJava/ewolAndroidAbstraction.cpp"
|
@echo " (sh) copy the cpp for jni File : $(EWOL_FOLDER)/SourcesJava/ewolAndroidAbstraction.cpp"
|
||||||
@cp $(EWOL_FOLDER)/Java/ewolAndroidAbstraction.cpp jni/
|
@cp $(EWOL_FOLDER)/Java/ewolAndroidAbstraction.cpp jni/
|
||||||
@echo " (sh) Replace __PROJECT_VENDOR__, __PROJECT_NAME__ and __PROJECT_PACKAGE__ with the correct intance "
|
|
||||||
@sed -i "s|__PROJECT_VENDOR__|$(PROJECT_VENDOR)|" jni/ewolAndroidAbstraction.cpp
|
@sed -i "s|__PROJECT_VENDOR__|$(PROJECT_VENDOR)|" jni/ewolAndroidAbstraction.cpp
|
||||||
@sed -i "s|__PROJECT_NAME__|$(PROJECT_NAME)|" jni/ewolAndroidAbstraction.cpp
|
@sed -i "s|__PROJECT_NAME__|$(PROJECT_NAME)|" jni/ewolAndroidAbstraction.cpp
|
||||||
@sed -i "s|__PROJECT_PACKAGE__|$(PROJECT_PACKAGE)|" jni/ewolAndroidAbstraction.cpp
|
@sed -i "s|__PROJECT_PACKAGE__|$(PROJECT_PACKAGE)|" jni/ewolAndroidAbstraction.cpp
|
||||||
|
@ -1,10 +1,31 @@
|
|||||||
|
/**
|
||||||
|
*******************************************************************************
|
||||||
|
* @file ewol __PROJECT_NAME__.java
|
||||||
|
* @brief Java __PROJECT_NAME__ code.
|
||||||
|
* @author Edouard DUPIN
|
||||||
|
* @date 20/04/2012
|
||||||
|
* @par Project
|
||||||
|
* ewol
|
||||||
|
*
|
||||||
|
* @par Copyright
|
||||||
|
* Copyright 2011 Edouard DUPIN, all right reserved
|
||||||
|
*
|
||||||
|
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY.
|
||||||
|
*
|
||||||
|
* Licence summary :
|
||||||
|
* You can modify and redistribute the sources code and binaries.
|
||||||
|
* You can send me the bug-fix
|
||||||
|
*
|
||||||
|
* Term of the licence in in the file licence.txt.
|
||||||
|
*
|
||||||
|
*******************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
package com.__PROJECT_VENDOR__.__PROJECT_PACKAGE__;
|
package com.__PROJECT_VENDOR__.__PROJECT_PACKAGE__;
|
||||||
|
|
||||||
import javax.microedition.khronos.egl.EGLConfig;
|
|
||||||
import javax.microedition.khronos.opengles.GL10;
|
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@ -32,29 +53,26 @@ import android.content.pm.PackageManager.NameNotFoundException;
|
|||||||
import android.content.res.AssetFileDescriptor;
|
import android.content.res.AssetFileDescriptor;
|
||||||
import android.content.res.AssetManager;
|
import android.content.res.AssetManager;
|
||||||
|
|
||||||
|
// inport the ewol package :
|
||||||
|
import org.ewol.interfaceJNI;
|
||||||
|
import org.ewol.interfaceSurfaceView;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Class :
|
* @brief Class :
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class __PROJECT_NAME__ extends Activity {
|
public class __PROJECT_NAME__ extends Activity {
|
||||||
private static native void TouchEvent();
|
|
||||||
private static native void ActivitySetJavaVortualMachineStart(__PROJECT_NAME__ ActivityInstance);
|
private static native void ActivitySetJavaVortualMachineStart(__PROJECT_NAME__ ActivityInstance);
|
||||||
//private static native void ActivitySetJavaVortualMachineStart();
|
|
||||||
private static native void ActivitySetJavaVortualMachineStop();
|
private static native void ActivitySetJavaVortualMachineStop();
|
||||||
private static native void ActivityOnCreate();
|
|
||||||
private static native void ActivityOnStart();
|
|
||||||
private static native void ActivityOnReStart();
|
|
||||||
private static native void ActivityOnResume();
|
|
||||||
private static native void ActivityOnPause();
|
|
||||||
private static native void ActivityOnStop();
|
|
||||||
private static native void ActivityOnDestroy();
|
|
||||||
private static native void ActivityParamSetArchiveDir(int mode, String myString);
|
private static native void ActivityParamSetArchiveDir(int mode, String myString);
|
||||||
|
|
||||||
private GLSurfaceView mGLView;
|
private interfaceSurfaceView mGLView;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
System.loadLibrary("__PROJECT_PACKAGE__");
|
System.loadLibrary("__PROJECT_PACKAGE__");
|
||||||
//ActivitySetInstance(this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override protected void onCreate(Bundle savedInstanceState)
|
@Override protected void onCreate(Bundle savedInstanceState)
|
||||||
@ -64,7 +82,6 @@ public class __PROJECT_NAME__ extends Activity {
|
|||||||
|
|
||||||
// set the java evironement in the C sources :
|
// set the java evironement in the C sources :
|
||||||
ActivitySetJavaVortualMachineStart(this);
|
ActivitySetJavaVortualMachineStart(this);
|
||||||
//ActivitySetJavaVortualMachineStart();
|
|
||||||
|
|
||||||
// Load the application directory
|
// Load the application directory
|
||||||
ActivityParamSetArchiveDir(1, getFilesDir().toString());
|
ActivityParamSetArchiveDir(1, getFilesDir().toString());
|
||||||
@ -87,7 +104,7 @@ public class __PROJECT_NAME__ extends Activity {
|
|||||||
|
|
||||||
|
|
||||||
// call C init ...
|
// call C init ...
|
||||||
ActivityOnCreate();
|
interfaceJNI.ActivityOnCreate();
|
||||||
|
|
||||||
// Remove the title of the current display :
|
// Remove the title of the current display :
|
||||||
requestWindowFeature(Window.FEATURE_NO_TITLE);
|
requestWindowFeature(Window.FEATURE_NO_TITLE);
|
||||||
@ -99,8 +116,10 @@ public class __PROJECT_NAME__ extends Activity {
|
|||||||
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
|
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
|
||||||
//Force landscape
|
//Force landscape
|
||||||
//setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
|
//setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
|
||||||
|
|
||||||
// create bsurface system
|
// create bsurface system
|
||||||
mGLView = new EwolGLSurfaceView(this);
|
mGLView = new interfaceSurfaceView(this);
|
||||||
|
|
||||||
setContentView(mGLView);
|
setContentView(mGLView);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -108,14 +127,14 @@ public class __PROJECT_NAME__ extends Activity {
|
|||||||
{
|
{
|
||||||
super.onStart();
|
super.onStart();
|
||||||
// call C
|
// call C
|
||||||
ActivityOnStart();
|
interfaceJNI.ActivityOnStart();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override protected void onRestart()
|
@Override protected void onRestart()
|
||||||
{
|
{
|
||||||
super.onRestart();
|
super.onRestart();
|
||||||
// call C
|
// call C
|
||||||
ActivityOnReStart();
|
interfaceJNI.ActivityOnReStart();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override protected void onResume()
|
@Override protected void onResume()
|
||||||
@ -123,7 +142,7 @@ public class __PROJECT_NAME__ extends Activity {
|
|||||||
super.onResume();
|
super.onResume();
|
||||||
mGLView.onResume();
|
mGLView.onResume();
|
||||||
// call C
|
// call C
|
||||||
ActivityOnResume();
|
interfaceJNI.ActivityOnResume();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override protected void onPause()
|
@Override protected void onPause()
|
||||||
@ -131,20 +150,20 @@ public class __PROJECT_NAME__ extends Activity {
|
|||||||
super.onPause();
|
super.onPause();
|
||||||
mGLView.onPause();
|
mGLView.onPause();
|
||||||
// call C
|
// call C
|
||||||
ActivityOnPause();
|
interfaceJNI.ActivityOnPause();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override protected void onStop()
|
@Override protected void onStop()
|
||||||
{
|
{
|
||||||
super.onStop();
|
super.onStop();
|
||||||
// call C
|
// call C
|
||||||
ActivityOnStop();
|
interfaceJNI.ActivityOnStop();
|
||||||
}
|
}
|
||||||
@Override protected void onDestroy()
|
@Override protected void onDestroy()
|
||||||
{
|
{
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
// call C
|
// call C
|
||||||
ActivityOnDestroy();
|
interfaceJNI.ActivityOnDestroy();
|
||||||
// Remove the java Virtual machine pointer form the C code
|
// Remove the java Virtual machine pointer form the C code
|
||||||
ActivitySetJavaVortualMachineStop();
|
ActivitySetJavaVortualMachineStop();
|
||||||
}
|
}
|
||||||
@ -162,120 +181,24 @@ public class __PROJECT_NAME__ extends Activity {
|
|||||||
|
|
||||||
public void CPP_keyboardShow()
|
public void CPP_keyboardShow()
|
||||||
{
|
{
|
||||||
TouchEvent();
|
interfaceJNI.TouchEvent();
|
||||||
try{
|
|
||||||
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
|
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||||
} catch (Exception e) {
|
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
|
||||||
|
}
|
||||||
}
|
|
||||||
TouchEvent();
|
public void CPP_keyboardHide()
|
||||||
|
{
|
||||||
|
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||||
|
imm.toggleSoftInput(0 ,InputMethodManager.HIDE_IMPLICIT_ONLY + InputMethodManager.HIDE_NOT_ALWAYS);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void eventFromCPP(String[] args)
|
public static void eventFromCPP(String[] args)
|
||||||
{
|
{
|
||||||
// just for the test ...
|
// just for the test ...
|
||||||
TouchEvent();
|
interfaceJNI.TouchEvent();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Class :
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
class EwolGLSurfaceView extends GLSurfaceView {
|
|
||||||
private static native void nativeApplicationInit();
|
|
||||||
private static native void nativeApplicationUnInit();
|
|
||||||
private static native void nativeEventInputMotion(int pointerID, float x, float y);
|
|
||||||
private static native void nativeEventInputState(int pointerID, boolean isDown, float x, float y);
|
|
||||||
private static native void nativeEventUnknow(int eventID);
|
|
||||||
|
|
||||||
public EwolGLSurfaceView(Context context) {
|
|
||||||
// super must be first statement in constructor
|
|
||||||
super(context);
|
|
||||||
|
|
||||||
// je n'ai pas compris ...
|
|
||||||
mRenderer = new EwolRenderer();
|
|
||||||
setRenderer(mRenderer);
|
|
||||||
nativeApplicationInit();
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean InputDown1 = false;
|
|
||||||
private boolean InputDown2 = false;
|
|
||||||
private boolean InputDown3 = false;
|
|
||||||
|
|
||||||
public boolean onTouchEvent(final MotionEvent event) {
|
|
||||||
// Wrapper on input events :
|
|
||||||
int tmpActionType = event.getAction();
|
|
||||||
|
|
||||||
if (tmpActionType == MotionEvent.ACTION_MOVE) {
|
|
||||||
final int pointerCount = event.getPointerCount();
|
|
||||||
for (int p = 0; p < pointerCount; p++) {
|
|
||||||
nativeEventInputMotion(event.getPointerId(p), (float)event.getX(p), (float)event.getY(p));
|
|
||||||
}
|
|
||||||
} else if( tmpActionType == MotionEvent.ACTION_POINTER_1_DOWN
|
|
||||||
|| tmpActionType == MotionEvent.ACTION_DOWN) {
|
|
||||||
nativeEventInputState(event.getPointerId(0), true, (float)event.getX(0), (float)event.getY(0));
|
|
||||||
InputDown1 = true;
|
|
||||||
} else if(tmpActionType == MotionEvent.ACTION_POINTER_1_UP) {
|
|
||||||
nativeEventInputState(event.getPointerId(0), false, (float)event.getX(0), (float)event.getY(0));
|
|
||||||
InputDown1 = false;
|
|
||||||
} else if (tmpActionType == MotionEvent.ACTION_POINTER_2_DOWN) {
|
|
||||||
nativeEventInputState(event.getPointerId(1), true, (float)event.getX(1), (float)event.getY(1));
|
|
||||||
InputDown2 = true;
|
|
||||||
} else if (tmpActionType == MotionEvent.ACTION_POINTER_2_UP) {
|
|
||||||
nativeEventInputState(event.getPointerId(1), false, (float)event.getX(1), (float)event.getY(1));
|
|
||||||
InputDown2 = false;
|
|
||||||
} else if (tmpActionType == MotionEvent.ACTION_POINTER_3_DOWN) {
|
|
||||||
nativeEventInputState(event.getPointerId(2), true, (float)event.getX(2), (float)event.getY(2));
|
|
||||||
InputDown3 = true;
|
|
||||||
} else if (tmpActionType == MotionEvent.ACTION_POINTER_3_UP) {
|
|
||||||
nativeEventInputState(event.getPointerId(2), false, (float)event.getX(2), (float)event.getY(2));
|
|
||||||
InputDown3 = false;
|
|
||||||
} else if(tmpActionType == MotionEvent.ACTION_UP){
|
|
||||||
if (InputDown1) {
|
|
||||||
nativeEventInputState(event.getPointerId(0), false, (float)event.getX(0), (float)event.getY(0));
|
|
||||||
InputDown1 = false;
|
|
||||||
} else if (InputDown2) {
|
|
||||||
nativeEventInputState(event.getPointerId(0), false, (float)event.getX(0), (float)event.getY(0));
|
|
||||||
InputDown2 = false;
|
|
||||||
} else {
|
|
||||||
nativeEventInputState(event.getPointerId(0), false, (float)event.getX(0), (float)event.getY(0));
|
|
||||||
InputDown3 = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean onKeyDown (int keyCode, KeyEvent event){
|
|
||||||
// TODO ...
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
EwolRenderer mRenderer;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Class :
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
class EwolRenderer implements GLSurfaceView.Renderer {
|
|
||||||
private static native void nativeInit();
|
|
||||||
private static native void nativeResize(int w, int h);
|
|
||||||
private static native void nativeRender();
|
|
||||||
|
|
||||||
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
|
|
||||||
nativeInit();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void onSurfaceChanged(GL10 gl, int w, int h) {
|
|
||||||
nativeResize(w, h);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void onDrawFrame(GL10 gl) {
|
|
||||||
nativeRender();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@ -48,6 +48,7 @@ static jclass javaClassActivity = 0; // main activity class (andro
|
|||||||
static jobject javaObjectActivity = 0;
|
static jobject javaObjectActivity = 0;
|
||||||
static jmethodID javaClassActivityEntryPoint = 0; // basic methode to call ...
|
static jmethodID javaClassActivityEntryPoint = 0; // basic methode to call ...
|
||||||
static jmethodID javaClassActivityEntryPoint__CPP_keyboardShow = 0; // basic methode to call ...
|
static jmethodID javaClassActivityEntryPoint__CPP_keyboardShow = 0; // basic methode to call ...
|
||||||
|
static jmethodID javaClassActivityEntryPoint__CPP_keyboardHide = 0; // basic methode to call ...
|
||||||
// generic classes
|
// generic classes
|
||||||
static jclass javaDefaultClassString = 0; // default string class
|
static jclass javaDefaultClassString = 0; // default string class
|
||||||
|
|
||||||
@ -57,84 +58,7 @@ static JavaVM* g_JavaVM = NULL;
|
|||||||
// jni doc : /usr/lib/jvm/java-1.6.0-openjdk/include
|
// jni doc : /usr/lib/jvm/java-1.6.0-openjdk/include
|
||||||
|
|
||||||
|
|
||||||
// for exemple test :
|
void SendJava_KeyboardShow(bool showIt)
|
||||||
void displayKeyboard(bool pShow) {
|
|
||||||
// Attaches the current thread to the JVM.
|
|
||||||
jint lResult;
|
|
||||||
jint lFlags = 0;
|
|
||||||
|
|
||||||
JavaVM* lJavaVM = g_JavaVM;
|
|
||||||
JNIEnv* lJNIEnv = NULL;
|
|
||||||
|
|
||||||
int status = g_JavaVM->GetEnv((void **) &lJNIEnv, JNI_VERSION_1_6);
|
|
||||||
if (status == JNI_EDETACHED) {
|
|
||||||
JavaVMAttachArgs lJavaVMAttachArgs;
|
|
||||||
lJavaVMAttachArgs.version = JNI_VERSION_1_6;
|
|
||||||
lJavaVMAttachArgs.name = "EwolNativeThread";
|
|
||||||
lJavaVMAttachArgs.group = NULL;
|
|
||||||
status = g_JavaVM->AttachCurrentThread(&lJNIEnv, &lJavaVMAttachArgs);
|
|
||||||
if (status != JNI_OK) {
|
|
||||||
APPL_DEBUG("C->java : AttachCurrentThread failed : " << status);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (JavaVirtualMachinePointer->ExceptionOccurred()) {
|
|
||||||
JavaVirtualMachinePointer->ExceptionDescribe();
|
|
||||||
JavaVirtualMachinePointer->ExceptionClear();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
if (lResult == JNI_ERR) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
if (JavaVirtualMachinePointer->ExceptionOccurred()) {
|
|
||||||
JavaVirtualMachinePointer->ExceptionDescribe();
|
|
||||||
JavaVirtualMachinePointer->ExceptionClear();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Retrieves NativeActivity.
|
|
||||||
jobject lNativeActivity = javaClassActivity;
|
|
||||||
jclass ClassNativeActivity = lJNIEnv->GetObjectClass(lNativeActivity);
|
|
||||||
|
|
||||||
// Retrieves Context.INPUT_METHOD_SERVICE.
|
|
||||||
jclass ClassContext = lJNIEnv->FindClass("android/content/Context");
|
|
||||||
jfieldID FieldINPUT_METHOD_SERVICE = lJNIEnv->GetStaticFieldID(ClassContext, "INPUT_METHOD_SERVICE", "Ljava/lang/String;");
|
|
||||||
jobject INPUT_METHOD_SERVICE = lJNIEnv->GetStaticObjectField(ClassContext, FieldINPUT_METHOD_SERVICE);
|
|
||||||
// TODO : jniCheck(INPUT_METHOD_SERVICE);
|
|
||||||
|
|
||||||
// Runs getSystemService(Context.INPUT_METHOD_SERVICE).
|
|
||||||
jclass ClassInputMethodManager = lJNIEnv->FindClass("android/view/inputmethod/InputMethodManager");
|
|
||||||
jmethodID MethodGetSystemService = lJNIEnv->GetMethodID(ClassNativeActivity, "getSystemService", "(Ljava/lang/String;)Ljava/lang/Object;");
|
|
||||||
jobject lInputMethodManager = lJNIEnv->CallObjectMethod(lNativeActivity, MethodGetSystemService, INPUT_METHOD_SERVICE);
|
|
||||||
|
|
||||||
// Runs getWindow().getDecorView().
|
|
||||||
jmethodID MethodGetWindow = lJNIEnv->GetMethodID(ClassNativeActivity, "getWindow", "()Landroid/view/Window;");
|
|
||||||
jobject lWindow = lJNIEnv->CallObjectMethod(lNativeActivity, MethodGetWindow);
|
|
||||||
jclass ClassWindow = lJNIEnv->FindClass("android/view/Window");
|
|
||||||
jmethodID MethodGetDecorView = lJNIEnv->GetMethodID(ClassWindow, "getDecorView", "()Landroid/view/View;");
|
|
||||||
jobject lDecorView = lJNIEnv->CallObjectMethod(lWindow, MethodGetDecorView);
|
|
||||||
|
|
||||||
if (pShow) {
|
|
||||||
// Runs lInputMethodManager.showSoftInput(...).
|
|
||||||
jmethodID MethodShowSoftInput = lJNIEnv->GetMethodID( ClassInputMethodManager, "showSoftInput", "(Landroid/view/View;I)Z");
|
|
||||||
jboolean lResult = lJNIEnv->CallBooleanMethod(lInputMethodManager, MethodShowSoftInput, lDecorView, lFlags);
|
|
||||||
} else {
|
|
||||||
// Runs lWindow.getViewToken()
|
|
||||||
jclass ClassView = lJNIEnv->FindClass("android/view/View");
|
|
||||||
jmethodID MethodGetWindowToken = lJNIEnv->GetMethodID(ClassView, "getWindowToken", "()Landroid/os/IBinder;");
|
|
||||||
jobject lBinder = lJNIEnv->CallObjectMethod(lDecorView, MethodGetWindowToken);
|
|
||||||
// lInputMethodManager.hideSoftInput(...).
|
|
||||||
jmethodID MethodHideSoftInput = lJNIEnv->GetMethodID( ClassInputMethodManager, "hideSoftInputFromWindow", "(Landroid/os/IBinder;I)Z");
|
|
||||||
jboolean lRes = lJNIEnv->CallBooleanMethod( lInputMethodManager, MethodHideSoftInput, lBinder, lFlags);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Finished with the JVM.
|
|
||||||
lJavaVM->DetachCurrentThread();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void SendJava_KeyboardShow(void)
|
|
||||||
{
|
{
|
||||||
APPL_DEBUG("C->java : call java");
|
APPL_DEBUG("C->java : call java");
|
||||||
if (NULL == g_JavaVM) {
|
if (NULL == g_JavaVM) {
|
||||||
@ -165,20 +89,18 @@ void SendJava_KeyboardShow(void)
|
|||||||
JavaVirtualMachinePointer->ExceptionClear();
|
JavaVirtualMachinePointer->ExceptionClear();
|
||||||
}
|
}
|
||||||
|
|
||||||
APPL_DEBUG("C->java : 111");
|
|
||||||
if (NULL == JavaVirtualMachinePointer) {
|
if (NULL == JavaVirtualMachinePointer) {
|
||||||
APPL_DEBUG("C->java : JVM not initialised");
|
APPL_DEBUG("C->java : JVM not initialised");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
APPL_DEBUG("C->java : 333");
|
|
||||||
//Call java ...
|
//Call java ...
|
||||||
//JavaVirtualMachinePointer->CallVoidMethod(javaClassActivity, javaClassActivityEntryPoint__CPP_keyboardShow);
|
if (true == showIt) {
|
||||||
//JavaVirtualMachinePointer->CallStaticVoidMethod(javaClassActivity, javaClassActivityEntryPoint__CPP_keyboardShow);
|
JavaVirtualMachinePointer->CallVoidMethod(javaObjectActivity, javaClassActivityEntryPoint__CPP_keyboardShow);
|
||||||
JavaVirtualMachinePointer->CallVoidMethod(javaObjectActivity, javaClassActivityEntryPoint__CPP_keyboardShow);
|
} else {
|
||||||
|
JavaVirtualMachinePointer->CallVoidMethod(javaObjectActivity, javaClassActivityEntryPoint__CPP_keyboardHide);
|
||||||
|
}
|
||||||
|
|
||||||
APPL_DEBUG("C->java : 444");
|
|
||||||
// manage execption :
|
// manage execption :
|
||||||
if (JavaVirtualMachinePointer->ExceptionOccurred()) {
|
if (JavaVirtualMachinePointer->ExceptionOccurred()) {
|
||||||
APPL_DEBUG("C->java : EXEPTION ...");
|
APPL_DEBUG("C->java : EXEPTION ...");
|
||||||
@ -249,6 +171,9 @@ void SendSystemMessage(const char * dataString)
|
|||||||
g_JavaVM->DetachCurrentThread();
|
g_JavaVM->DetachCurrentThread();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace guiAbstraction {
|
||||||
|
void SendKeyboardEvent(bool isDown, uniChar_t keyInput);
|
||||||
|
};
|
||||||
|
|
||||||
extern "C"
|
extern "C"
|
||||||
{
|
{
|
||||||
@ -308,13 +233,21 @@ extern "C"
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
javaClassActivityEntryPoint__CPP_keyboardShow = JavaVirtualMachinePointer->GetMethodID(javaClassActivity, "CPP_keyboardShow", "()V" );
|
javaClassActivityEntryPoint__CPP_keyboardShow = JavaVirtualMachinePointer->GetMethodID(javaClassActivity, "CPP_keyboardShow", "()V" );
|
||||||
if (javaClassActivityEntryPoint == 0) {
|
if (javaClassActivityEntryPoint__CPP_keyboardShow == 0) {
|
||||||
APPL_DEBUG("C->java : Can't find com/__PROJECT_VENDOR__/__PROJECT_PACKAGE__/__PROJECT_NAME__.CPP_keyboardShow" );
|
APPL_DEBUG("C->java : Can't find com/__PROJECT_VENDOR__/__PROJECT_PACKAGE__/__PROJECT_NAME__.CPP_keyboardShow" );
|
||||||
// remove access on the virtual machine :
|
// remove access on the virtual machine :
|
||||||
JavaVirtualMachinePointer = NULL;
|
JavaVirtualMachinePointer = NULL;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
javaObjectActivity = JavaVirtualMachinePointer->NewGlobalRef(obj);
|
javaClassActivityEntryPoint__CPP_keyboardHide = JavaVirtualMachinePointer->GetMethodID(javaClassActivity, "CPP_keyboardHide", "()V" );
|
||||||
|
if (javaClassActivityEntryPoint__CPP_keyboardHide == 0) {
|
||||||
|
APPL_DEBUG("C->java : Can't find com/__PROJECT_VENDOR__/__PROJECT_PACKAGE__/__PROJECT_NAME__.CPP_keyboardHide" );
|
||||||
|
// remove access on the virtual machine :
|
||||||
|
JavaVirtualMachinePointer = NULL;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//javaObjectActivity = JavaVirtualMachinePointer->NewGlobalRef(obj);
|
||||||
|
javaObjectActivity = obj;
|
||||||
|
|
||||||
javaDefaultClassString = JavaVirtualMachinePointer->FindClass("java/lang/String" );
|
javaDefaultClassString = JavaVirtualMachinePointer->FindClass("java/lang/String" );
|
||||||
if (javaDefaultClassString == 0) {
|
if (javaDefaultClassString == 0) {
|
||||||
@ -332,7 +265,7 @@ extern "C"
|
|||||||
APPL_DEBUG("*******************************************");
|
APPL_DEBUG("*******************************************");
|
||||||
JavaVirtualMachinePointer = NULL;
|
JavaVirtualMachinePointer = NULL;
|
||||||
}
|
}
|
||||||
void Java_com___PROJECT_VENDOR_____PROJECT_PACKAGE_____PROJECT_NAME___TouchEvent( JNIEnv* env )
|
void Java_org_ewol_interfaceJNI_TouchEvent( JNIEnv* env )
|
||||||
{
|
{
|
||||||
APPL_DEBUG(" ==> Touch Event");
|
APPL_DEBUG(" ==> Touch Event");
|
||||||
if (env->ExceptionOccurred()) {
|
if (env->ExceptionOccurred()) {
|
||||||
@ -341,33 +274,33 @@ extern "C"
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Java_com___PROJECT_VENDOR_____PROJECT_PACKAGE_____PROJECT_NAME___ActivityOnCreate( JNIEnv* env )
|
void Java_org_ewol_interfaceJNI_ActivityOnCreate( JNIEnv* env )
|
||||||
{
|
{
|
||||||
APPL_DEBUG("*******************************************");
|
APPL_DEBUG("*******************************************");
|
||||||
APPL_DEBUG("** Activity On Create **");
|
APPL_DEBUG("** Activity On Create **");
|
||||||
APPL_DEBUG("*******************************************");
|
APPL_DEBUG("*******************************************");
|
||||||
EWOL_SystemStart();
|
EWOL_SystemStart();
|
||||||
}
|
}
|
||||||
void Java_com___PROJECT_VENDOR_____PROJECT_PACKAGE_____PROJECT_NAME___ActivityOnStart( JNIEnv* env )
|
void Java_org_ewol_interfaceJNI_ActivityOnStart( JNIEnv* env )
|
||||||
{
|
{
|
||||||
APPL_DEBUG("*******************************************");
|
APPL_DEBUG("*******************************************");
|
||||||
APPL_DEBUG("** Activity On Start **");
|
APPL_DEBUG("** Activity On Start **");
|
||||||
APPL_DEBUG("*******************************************");
|
APPL_DEBUG("*******************************************");
|
||||||
//SendSystemMessage(" testmessages ... ");
|
//SendSystemMessage(" testmessages ... ");
|
||||||
}
|
}
|
||||||
void Java_com___PROJECT_VENDOR_____PROJECT_PACKAGE_____PROJECT_NAME___ActivityOnReStart( JNIEnv* env )
|
void Java_org_ewol_interfaceJNI_ActivityOnReStart( JNIEnv* env )
|
||||||
{
|
{
|
||||||
APPL_DEBUG("*******************************************");
|
APPL_DEBUG("*******************************************");
|
||||||
APPL_DEBUG("** Activity On Re-Start **");
|
APPL_DEBUG("** Activity On Re-Start **");
|
||||||
APPL_DEBUG("*******************************************");
|
APPL_DEBUG("*******************************************");
|
||||||
}
|
}
|
||||||
void Java_com___PROJECT_VENDOR_____PROJECT_PACKAGE_____PROJECT_NAME___ActivityOnResume( JNIEnv* env )
|
void Java_org_ewol_interfaceJNI_ActivityOnResume( JNIEnv* env )
|
||||||
{
|
{
|
||||||
APPL_DEBUG("*******************************************");
|
APPL_DEBUG("*******************************************");
|
||||||
APPL_DEBUG("** Activity On Resume **");
|
APPL_DEBUG("** Activity On Resume **");
|
||||||
APPL_DEBUG("*******************************************");
|
APPL_DEBUG("*******************************************");
|
||||||
}
|
}
|
||||||
void Java_com___PROJECT_VENDOR_____PROJECT_PACKAGE_____PROJECT_NAME___ActivityOnPause( JNIEnv* env )
|
void Java_org_ewol_interfaceJNI_ActivityOnPause( JNIEnv* env )
|
||||||
{
|
{
|
||||||
APPL_DEBUG("*******************************************");
|
APPL_DEBUG("*******************************************");
|
||||||
APPL_DEBUG("** Activity On Pause **");
|
APPL_DEBUG("** Activity On Pause **");
|
||||||
@ -376,13 +309,13 @@ extern "C"
|
|||||||
// TODO : Mark all the texture to be reloaded ...
|
// TODO : Mark all the texture to be reloaded ...
|
||||||
EWOL_NativeGLDestroy();
|
EWOL_NativeGLDestroy();
|
||||||
}
|
}
|
||||||
void Java_com___PROJECT_VENDOR_____PROJECT_PACKAGE_____PROJECT_NAME___ActivityOnStop( JNIEnv* env )
|
void Java_org_ewol_interfaceJNI_ActivityOnStop( JNIEnv* env )
|
||||||
{
|
{
|
||||||
APPL_DEBUG("*******************************************");
|
APPL_DEBUG("*******************************************");
|
||||||
APPL_DEBUG("** Activity On Stop **");
|
APPL_DEBUG("** Activity On Stop **");
|
||||||
APPL_DEBUG("*******************************************");
|
APPL_DEBUG("*******************************************");
|
||||||
}
|
}
|
||||||
void Java_com___PROJECT_VENDOR_____PROJECT_PACKAGE_____PROJECT_NAME___ActivityOnDestroy( JNIEnv* env )
|
void Java_org_ewol_interfaceJNI_ActivityOnDestroy( JNIEnv* env )
|
||||||
{
|
{
|
||||||
APPL_DEBUG("*******************************************");
|
APPL_DEBUG("*******************************************");
|
||||||
APPL_DEBUG("** Activity On Destroy **");
|
APPL_DEBUG("** Activity On Destroy **");
|
||||||
@ -391,42 +324,86 @@ extern "C"
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Call to initialize the graphics state */
|
|
||||||
void Java_com___PROJECT_VENDOR_____PROJECT_PACKAGE___EwolRenderer_nativeInit( JNIEnv* env )
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
/* **********************************************************************************************
|
||||||
void Java_com___PROJECT_VENDOR_____PROJECT_PACKAGE___EwolRenderer_nativeResize( JNIEnv* env, jobject thiz, jint w, jint h )
|
* ** IO section :
|
||||||
{
|
* ********************************************************************************************** */
|
||||||
EWOL_ThreadResize(w, h);
|
void Java_org_ewol_interfaceJNI_IOInputEventMotion( JNIEnv* env, jobject thiz, jint pointerID, jfloat x, jfloat y )
|
||||||
}
|
|
||||||
|
|
||||||
void Java_com___PROJECT_VENDOR_____PROJECT_PACKAGE___EwolGLSurfaceView_nativeEventInputMotion( JNIEnv* env, jobject thiz, jint pointerID, jfloat x, jfloat y )
|
|
||||||
{
|
{
|
||||||
EWOL_ThreadEventInputMotion(pointerID+1, x, y);
|
EWOL_ThreadEventInputMotion(pointerID+1, x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Java_com___PROJECT_VENDOR_____PROJECT_PACKAGE___EwolGLSurfaceView_nativeEventInputState( JNIEnv* env, jobject thiz, jint pointerID, jboolean isUp, jfloat x, jfloat y )
|
void Java_org_ewol_interfaceJNI_IOInputEventState( JNIEnv* env, jobject thiz, jint pointerID, jboolean isUp, jfloat x, jfloat y )
|
||||||
{
|
{
|
||||||
EWOL_ThreadEventInputState(pointerID+1, isUp, x, y);
|
EWOL_ThreadEventInputState(pointerID+1, isUp, x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Java_org_ewol_interfaceJNI_IOInputEventUnknow( JNIEnv* env, jobject thiz, jint pointerID)
|
||||||
void Java_com___PROJECT_VENDOR_____PROJECT_PACKAGE___EwolGLSurfaceView_nativeApplicationInit( JNIEnv* env)
|
|
||||||
{
|
{
|
||||||
//ewol::threadMsg::SendMessage(androidJniMsg, JNI_APP_INIT);
|
APPL_DEBUG("Unknown IO event : " << pointerID << " ???");
|
||||||
//EWOL_NativeApplicationInit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Java_com___PROJECT_VENDOR_____PROJECT_PACKAGE___EwolGLSurfaceView_nativeApplicationUnInit( JNIEnv* env)
|
void Java_org_ewol_interfaceJNI_IOKeyboardEventMove( JNIEnv* env, jobject thiz, jint type, jboolean isdown)
|
||||||
{
|
{
|
||||||
//ewol::threadMsg::SendMessage(androidJniMsg, JNI_APP_UN_INIT);
|
APPL_DEBUG("IO keyboard Move event : \"" << type << "\" is down=" << isdown);
|
||||||
//EWOL_NativeApplicationUnInit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Java_com___PROJECT_VENDOR_____PROJECT_PACKAGE___EwolRenderer_nativeRender( JNIEnv* env )
|
void Java_org_ewol_interfaceJNI_IOKeyboardEventKey( JNIEnv* env, jobject thiz, jint uniChar, jboolean isdown)
|
||||||
|
{
|
||||||
|
APPL_DEBUG("IO keyboard Key event : \"" << uniChar << "\" is down=" << isdown);
|
||||||
|
guiAbstraction::SendKeyboardEvent(isdown, uniChar);
|
||||||
|
}
|
||||||
|
enum {
|
||||||
|
SYSTEM_KEY__VOLUME_UP = 1,
|
||||||
|
SYSTEM_KEY__VOLUME_DOWN,
|
||||||
|
SYSTEM_KEY__MENU,
|
||||||
|
SYSTEM_KEY__CAMERA,
|
||||||
|
SYSTEM_KEY__HOME,
|
||||||
|
SYSTEM_KEY__POWER,
|
||||||
|
};
|
||||||
|
void Java_org_ewol_interfaceJNI_IOKeyboardEventKeySystem( JNIEnv* env, jobject thiz, jint keyVal, jboolean isdown)
|
||||||
|
{
|
||||||
|
switch (keyVal)
|
||||||
|
{
|
||||||
|
case SYSTEM_KEY__VOLUME_UP:
|
||||||
|
APPL_DEBUG("IO keyboard Key System \"VOLUME_UP\" is down=" << keyVal);
|
||||||
|
break;
|
||||||
|
case SYSTEM_KEY__VOLUME_DOWN:
|
||||||
|
APPL_DEBUG("IO keyboard Key System \"VOLUME_DOWN\" is down=" << keyVal);
|
||||||
|
break;
|
||||||
|
case SYSTEM_KEY__MENU:
|
||||||
|
APPL_DEBUG("IO keyboard Key System \"MENU\" is down=" << keyVal);
|
||||||
|
break;
|
||||||
|
case SYSTEM_KEY__CAMERA:
|
||||||
|
APPL_DEBUG("IO keyboard Key System \"CAMERA\" is down=" << keyVal);
|
||||||
|
break;
|
||||||
|
case SYSTEM_KEY__HOME:
|
||||||
|
APPL_DEBUG("IO keyboard Key System \"HOME\" is down=" << keyVal);
|
||||||
|
break;
|
||||||
|
case SYSTEM_KEY__POWER:
|
||||||
|
APPL_DEBUG("IO keyboard Key System \"POWER\" is down=" << keyVal);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
APPL_DEBUG("IO keyboard Key System event : \"" << keyVal << "\" is down=" << isdown);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* **********************************************************************************************
|
||||||
|
* ** Renderer section :
|
||||||
|
* ********************************************************************************************** */
|
||||||
|
void Java_org_ewol_interfaceJNI_RenderInit( JNIEnv* env )
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void Java_org_ewol_interfaceJNI_RenderResize( JNIEnv* env, jobject thiz, jint w, jint h )
|
||||||
|
{
|
||||||
|
EWOL_ThreadResize(w, h);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Java_org_ewol_interfaceJNI_RenderDraw( JNIEnv* env )
|
||||||
{
|
{
|
||||||
EWOL_NativeRender();
|
EWOL_NativeRender();
|
||||||
}
|
}
|
||||||
|
56
Java/interfaceJNI.java
Normal file
56
Java/interfaceJNI.java
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
/**
|
||||||
|
*******************************************************************************
|
||||||
|
* @file ewol interfaceJNI.java
|
||||||
|
* @brief Java interface to the CPP code.
|
||||||
|
* @author Edouard DUPIN
|
||||||
|
* @date 20/04/2012
|
||||||
|
* @par Project
|
||||||
|
* ewol
|
||||||
|
*
|
||||||
|
* @par Copyright
|
||||||
|
* Copyright 2011 Edouard DUPIN, all right reserved
|
||||||
|
*
|
||||||
|
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY.
|
||||||
|
*
|
||||||
|
* Licence summary :
|
||||||
|
* You can modify and redistribute the sources code and binaries.
|
||||||
|
* You can send me the bug-fix
|
||||||
|
*
|
||||||
|
* Term of the licence in in the file licence.txt.
|
||||||
|
*
|
||||||
|
*******************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.ewol;
|
||||||
|
|
||||||
|
public class interfaceJNI {
|
||||||
|
public static native void TouchEvent();
|
||||||
|
// activity status
|
||||||
|
public static native void ActivityOnCreate();
|
||||||
|
public static native void ActivityOnStart();
|
||||||
|
public static native void ActivityOnReStart();
|
||||||
|
public static native void ActivityOnResume();
|
||||||
|
public static native void ActivityOnPause();
|
||||||
|
public static native void ActivityOnStop();
|
||||||
|
public static native void ActivityOnDestroy();
|
||||||
|
// IO native function :
|
||||||
|
public static native void IOInputEventMotion(int pointerID, float x, float y);
|
||||||
|
public static native void IOInputEventState(int pointerID, boolean isDown, float x, float y);
|
||||||
|
public static native void IOInputEventUnknow(int eventID);
|
||||||
|
public static native void IOKeyboardEventMove(int type, boolean isDown);
|
||||||
|
public static native void IOKeyboardEventKey(int uniChar, boolean isDown);
|
||||||
|
|
||||||
|
public static int EWOL_SYSTEM_KEY__VOLUME_UP = 1;
|
||||||
|
public static int EWOL_SYSTEM_KEY__VOLUME_DOWN = 2;
|
||||||
|
public static int EWOL_SYSTEM_KEY__MENU = 3;
|
||||||
|
public static int EWOL_SYSTEM_KEY__CAMERA = 4;
|
||||||
|
public static int EWOL_SYSTEM_KEY__HOME = 5;
|
||||||
|
public static int EWOL_SYSTEM_KEY__POWER = 6;
|
||||||
|
public static native void IOKeyboardEventKeySystem(int keyVal, boolean isDown);
|
||||||
|
// renderer Event :
|
||||||
|
public static native void RenderInit();
|
||||||
|
public static native void RenderResize(int w, int h);
|
||||||
|
public static native void RenderDraw();
|
||||||
|
}
|
||||||
|
|
52
Java/interfaceOpenGL.java
Normal file
52
Java/interfaceOpenGL.java
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
/**
|
||||||
|
*******************************************************************************
|
||||||
|
* @file ewol interfaceOpenGL.java
|
||||||
|
* @brief Java openGl interface code.
|
||||||
|
* @author Edouard DUPIN
|
||||||
|
* @date 20/04/2012
|
||||||
|
* @par Project
|
||||||
|
* ewol
|
||||||
|
*
|
||||||
|
* @par Copyright
|
||||||
|
* Copyright 2011 Edouard DUPIN, all right reserved
|
||||||
|
*
|
||||||
|
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY.
|
||||||
|
*
|
||||||
|
* Licence summary :
|
||||||
|
* You can modify and redistribute the sources code and binaries.
|
||||||
|
* You can send me the bug-fix
|
||||||
|
*
|
||||||
|
* Term of the licence in in the file licence.txt.
|
||||||
|
*
|
||||||
|
*******************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.ewol;
|
||||||
|
|
||||||
|
import javax.microedition.khronos.egl.EGLConfig;
|
||||||
|
import javax.microedition.khronos.opengles.GL10;
|
||||||
|
import android.opengl.GLSurfaceView;
|
||||||
|
|
||||||
|
// inport the ewol package :
|
||||||
|
import org.ewol.interfaceJNI;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Class :
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class interfaceOpenGL implements GLSurfaceView.Renderer {
|
||||||
|
|
||||||
|
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
|
||||||
|
interfaceJNI.RenderInit();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onSurfaceChanged(GL10 gl, int w, int h) {
|
||||||
|
interfaceJNI.RenderResize(w, h);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onDrawFrame(GL10 gl) {
|
||||||
|
interfaceJNI.RenderDraw();
|
||||||
|
}
|
||||||
|
}
|
184
Java/interfaceSurfaceView.java
Normal file
184
Java/interfaceSurfaceView.java
Normal file
@ -0,0 +1,184 @@
|
|||||||
|
/**
|
||||||
|
*******************************************************************************
|
||||||
|
* @file ewol interfaceSurfaceView.java
|
||||||
|
* @brief Java interface of the java Surface viewer code.
|
||||||
|
* @author Edouard DUPIN
|
||||||
|
* @date 20/04/2012
|
||||||
|
* @par Project
|
||||||
|
* ewol
|
||||||
|
*
|
||||||
|
* @par Copyright
|
||||||
|
* Copyright 2011 Edouard DUPIN, all right reserved
|
||||||
|
*
|
||||||
|
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY.
|
||||||
|
*
|
||||||
|
* Licence summary :
|
||||||
|
* You can modify and redistribute the sources code and binaries.
|
||||||
|
* You can send me the bug-fix
|
||||||
|
*
|
||||||
|
* Term of the licence in in the file licence.txt.
|
||||||
|
*
|
||||||
|
*******************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.ewol;
|
||||||
|
|
||||||
|
// inport the ewol package :
|
||||||
|
import org.ewol.interfaceJNI;
|
||||||
|
import org.ewol.interfaceOpenGL;
|
||||||
|
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.opengl.GLSurfaceView;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.MotionEvent;
|
||||||
|
import android.view.KeyEvent;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Class :
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class interfaceSurfaceView extends GLSurfaceView {
|
||||||
|
|
||||||
|
private interfaceOpenGL m_ewolDrawer;
|
||||||
|
|
||||||
|
public interfaceSurfaceView(Context context) {
|
||||||
|
// super must be first statement in constructor
|
||||||
|
super(context);
|
||||||
|
|
||||||
|
// je n'ai pas compris ...
|
||||||
|
m_ewolDrawer = new interfaceOpenGL();
|
||||||
|
setRenderer(m_ewolDrawer);
|
||||||
|
|
||||||
|
// Can get the focus ==> get keyboard from JAVA :
|
||||||
|
setFocusable(true);
|
||||||
|
setFocusableInTouchMode(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean InputDown1 = false;
|
||||||
|
private boolean InputDown2 = false;
|
||||||
|
private boolean InputDown3 = false;
|
||||||
|
|
||||||
|
public boolean onTouchEvent(final MotionEvent event) {
|
||||||
|
// Wrapper on input events :
|
||||||
|
int tmpActionType = event.getAction();
|
||||||
|
|
||||||
|
if (tmpActionType == MotionEvent.ACTION_MOVE) {
|
||||||
|
final int pointerCount = event.getPointerCount();
|
||||||
|
for (int p = 0; p < pointerCount; p++) {
|
||||||
|
interfaceJNI.IOInputEventMotion(event.getPointerId(p), (float)event.getX(p), (float)event.getY(p));
|
||||||
|
}
|
||||||
|
} else if( tmpActionType == MotionEvent.ACTION_POINTER_1_DOWN
|
||||||
|
|| tmpActionType == MotionEvent.ACTION_DOWN) {
|
||||||
|
interfaceJNI.IOInputEventState(event.getPointerId(0), true, (float)event.getX(0), (float)event.getY(0));
|
||||||
|
InputDown1 = true;
|
||||||
|
} else if(tmpActionType == MotionEvent.ACTION_POINTER_1_UP) {
|
||||||
|
interfaceJNI.IOInputEventState(event.getPointerId(0), false, (float)event.getX(0), (float)event.getY(0));
|
||||||
|
InputDown1 = false;
|
||||||
|
} else if (tmpActionType == MotionEvent.ACTION_POINTER_2_DOWN) {
|
||||||
|
interfaceJNI.IOInputEventState(event.getPointerId(1), true, (float)event.getX(1), (float)event.getY(1));
|
||||||
|
InputDown2 = true;
|
||||||
|
} else if (tmpActionType == MotionEvent.ACTION_POINTER_2_UP) {
|
||||||
|
interfaceJNI.IOInputEventState(event.getPointerId(1), false, (float)event.getX(1), (float)event.getY(1));
|
||||||
|
InputDown2 = false;
|
||||||
|
} else if (tmpActionType == MotionEvent.ACTION_POINTER_3_DOWN) {
|
||||||
|
interfaceJNI.IOInputEventState(event.getPointerId(2), true, (float)event.getX(2), (float)event.getY(2));
|
||||||
|
InputDown3 = true;
|
||||||
|
} else if (tmpActionType == MotionEvent.ACTION_POINTER_3_UP) {
|
||||||
|
interfaceJNI.IOInputEventState(event.getPointerId(2), false, (float)event.getX(2), (float)event.getY(2));
|
||||||
|
InputDown3 = false;
|
||||||
|
} else if(tmpActionType == MotionEvent.ACTION_UP){
|
||||||
|
if (InputDown1) {
|
||||||
|
interfaceJNI.IOInputEventState(event.getPointerId(0), false, (float)event.getX(0), (float)event.getY(0));
|
||||||
|
InputDown1 = false;
|
||||||
|
} else if (InputDown2) {
|
||||||
|
interfaceJNI.IOInputEventState(event.getPointerId(0), false, (float)event.getX(0), (float)event.getY(0));
|
||||||
|
InputDown2 = false;
|
||||||
|
} else {
|
||||||
|
interfaceJNI.IOInputEventState(event.getPointerId(0), false, (float)event.getX(0), (float)event.getY(0));
|
||||||
|
InputDown3 = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean keyboardEvent(int keyCode, KeyEvent event, boolean isDown)
|
||||||
|
{
|
||||||
|
int actionDone = event.getAction();
|
||||||
|
switch(keyCode)
|
||||||
|
{
|
||||||
|
case KeyEvent.KEYCODE_VOLUME_DOWN:
|
||||||
|
interfaceJNI.IOKeyboardEventKeySystem(interfaceJNI.EWOL_SYSTEM_KEY__VOLUME_DOWN, isDown);
|
||||||
|
return true;
|
||||||
|
case KeyEvent.KEYCODE_VOLUME_UP:
|
||||||
|
interfaceJNI.IOKeyboardEventKeySystem(interfaceJNI.EWOL_SYSTEM_KEY__VOLUME_UP, isDown);
|
||||||
|
return true;
|
||||||
|
case KeyEvent.KEYCODE_MENU:
|
||||||
|
interfaceJNI.IOKeyboardEventKeySystem(interfaceJNI.EWOL_SYSTEM_KEY__MENU, isDown);
|
||||||
|
return true;
|
||||||
|
case KeyEvent.KEYCODE_CAMERA:
|
||||||
|
interfaceJNI.IOKeyboardEventKeySystem(interfaceJNI.EWOL_SYSTEM_KEY__CAMERA, isDown);
|
||||||
|
return true;
|
||||||
|
case KeyEvent.KEYCODE_HOME:
|
||||||
|
interfaceJNI.IOKeyboardEventKeySystem(interfaceJNI.EWOL_SYSTEM_KEY__HOME, isDown);
|
||||||
|
return true;
|
||||||
|
case KeyEvent.KEYCODE_POWER:
|
||||||
|
interfaceJNI.IOKeyboardEventKeySystem(interfaceJNI.EWOL_SYSTEM_KEY__POWER, isDown);
|
||||||
|
return true;
|
||||||
|
case KeyEvent.KEYCODE_BACK:
|
||||||
|
// the back key is wrapped in the <esc> key to simplify PC validation ...
|
||||||
|
interfaceJNI.IOKeyboardEventKey(0x1B, isDown);
|
||||||
|
return true;
|
||||||
|
case KeyEvent.KEYCODE_DEL:
|
||||||
|
interfaceJNI.IOKeyboardEventKey(0x08, isDown);
|
||||||
|
return true;
|
||||||
|
case KeyEvent.KEYCODE_ALT_LEFT:
|
||||||
|
// TODO : ...
|
||||||
|
break;
|
||||||
|
case KeyEvent.KEYCODE_SHIFT_LEFT:
|
||||||
|
// TODO : ...
|
||||||
|
break;
|
||||||
|
case KeyEvent.KEYCODE_ENTER:
|
||||||
|
// TODO : ...
|
||||||
|
break;
|
||||||
|
// Joystick event :
|
||||||
|
case KeyEvent.KEYCODE_DPAD_UP:
|
||||||
|
break;
|
||||||
|
case KeyEvent.KEYCODE_DPAD_DOWN:
|
||||||
|
break;
|
||||||
|
case KeyEvent.KEYCODE_DPAD_LEFT:
|
||||||
|
break;
|
||||||
|
case KeyEvent.KEYCODE_DPAD_RIGHT:
|
||||||
|
break;
|
||||||
|
case KeyEvent.KEYCODE_DPAD_CENTER:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// key wrapping :
|
||||||
|
if( (actionDone == KeyEvent.ACTION_DOWN)
|
||||||
|
|| (actionDone == KeyEvent.ACTION_MULTIPLE)
|
||||||
|
|| (actionDone == KeyEvent.ACTION_UP))
|
||||||
|
{
|
||||||
|
// convert the key in UniChar to prevent errors ...
|
||||||
|
int uchar = event.getUnicodeChar();
|
||||||
|
// send it to ewol ...
|
||||||
|
interfaceJNI.IOKeyboardEventKey(uchar, isDown);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean onKeyDown(int keyCode, KeyEvent event)
|
||||||
|
{
|
||||||
|
return keyboardEvent(keyCode, event, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean onKeyUp(int keyCode, KeyEvent event)
|
||||||
|
{
|
||||||
|
return keyboardEvent(keyCode, event, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -250,18 +250,18 @@ void guiAbstraction::Stop(void)
|
|||||||
|
|
||||||
// java system to send message :
|
// java system to send message :
|
||||||
void SendSystemMessage(const char * dataString);
|
void SendSystemMessage(const char * dataString);
|
||||||
void SendJava_KeyboardShow(void);
|
void SendJava_KeyboardShow(bool showIt);
|
||||||
|
|
||||||
void guiAbstraction::KeyboardShow(ewol::keyboardMode_te mode)
|
void guiAbstraction::KeyboardShow(ewol::keyboardMode_te mode)
|
||||||
{
|
{
|
||||||
// send a message at the java :
|
// send a message at the java :
|
||||||
SendJava_KeyboardShow();
|
SendJava_KeyboardShow(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void guiAbstraction::KeyboardHide(void)
|
void guiAbstraction::KeyboardHide(void)
|
||||||
{
|
{
|
||||||
// send a message at the java :
|
// send a message at the java :
|
||||||
SendSystemMessage("Keyboard_Hide");
|
SendJava_KeyboardShow(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void guiAbstraction::ChangeSize(int32_t w, int32_t h)
|
void guiAbstraction::ChangeSize(int32_t w, int32_t h)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user