summaryrefslogtreecommitdiff
path: root/firmware/target/hosted/android
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2011-07-18 21:02:47 +0000
committerThomas Martitz <kugel@rockbox.org>2011-07-18 21:02:47 +0000
commit33de9cdaefd8684e3411486612e68c0c2bd6be3d (patch)
treef1219711bfc0c1333ad8ec611a45f7ab0c416216 /firmware/target/hosted/android
parent788e246c996c9ac6e8efae87d13b14af001fd354 (diff)
downloadrockbox-33de9cdaefd8684e3411486612e68c0c2bd6be3d.zip
rockbox-33de9cdaefd8684e3411486612e68c0c2bd6be3d.tar.gz
rockbox-33de9cdaefd8684e3411486612e68c0c2bd6be3d.tar.bz2
rockbox-33de9cdaefd8684e3411486612e68c0c2bd6be3d.tar.xz
Android: Refactor some of the glue code.
* Cleanup RockboxService.java by moving the battery and headphone monitors to separate classes and detaching their instances * Move those monitors and RockboxTelephony.java into a new monitors subdirectory * Call those monitors all the same from native code by creating the objects there git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30160 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/hosted/android')
-rw-r--r--firmware/target/hosted/android/button-android.c32
-rw-r--r--firmware/target/hosted/android/powermgmt-android.c24
-rw-r--r--firmware/target/hosted/android/telephony-android.c16
3 files changed, 37 insertions, 35 deletions
diff --git a/firmware/target/hosted/android/button-android.c b/firmware/target/hosted/android/button-android.c
index dfc5bd0..c913a3d 100644
--- a/firmware/target/hosted/android/button-android.c
+++ b/firmware/target/hosted/android/button-android.c
@@ -34,7 +34,8 @@ extern JNIEnv *env_ptr;
extern jclass RockboxService_class;
extern jobject RockboxService_instance;
-static jfieldID _headphone_state;
+static jobject HeadphoneMonitor_instance;
+static jfieldID headphone_state;
static int last_y, last_x;
static int last_btns;
@@ -114,20 +115,18 @@ Java_org_rockbox_RockboxFramebuffer_buttonHandler(JNIEnv*env, jclass class,
void button_init_device(void)
{
- jmethodID initHeadphoneMonitor = (*env_ptr)->GetMethodID(env_ptr,
- RockboxService_class,
- "initHeadphoneMonitor",
- "()V");
- /* start the monitor */
- (*env_ptr)->CallVoidMethod(env_ptr,
- RockboxService_instance,
- initHeadphoneMonitor);
-
- /* cache the headphone state field id */
- _headphone_state = (*env_ptr)->GetFieldID(env_ptr,
- RockboxService_class,
- "headphone_state",
- "I");
+ JNIEnv e = *env_ptr;
+ jclass class = e->FindClass(env_ptr, "org/rockbox/monitors/HeadphoneMonitor");
+ jmethodID constructor = e->GetMethodID(env_ptr, class,
+ "<init>",
+ "(Landroid/content/Context;)V");
+ HeadphoneMonitor_instance = e->NewObject(env_ptr, class,
+ constructor,
+ RockboxService_instance);
+ /* cache the battery level field id */
+ headphone_state = (*env_ptr)->GetFieldID(env_ptr,
+ class,
+ "mHpState", "I");
}
int button_read_device(int *data)
@@ -150,7 +149,8 @@ int button_read_device(int *data)
/* Tell if anything is in the jack. */
bool headphones_inserted(void)
{
- int state = (*env_ptr)->GetIntField(env_ptr, RockboxService_instance, _headphone_state);
+ int state = (*env_ptr)->GetIntField(env_ptr, HeadphoneMonitor_instance,
+ headphone_state);
/* 0 is disconnected, 1 and 2 are connected */
return (state == 0) ? false : true;
}
diff --git a/firmware/target/hosted/android/powermgmt-android.c b/firmware/target/hosted/android/powermgmt-android.c
index d23fece..dcbd7a6 100644
--- a/firmware/target/hosted/android/powermgmt-android.c
+++ b/firmware/target/hosted/android/powermgmt-android.c
@@ -29,28 +29,28 @@ extern jclass RockboxService_class;
extern jobject RockboxService_instance;
static jfieldID _battery_level;
+static jobject BatteryMonitor_instance;
void powermgmt_init_target(void)
{
- jmethodID initBatteryMonitor = (*env_ptr)->GetMethodID(env_ptr,
- RockboxService_class,
- "initBatteryMonitor",
- "()V");
- /* start the monitor */
- (*env_ptr)->CallVoidMethod(env_ptr,
- RockboxService_instance,
- initBatteryMonitor);
+ JNIEnv e = *env_ptr;
+ jclass class = e->FindClass(env_ptr, "org/rockbox/monitors/BatteryMonitor");
+ jmethodID constructor = e->GetMethodID(env_ptr, class,
+ "<init>",
+ "(Landroid/content/Context;)V");
+ BatteryMonitor_instance = e->NewObject(env_ptr, class,
+ constructor,
+ RockboxService_instance);
/* cache the battery level field id */
_battery_level = (*env_ptr)->GetFieldID(env_ptr,
- RockboxService_class,
- "battery_level",
- "I");
+ class,
+ "mBattLevel", "I");
}
int battery_level(void)
{
- return (*env_ptr)->GetIntField(env_ptr, RockboxService_instance, _battery_level);
+ return (*env_ptr)->GetIntField(env_ptr, BatteryMonitor_instance, _battery_level);
}
int battery_time(void)
diff --git a/firmware/target/hosted/android/telephony-android.c b/firmware/target/hosted/android/telephony-android.c
index 64ad436..df89a56 100644
--- a/firmware/target/hosted/android/telephony-android.c
+++ b/firmware/target/hosted/android/telephony-android.c
@@ -30,15 +30,17 @@ extern jobject RockboxService_instance;
void telephony_init_device(void)
{
JNIEnv e = *env_ptr;
- jclass class = e->FindClass(env_ptr, "org/rockbox/RockboxTelephony");
- jmethodID constructor = e->GetMethodID(env_ptr, class, "<init>", "(Landroid/content/Context;)V");
-
- e->NewObject(env_ptr, class, constructor, RockboxService_instance);
+ jclass class = e->FindClass(env_ptr, "org/rockbox/monitors/TelephonyMonitor");
+ jmethodID constructor = e->GetMethodID(env_ptr, class,
+ "<init>",
+ "(Landroid/content/Context;)V");
+ e->NewObject(env_ptr, class,
+ constructor,
+ RockboxService_instance);
}
-
JNIEXPORT void JNICALL
-Java_org_rockbox_RockboxTelephony_postCallIncoming(JNIEnv *env, jobject this)
+Java_org_rockbox_monitors_TelephonyMonitor_postCallIncoming(JNIEnv *env, jobject this)
{
(void)env;
(void)this;
@@ -46,7 +48,7 @@ Java_org_rockbox_RockboxTelephony_postCallIncoming(JNIEnv *env, jobject this)
}
JNIEXPORT void JNICALL
-Java_org_rockbox_RockboxTelephony_postCallHungUp(JNIEnv *env, jobject this)
+Java_org_rockbox_monitors_TelephonyMonitor_postCallHungUp(JNIEnv *env, jobject this)
{
(void)env;
(void)this;