diff options
Diffstat (limited to 'firmware/target/hosted/android/button-android.c')
| -rw-r--r-- | firmware/target/hosted/android/button-android.c | 32 |
1 files changed, 16 insertions, 16 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; } |