Add:Core:More android stuff
[navit-package] / navit / android.c
1 #include <string.h>
2 #include "android.h"
3 #include <android/log.h>
4 #include "debug.h"
5 #include "callback.h"
6
7 JNIEnv *jnienv;
8 jobject *android_activity;
9
10
11 int
12 android_find_class_global(char *name, jclass *ret)
13 {
14         *ret=(*jnienv)->FindClass(jnienv, name);
15         if (! *ret) {
16                 dbg(0,"Failed to get Class %s\n",name);
17                 return 0;
18         }
19         (*jnienv)->NewGlobalRef(jnienv, *ret);
20         return 1;
21 }
22
23 int
24 android_find_method(jclass class, char *name, char *args, jmethodID *ret)
25 {
26         *ret = (*jnienv)->GetMethodID(jnienv, class, name, args);
27         if (*ret == NULL) {
28                 dbg(0,"Failed to get Method %s with signature %s\n",name,args);
29                 return 0;
30         }
31         return 1;
32 }
33
34 int
35 android_find_static_method(jclass class, char *name, char *args, jmethodID *ret)
36 {
37         *ret = (*jnienv)->GetStaticMethodID(jnienv, class, name, args);
38         if (*ret == NULL) {
39                 dbg(0,"Failed to get static Method %s with signature %s\n",name,args);
40                 return 0;
41         }
42         return 1;
43 }
44
45 JNIEXPORT void JNICALL
46 Java_org_navitproject_navit_Navit_NavitMain( JNIEnv* env, jobject thiz, jobject activity)
47 {
48         char *strings[]={"/data/data/org.navitproject.navit/bin/navit",NULL};
49         __android_log_print(ANDROID_LOG_ERROR,"test","called");
50         jnienv=env;
51         android_activity=activity;
52         dbg(0,"enter env=%p thiz=%p activity=%p\n",env,thiz,activity);
53         main(1, strings);
54 }
55
56 JNIEXPORT void JNICALL
57 Java_org_navitproject_navit_NavitGraphics_SizeChangedCallback( JNIEnv* env, jobject thiz, int id, int w, int h)
58 {
59         dbg(0,"enter %p %d %d\n",(struct callback *)id,w,h);
60         if (id)
61                 callback_call_2((struct callback *)id,w,h);
62 }
63
64 JNIEXPORT void JNICALL
65 Java_org_navitproject_navit_NavitGraphics_ButtonCallback( JNIEnv* env, jobject thiz, int id, int pressed, int button, int x, int y)
66 {
67         dbg(0,"enter %p %d %d\n",(struct callback *)id,pressed,button);
68         if (id)
69                 callback_call_4((struct callback *)id,pressed,button,x,y);
70 }
71
72 JNIEXPORT void JNICALL
73 Java_org_navitproject_navit_NavitGraphics_MotionCallback( JNIEnv* env, jobject thiz, int id, int x, int y)
74 {
75         dbg(0,"enter %p %d %d\n",(struct callback *)id,x,y);
76         if (id)
77                 callback_call_2((struct callback *)id,x,y);
78 }
79
80 JNIEXPORT void JNICALL
81 Java_org_navitproject_navit_NavitTimeout_TimeoutCallback( JNIEnv* env, jobject thiz, int delete, int id)
82 {
83         dbg(1,"enter %p %d %p\n",thiz, delete, (void *)id);
84         callback_call_0((struct callback *)id);
85         if (delete)
86                 (*jnienv)->DeleteGlobalRef(jnienv, thiz);
87 }
88
89 JNIEXPORT void JNICALL
90 Java_org_navitproject_navit_NavitVehicle_VehicleCallback( JNIEnv * env, jobject thiz, int id, jobject location)
91 {
92         callback_call_1((struct callback *)id, (void *)location);
93