summaryrefslogtreecommitdiff
path: root/firmware/target/hosted/android/button-android.c
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2010-08-02 20:34:47 +0000
committerThomas Martitz <kugel@rockbox.org>2010-08-02 20:34:47 +0000
commit240923a801382c86545d10be167a15892a556fb6 (patch)
tree3c0e07ec3abf0c493a0b24b0b57e8bbd0200f7f6 /firmware/target/hosted/android/button-android.c
parent850efead04f10488b478a0f255a2464a01156a7f (diff)
downloadrockbox-240923a801382c86545d10be167a15892a556fb6.tar.gz
rockbox-240923a801382c86545d10be167a15892a556fb6.zip
Rockbox as an application: Commit current Android port progress.
General state is: Rockbox is usable (plays music, saves configuration, touchscreen works too). Problems: - Playing music in the background (i.e. when switching to another app) doesn't work reliably, but I'm working on that now. - no cabbiev2 (only some preliminary files for it), no other default theme. - screen flickers sometimes if the updates are too frequent - no multi screen apk/package - strange behavior when a phone call comes in The java files (and the eclipse project) resides in android/, which is also supposed to be the build folder. I've put a small README in there for instructions. There are some steps needed after the make part, which are described there, and which eclipse mostly handles. But there ought to be some script/makefile rules which do that instead in the future. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27668 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/hosted/android/button-android.c')
-rw-r--r--firmware/target/hosted/android/button-android.c87
1 files changed, 87 insertions, 0 deletions
diff --git a/firmware/target/hosted/android/button-android.c b/firmware/target/hosted/android/button-android.c
new file mode 100644
index 0000000000..67e8ca1f89
--- /dev/null
+++ b/firmware/target/hosted/android/button-android.c
@@ -0,0 +1,87 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (c) 2010 Thomas Martitz
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
19 *
20 ****************************************************************************/
21
22
23#include <jni.h>
24#include <stdbool.h>
25#include "config.h"
26#include "kernel.h"
27#include "system.h"
28#include "touchscreen.h"
29
30static long last_touch;
31static int last_y, last_x;
32
33static enum {
34 STATE_UNKNOWN,
35 STATE_UP,
36 STATE_DOWN,
37} last_state = STATE_UNKNOWN;
38
39
40/*
41 * this writes in an interrupt-like fashion the last pixel coordinates
42 * that the user pressed on the screen */
43JNIEXPORT void JNICALL
44Java_org_rockbox_RockboxFramebuffer_pixelHandler(JNIEnv*env, jobject this,
45 int x, int y)
46{
47 (void)env;
48 (void)this;
49 last_x = x;
50 last_y = y;
51 last_touch = current_tick;
52}
53
54/*
55 * this notifies us in an interrupt-like fashion whether the user just
56 * began or stopped the touch action */
57JNIEXPORT void JNICALL
58Java_org_rockbox_RockboxFramebuffer_touchHandler(JNIEnv*env, jobject this,
59 int down)
60{
61 (void)env;
62 (void)this;
63 if (down)
64 last_state = STATE_DOWN;
65 else
66 last_state = STATE_UP;
67}
68
69void button_init_device(void)
70{
71 last_touch = current_tick;
72}
73
74int button_read_device(int *data)
75{
76 /* get grid button/coordinates based on the current touchscreen mode */
77 int btn = touchscreen_to_pixels(last_x, last_y, data);
78 if (last_state == STATE_DOWN)
79 {
80 return btn;
81 }
82 else
83 {
84 *data = last_x = last_y = 0;
85 return 0;
86 }
87}