2016-09-22 2 views
0

Я хочу использовать «requestLocationUpdates» и установить обратный вызов слушателя. У меня возникла ошибка, например: «не удалось найти LocationListener класс». PLS дать мне немного намека. вот мой код:Открытый интерфейс JNI: HOWTO FIND 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.

 Смежные вопросы

  • Нет связанных вопросов^_^