JNI:HOWTO找到'公共接口LocationListener {}'由C

时间:2016-09-22 10:52:18

标签: android java-native-interface

我想使用" requestLocationUpdates"并设置一个监听器回调。 我收到了一个错误,例如"找不到LocationListener类"。请给我一些提示。 这是我的代码:

    jstring gpsProviderStr = (jstring)(*env)->GetStaticObjectField(env, clazz, providerid);
//ERROR:
        jclass listenerClass = (*env)->FindClass(env,"android/location/LocationListener"); //cannot find class

        jmethodID mListener = (*env)->GetMethodID(env, listenerClass, "<init>", "()V");
        jobject listenerObj = (*env)->NewObject(env, listenerClass, mListener);
        jmethodID mReqLocUpdates = (*env)->GetMethodID(env, clazz, "requestLocationUpdates","(Ljava/lang/String;LFLandroid/location/LocationListener;)V");
//Callback? right?
        (*env)->CallVoidMethod(env, locMgrObj, mReqLocUpdates, gpsProviderStr, interval, 0, listenerObj); //set callback

1 个答案:

答案 0 :(得分:1)

LocationListener是一个接口,因此根据定义它没有构造函数。只有实现此接口的类才有可以调用的构造函数。

您可以在自编写的Java类中实现此接口,然后创建此自编写类的实例。 如果您愿意,可以将方法实现为native。这将允许您在JNI中处理位置更新的回调。