Add:Core:Next round of android work
[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, jobject lang)
47 {
48         char *strings[]={"/data/data/org.navitproject.navit/bin/navit",NULL};
49         char *langstr;
50         __android_log_print(ANDROID_LOG_ERROR,"test","called");
51         jnienv=env;
52         android_activity=activity;
53         (*jnienv)->NewGlobalRef(jnienv, activity);
54         langstr=(*env)->GetStringUTFChars(env, lang, NULL);
55         setenv("LANG",langstr,1);
56         dbg(0,"enter env=%p thiz=%p activity=%p lang=%s\n",env,thiz,activity,langstr);
57         (*env)->ReleaseStringUTFChars(env, lang, langstr);
58         main(1, strings);
59 }
60
61 JNIEXPORT void JNICALL
62 Java_org_navitproject_navit_NavitGraphics_SizeChangedCallback( JNIEnv* env, jobject thiz, int id, int w, int h)
63 {
64         dbg(0,"enter %p %d %d\n",(struct callback *)id,w,h);
65         if (id)
66                 callback_call_2((struct callback *)id,w,h);
67 }
68
69 JNIEXPORT void JNICALL
70 Java_org_navitproject_navit_NavitGraphics_ButtonCallback( JNIEnv* env, jobject thiz, int id, int pressed, int button, int x, int y)
71 {
72         dbg(0,"enter %p %d %d\n",(struct callback *)id,pressed,button);
73         if (id)
74                 callback_call_4((struct callback *)id,pressed,button,x,y);
75 }
76
77 JNIEXPORT void JNICALL
78 Java_org_navitproject_navit_NavitGraphics_MotionCallback( JNIEnv* env, jobject thiz, int id, int x, int y)
79 {
80         dbg(0,"enter %p %d %d\n",(struct callback *)id,x,y);
81         if (id)
82                 callback_call_2((struct callback *)id,x,y);
83 }
84
85 JNIEXPORT void JNICALL
86 Java_org_navitproject_navit_NavitTimeout_TimeoutCallback( JNIEnv* env, jobject thiz, int delete, int id)
87 {
88         dbg(1,"enter %p %d %p\n",thiz, delete, (void *)id);
89         callback_call_0((struct callback *)id);
90         if (delete)
91                 (*jnienv)->DeleteGlobalRef(jnienv, thiz);
92 }
93
94 JNIEXPORT void JNICALL
95 Java_org_navitproject_navit_NavitVehicle_VehicleCallback( JNIEnv * env, jobject thiz, int id, jobject location)
96 {
97         callback_call_1((struct callback *)id, (void *)location);
98
99
100 JNIEXPORT void JNICALL
101 Java_org_navitproject_navit_NavitIdle_IdleCallback( JNIEnv* env, jobject thiz, int id)
102 {
103         dbg(1,"enter %p %p\n",thiz, (void *)id);
104         callback_call_0((struct callback *)id);
105 }
106