2016-09-22 10 views
0

"requestLocationUpdates"を使用してリスナーコールバックを設定したいと考えています。 「LocationListenerクラスが見つかりません」というエラーが表示されます。 plsは私にいくつかのヒントを与える。したがって、それは定義なしコンストラクタであり、JNI:public interface LocationListener {} 'by C

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

LocationListenerはインターフェイスです: はここに私のコードです。このインタフェースを実装しているクラスだけがあなたが呼び出せるコンストラクタを持っています。

このインタフェースを自己記述Javaクラスに実装し、この自己記述クラスのインスタンスを作成できます。 メソッドを実装する場合は、nativeとすることができます。これにより、JNIでのロケーション更新のコールバックを処理できます。