From 33de9cdaefd8684e3411486612e68c0c2bd6be3d Mon Sep 17 00:00:00 2001 From: Thomas Martitz Date: Mon, 18 Jul 2011 21:02:47 +0000 Subject: 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 --- firmware/target/hosted/android/button-android.c | 32 +++++++++++----------- firmware/target/hosted/android/powermgmt-android.c | 24 ++++++++-------- firmware/target/hosted/android/telephony-android.c | 16 ++++++----- 3 files changed, 37 insertions(+), 35 deletions(-) (limited to 'firmware/target/hosted') diff --git a/firmware/target/hosted/android/button-android.c b/firmware/target/hosted/android/button-android.c index dfc5bd0fb3..c913a3d7f7 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, + "", + "(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 d23fece39a..dcbd7a6214 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, + "", + "(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 64ad436ca7..df89a56e14 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, "", "(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, + "", + "(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; -- cgit v1.2.3