Nanashi-soft○プログラマ専用○AndroidでOpenGL ES 2.0プログラミング○
public class testndk extends Activity { public void onCreate(Bundle savedInstanceState) { ~略~ } public boolean onTouchEvent(MotionEvent event) { ~ここにタッチ時の処理~ } ~略~Activityオブジェクトには,最初からタッチ操作が届いている仕様なのです
class testRenderer implements GLSurfaceView.Renderer{ public native void NDKonSurfaceChanged(int w,int h); ~略~ static { System.loadLibrary("hello-jni"); } ~略~ public void onSurfaceChanged(GL10 gl, int w, int h) { NDKonSurfaceChanged(w, h); } ~略~これに対する,cファイルの関数は↓こういう感じですね
~略~ void Java_jp_testndk_testndk_NDKonSizeChanged(JNIEnv* env, jobject obj, jint w, jint h) { ~略~これと同じように書けば良いです
public class testndk extends Activity { public native void NDKonTouch(int mode2,float cx,float cy); ~略~ static { System.loadLibrary("hello-jni"); } ~略~ public boolean onTouchEvent(MotionEvent event) { int mode2=-1; float cx=0; float cy=0; if(event.getAction() == MotionEvent.ACTION_DOWN) { //タッチした mode2=1; cx=event.getX(); cy=event.getY(); NDKonTouch(mode2, cx, cy); return true; }else if(event.getAction() == MotionEvent.ACTION_UP){ //離した mode2=0; cx=event.getX(); cy=event.getY(); NDKonTouch(mode2, cx, cy); return true; } return false; } ~略~タッチした時と,離した時の座標を送るサンプルです
void Java_jp_testndk_testndk_NDKonTouch(JNIEnv* env, jobject obj, int mode2,float cx,float cy) { if(mode2 == 1){ //タッチされた }else if(mode2 == 0){ //離された } }これでタッチした内容を C言語に伝える事ができます