android: NitActivity and NitService use long to hold pointers
[nit.git] / lib / android / NitActivity.java
index 3744988..ca15d38 100644 (file)
@@ -17,6 +17,7 @@ package nit.app;
 
 import android.app.Activity;
 import android.os.Bundle;
+import android.view.KeyEvent;
 
 /*
  * Entry point to Nit applications on Android, redirect most calls to Nit
@@ -24,29 +25,34 @@ import android.os.Bundle;
 public class NitActivity extends Activity {
 
        // Nit activity associated to `this`
-       protected int nitActivity = 0;
+       protected long nitActivity = 0;
 
        /*
         * Calls to Nit or to the C framework
         */
 
        static {
-               System.loadLibrary("main");
+               System.loadLibrary("nit_app");
        }
 
        /*
         * Callbacks to Nit through C
         */
-       protected native int nitRegisterActivity();
-       protected native void nitOnCreate(int activity, Bundle savedInstanceState);
-       protected native void nitOnStart(int activity);
-       protected native void nitOnRestart(int activity);
-       protected native void nitOnResume(int activity);
-       protected native void nitOnPause(int activity);
-       protected native void nitOnStop(int activity);
-       protected native void nitOnDestroy(int activity);
-       protected native void nitOnSaveInstanceState(int activity, Bundle savedInstanceState);
-       protected native void nitOnRestoreInstanceState(int activity, Bundle savedInstanceState);
+       protected native long nitRegisterActivity();
+       protected native void nitOnCreate(long activity, Bundle savedInstanceState);
+       protected native void nitOnStart(long activity);
+       protected native void nitOnRestart(long activity);
+       protected native void nitOnResume(long activity);
+       protected native void nitOnPause(long activity);
+       protected native void nitOnStop(long activity);
+       protected native void nitOnDestroy(long activity);
+       protected native void nitOnSaveInstanceState(long activity, Bundle savedInstanceState);
+       protected native void nitOnRestoreInstanceState(long activity, Bundle savedInstanceState);
+       protected native boolean nitOnBackPressed(long activity);
+       protected native boolean nitOnKeyDown(long activity, int keyCode, KeyEvent event);
+       protected native boolean nitOnKeyLongPress(long activity, int keyCode, KeyEvent event);
+       protected native boolean nitOnKeyMultiple(long activity, int keyCode, int count, KeyEvent event);
+       protected native boolean nitOnKeyUp(long activity, int keyCode, KeyEvent event);
 
        /*
         * Implementation of OS callbacks
@@ -108,4 +114,34 @@ public class NitActivity extends Activity {
                super.onRestoreInstanceState(savedInstanceState);
                nitOnRestoreInstanceState(nitActivity, savedInstanceState);
        }
+
+       @Override
+       public void onBackPressed() {
+               if (!nitOnBackPressed(nitActivity))
+                       super.onBackPressed();
+       }
+
+       @Override
+       public boolean onKeyDown(int keyCode, KeyEvent event) {
+               return nitOnKeyDown(nitActivity, keyCode, event)
+                       || super.onKeyDown(keyCode, event);
+       }
+
+       @Override
+       public boolean onKeyLongPress(int keyCode, KeyEvent event) {
+               return nitOnKeyLongPress(nitActivity, keyCode, event)
+                       || super.onKeyLongPress(keyCode, event);
+       }
+
+       @Override
+       public boolean onKeyMultiple(int keyCode, int count, KeyEvent event) {
+               return nitOnKeyMultiple(nitActivity, keyCode, count, event)
+                       || super.onKeyMultiple(keyCode, count, event);
+       }
+
+       @Override
+       public boolean onKeyUp(int keyCode, KeyEvent event) {
+               return nitOnKeyUp(nitActivity, keyCode, event)
+                       || super.onKeyUp(keyCode, event);
+       }
 }