float trackball_x,trackball_y;
View view;
RelativeLayout relativelayout;
+ NavitCamera camera;
+ Activity activity;
+
+ public void
+ SetCamera(int use_camera)
+ {
+ if (use_camera != 0 && camera == null) {
+ // activity.requestWindowFeature(Window.FEATURE_NO_TITLE);
+ camera=new NavitCamera(activity);
+ relativelayout.addView(camera);
+ }
+ }
public NavitGraphics(Activity activity, NavitGraphics parent, int x, int y, int w, int h, int alpha, int wraparound, int use_camera) {
if (parent == null) {
+ this.activity=activity;
view=new View(activity) {
@Override protected void onDraw(Canvas canvas)
{
};
view.setFocusable(true);
view.setFocusableInTouchMode(true);
+ relativelayout=new RelativeLayout(activity);
if (use_camera != 0) {
- activity.requestWindowFeature(Window.FEATURE_NO_TITLE);
- relativelayout=new RelativeLayout(activity);
- NavitCamera camera=new NavitCamera(activity);
- relativelayout.addView(camera);
- relativelayout.addView(view);
- activity.setContentView(relativelayout);
- } else {
- activity.setContentView(view);
+ SetCamera(use_camera);
}
+ relativelayout.addView(view);
+ activity.setContentView(relativelayout);
view.requestFocus();
} else {
draw_bitmap=Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
struct graphics_priv {
jclass NavitGraphicsClass;
- jmethodID NavitGraphics_draw_polyline, NavitGraphics_draw_polygon, NavitGraphics_draw_rectangle, NavitGraphics_draw_circle, NavitGraphics_draw_text, NavitGraphics_draw_image, NavitGraphics_draw_mode, NavitGraphics_draw_drag, NavitGraphics_overlay_disable, NavitGraphics_overlay_resize;
+ jmethodID NavitGraphics_draw_polyline, NavitGraphics_draw_polygon, NavitGraphics_draw_rectangle, NavitGraphics_draw_circle, NavitGraphics_draw_text, NavitGraphics_draw_image, NavitGraphics_draw_mode, NavitGraphics_draw_drag, NavitGraphics_overlay_disable, NavitGraphics_overlay_resize, NavitGraphics_SetCamera;
jclass PaintClass;
jmethodID Paint_init,Paint_setStrokeWidth,Paint_setARGB;
(*jnienv)->CallVoidMethod(jnienv, gra->NavitGraphics, gra->NavitGraphics_overlay_resize, pnt ? pnt->x:0 , pnt ? pnt->y:0, w, h, alpha, wraparound);
}
+static int
+set_attr(struct graphics_priv *gra, struct attr *attr)
+{
+ switch (attr->type) {
+ case attr_use_camera:
+ (*jnienv)->CallVoidMethod(jnienv, gra->NavitGraphics, gra->NavitGraphics_SetCamera, attr->u.num);
+ return 1;
+ default:
+ return 0;
+ }
+}
+
static struct graphics_methods graphics_methods = {
graphics_destroy,
draw_mode,
get_text_bbox,
overlay_disable,
overlay_resize,
+ set_attr,
};
static void
}
static int
-graphics_android_init(struct graphics_priv *ret, struct graphics_priv *parent, struct point *pnt, int w, int h, int alpha, int wraparound)
+graphics_android_init(struct graphics_priv *ret, struct graphics_priv *parent, struct point *pnt, int w, int h, int alpha, int wraparound, int use_camera)
{
struct callback *cb;
jmethodID cid;
return 0; /* exception thrown */
}
dbg(0,"at 4 android_activity=%p\n",android_activity);
- ret->NavitGraphics=(*jnienv)->NewObject(jnienv, ret->NavitGraphicsClass, cid, android_activity, parent ? parent->NavitGraphics : NULL, pnt ? pnt->x:0 , pnt ? pnt->y:0, w, h, alpha, wraparound, 0);
+ ret->NavitGraphics=(*jnienv)->NewObject(jnienv, ret->NavitGraphicsClass, cid, android_activity, parent ? parent->NavitGraphics : NULL, pnt ? pnt->x:0 , pnt ? pnt->y:0, w, h, alpha, wraparound, use_camera);
dbg(0,"result=%p\n",ret->NavitGraphics);
if (ret->NavitGraphics)
(*jnienv)->NewGlobalRef(jnienv, ret->NavitGraphics);
return 0;
if (!find_method(ret->NavitGraphicsClass, "overlay_resize", "(IIIIII)V", &ret->NavitGraphics_overlay_resize))
return 0;
+ if (!find_method(ret->NavitGraphicsClass, "SetCamera", "(I)V", &ret->NavitGraphics_SetCamera))
+ return 0;
#if 0
set_activity(ret->NavitGraphics);
#endif
graphics_android_new(struct navit *nav, struct graphics_methods *meth, struct attr **attrs, struct callback_list *cbl)
{
struct graphics_priv *ret;
+ struct attr *attr;
+ int use_camera=0;
if (!event_request_system("android","graphics_android"))
return NULL;
ret=g_new0(struct graphics_priv, 1);
ret->win.priv=ret;
ret->win.fullscreen=graphics_android_fullscreen;
ret->win.disable_suspend=graphics_android_disable_suspend;
- if (graphics_android_init(ret, NULL, NULL, 0, 0, 0, 0)) {
+ if ((attr=attr_search(attrs, NULL, attr_use_camera))) {
+ use_camera=attr->u.num;
+ }
+ if (graphics_android_init(ret, NULL, NULL, 0, 0, 0, 0, use_camera)) {
dbg(0,"returning %p\n",ret);
return ret;
} else {
{
struct graphics_priv *ret=g_new0(struct graphics_priv, 1);
*meth=graphics_methods;
- if (graphics_android_init(ret, gr, p, w, h, alpha, wraparound)) {
+ if (graphics_android_init(ret, gr, p, w, h, alpha, wraparound, 0)) {
dbg(0,"returning %p\n",ret);
return ret;
} else {