Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android JNI:如何找到';公共接口位置侦听器{}';由C_Android_Java Native Interface - Fatal编程技术网

Android JNI:如何找到';公共接口位置侦听器{}';由C

Android JNI:如何找到';公共接口位置侦听器{}';由C,android,java-native-interface,Android,Java Native Interface,我想使用“RequestLocationUpdate”并设置侦听器回调。 我遇到了一个类似“找不到类”的错误。请给我一些提示。 这是我的密码: jstring gpsProviderStr = (jstring)(*env)->GetStaticObjectField(env, clazz, providerid); //ERROR: jclass listenerClass = (*env)->FindClass(env,"android/location/

我想使用“RequestLocationUpdate”并设置侦听器回调。 我遇到了一个类似“找不到类”的错误。请给我一些提示。 这是我的密码:

    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
jstringgpsproviderstr=(jstring)(*env)->GetStaticObjectField(env,clazz,providerid);
//错误:
jclass listenerClass=(*env)->FindClass(env,“android/location/LocationListener”)//找不到类
jmethodID mListener=(*env)->GetMethodID(env,listenerClass,“,”()V”);
jobject listenerObj=(*env)->NewObject(env,listenerClass,mListener);
jmethodID mReqLocUpdates=(*env)->GetMethodID(env,clazz,“requestLocationUpdates”,“(Ljava/lang/String;LFLandroid/location/LocationListener;)V”);
//回拨?正确的?
(*env)->CallVoidMethod(env、locMgrObj、mReqLocUpdates、gpsProviderStr、interval、0、listenerObj)//设置回调
是一个接口,因此根据定义,它没有构造函数。只有实现此接口的类才具有可以调用的构造函数

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